diff options
author | Florian Klink <flokli@flokli.de> | 2023-07-31T13·46+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-10-16T12·23+0000 |
commit | 2410f2292f53a17242ed54b0af2d7b04ec3173f6 (patch) | |
tree | 476d93504a2c21d48011fce4f4afe79bfb0b0cca /tvix/nix-compat/src/derivation/escape.rs | |
parent | 8b09ae54b1d635e77c394dd965915479283489a2 (diff) |
feat(nix-compat/{aterm,derivation}): init parser r/6831
This provides a nom-based parser for Nix derivations in ATerm format, which can be reached via `Derivation::from_aterm_bytes`. Some of the lower-level ATerm primitives are moved into a (new) aterm module, and some more higher-level ones that construct derivation- specific types. Also, move the escape_bytes function into there, this is a generic ATerm thing. Change-Id: I2b03b8a1461c7ea2fcb8640c2fc3d1fa3ea719fb Reviewed-on: https://cl.tvl.fyi/c/depot/+/9730 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/nix-compat/src/derivation/escape.rs')
-rw-r--r-- | tvix/nix-compat/src/derivation/escape.rs | 27 |
1 files changed, 0 insertions, 27 deletions
diff --git a/tvix/nix-compat/src/derivation/escape.rs b/tvix/nix-compat/src/derivation/escape.rs deleted file mode 100644 index 06b550bbf02d..000000000000 --- a/tvix/nix-compat/src/derivation/escape.rs +++ /dev/null @@ -1,27 +0,0 @@ -use bstr::ByteSlice; - -/// Escapes a byte sequence. Does not add surrounding quotes. -pub fn escape_bytes<P: AsRef<[u8]>>(s: P) -> Vec<u8> { - let mut s: Vec<u8> = s.as_ref().to_vec(); - - s = s.replace(b"\\", b"\\\\"); - s = s.replace(b"\n", b"\\n"); - s = s.replace(b"\r", b"\\r"); - s = s.replace(b"\t", b"\\t"); - s = s.replace(b"\"", b"\\\""); - - s -} - -#[cfg(test)] -mod tests { - use super::escape_bytes; - use test_case::test_case; - - #[test_case(b"", b""; "empty")] - #[test_case(b"\"", b"\\\""; "doublequote")] - #[test_case(b":", b":"; "colon")] - fn escape(input: &[u8], expected: &[u8]) { - assert_eq!(expected, escape_bytes(input)) - } -} |