refactor(tvix/nix-compat/derivation/escape): move to Vec<u8>
We only need bstr::ByteSlice to be able to use replace, it doesn't need to return a BString. Change-Id: I811948436fb89652e880970c2c05356183f3e439 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9084 Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de> Reviewed-by: raitobezarius <tvl@lahfa.xyz>
This commit is contained in:
parent
72fc4fee53
commit
39efe50311
2 changed files with 7 additions and 7 deletions
|
@ -1,7 +1,7 @@
|
|||
use bstr::{BString, ByteSlice};
|
||||
use bstr::ByteSlice;
|
||||
|
||||
/// Escapes a byte sequence. Does not add surrounding quotes.
|
||||
pub fn escape_bstr<P: AsRef<[u8]>>(s: P) -> BString {
|
||||
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"\\\\");
|
||||
|
@ -10,18 +10,18 @@ pub fn escape_bstr<P: AsRef<[u8]>>(s: P) -> BString {
|
|||
s = s.replace(b"\t", b"\\t");
|
||||
s = s.replace(b"\"", b"\\\"");
|
||||
|
||||
s.into()
|
||||
s
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::escape_bstr;
|
||||
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_bstr(input))
|
||||
assert_eq!(expected, escape_bytes(input))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
//!
|
||||
//! [ATerm]: http://program-transformation.org/Tools/ATermFormat.html
|
||||
|
||||
use crate::derivation::escape::escape_bstr;
|
||||
use crate::derivation::escape::escape_bytes;
|
||||
use crate::derivation::output::Output;
|
||||
use bstr::BString;
|
||||
use std::{
|
||||
|
@ -42,7 +42,7 @@ pub(crate) fn write_field<S: AsRef<[u8]>>(
|
|||
if !escape {
|
||||
writer.write_all(s.as_ref())?;
|
||||
} else {
|
||||
writer.write_all(&escape_bstr(s.as_ref()))?;
|
||||
writer.write_all(&escape_bytes(s.as_ref()))?;
|
||||
}
|
||||
|
||||
write_char(writer, QUOTE)?;
|
||||
|
|
Loading…
Reference in a new issue