[][src]Function binjs::io::escaped_wtf8::from_unicode_escape

pub fn from_unicode_escape(s: String) -> String

If the given bytes contains any unicode escape \uXXXX and that is lone surrogate, convert it to escaped lone surropgate.

Failures

If the input is not well-formed JSON, this function causes a panic.

Examples

Escape character is escaped.

let input    = "\x7F".to_string();
let expected = "\x7F007F".to_string();
assert_eq!(binjs_io::escaped_wtf8::from_unicode_escape(input), expected);

Lone lead surrogate is escaped.

let input    = "\\uD83E".to_string();
let expected = "\x7FD83E".to_string();
assert_eq!(binjs_io::escaped_wtf8::from_unicode_escape(input), expected);

Lone trail surrogate is escaped.

let input    = "\\uDD9D".to_string();
let expected = "\x7FDD9D".to_string();
assert_eq!(binjs_io::escaped_wtf8::from_unicode_escape(input), expected);

If the input is escaped surrogate pair, does nothing.

let input = "\\uD83E\\uDD9D".to_string();
let expected = input.clone();
assert_eq!(binjs_io::escaped_wtf8::from_unicode_escape(input), expected);

If the leading backslash is also escaped, does nothing.

let input = "\\\\uD83E".to_string();
let expected = input.clone();
assert_eq!(binjs_io::escaped_wtf8::from_unicode_escape(input), expected);

Anything else are not converted.

let input = "\t\\u3042\\r\\n".to_string();
let expected = input.clone();
assert_eq!(binjs_io::escaped_wtf8::from_unicode_escape(input), expected);

If the input is ill-formed, causes a panic.

// Not enough character after \\u.
let input = "\\u000".to_string();
binjs_io::escaped_wtf8::from_unicode_escape(input);
// Invalid character in the codeunit
let input  = "\\u012X".to_string();
binjs_io::escaped_wtf8::from_unicode_escape(input);