// todo: DerefMut
-//========== toml_merge ====================
+//========== toml ====================
+
+// We reimplement this because the toml crate doesn't expose it, and
+// looking at the github issues etc. for that crate isn't encuraging.
+pub fn toml_quote_string(s: &str) -> String {
+ let mut o = String::new();
+ for c in s.chars() {
+ match c {
+ '"' | '\\'=> { o.push('\\'); o.push(c); },
+ c if (c < ' ' && c != '\t') || c == '\x7f' => {
+ write!(o, r#"\u{:04x}"#, c as u32).unwrap();
+ continue;
+ }
+ c => o.push(c),
+ }
+ }
+ o
+}
+
+#[test]
+fn toml_quote_string_test(){
+ assert_eq!(toml_quote_string(r#"w \ " \a\7fƒ."#),
+ r#"w \\ \" \u0007\u007fƒ."#);
+}
pub fn toml_merge<'u,
S: 'u + AsRef<str>,