diff options
Diffstat (limited to 'tvix/derivation/src/string_escape.rs')
-rw-r--r-- | tvix/derivation/src/string_escape.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/tvix/derivation/src/string_escape.rs b/tvix/derivation/src/string_escape.rs new file mode 100644 index 000000000000..0e1dbe516f73 --- /dev/null +++ b/tvix/derivation/src/string_escape.rs @@ -0,0 +1,17 @@ +const STRING_ESCAPER: [(char, &str); 5] = [ + ('\\', "\\\\"), + ('\n', "\\n"), + ('\r', "\\r"), + ('\t', "\\t"), + ('\"', "\\\""), +]; + +pub fn escape_string(s: &str) -> String { + let mut s_replaced = s.to_string(); + + for escape_sequence in STRING_ESCAPER { + s_replaced = s_replaced.replace(escape_sequence.0, escape_sequence.1); + } + + format!("\"{}\"", s_replaced) +} |