aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/display.rs3
-rw-r--r--src/lib.rs6
2 files changed, 9 insertions, 0 deletions
diff --git a/src/display.rs b/src/display.rs
index f563b77..0a41e2a 100644
--- a/src/display.rs
+++ b/src/display.rs
@@ -49,6 +49,9 @@ fn write_str(f: &mut fmt::Formatter, s: &str) -> fmt::Result {
'\u{d}' => try!(write!(f, "\\r")),
'\u{22}' => try!(write!(f, "\\\"")),
'\u{5c}' => try!(write!(f, "\\\\")),
+ c if c < '\u{1f}' => {
+ try!(write!(f, "\\u{:04}", ch as u32))
+ }
ch => try!(write!(f, "{}", ch)),
}
}
diff --git a/src/lib.rs b/src/lib.rs
index e8dcb92..74fe1b8 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -489,4 +489,10 @@ mod tests {
assert_eq!(Value::Integer(0), *value.lookup("table.\"element\".\"value\".0").unwrap());
}
+ #[test]
+ fn control_characters() {
+ let value = Value::String("\x05".to_string());
+ assert_eq!(value.to_string(), r#""\u0005""#);
+ }
+
}