Merge pull request #1805 from triska/master

extend logic to all control and whitespace characters
This commit is contained in:
Mark Thom
2023-05-14 23:27:49 -06:00
committed by GitHub

View File

@@ -169,13 +169,16 @@ fn char_to_string(is_quoted: bool, c: char) -> String {
'\u{08}' if is_quoted => "\\b".to_string(), // UTF-8 backspace '\u{08}' if is_quoted => "\\b".to_string(), // UTF-8 backspace
'\u{07}' if is_quoted => "\\a".to_string(), // UTF-8 alert '\u{07}' if is_quoted => "\\a".to_string(), // UTF-8 alert
'\\' if is_quoted => "\\\\".to_string(), '\\' if is_quoted => "\\\\".to_string(),
'\'' | '\n' | '\r' | '\t' | '\u{0b}' | '\u{0c}' | '\u{08}' | '\u{07}' | '"' | '\\' => { ' ' | '\'' | '\n' | '\r' | '\t' | '\u{0b}' | '\u{0c}' | '\u{08}' | '\u{07}' | '"' | '\\' => {
c.to_string()
}
_ =>
if c.is_whitespace() || c.is_control() {
// print all other control and whitespace characters in hex.
format!("\\x{:x}\\", c as u32)
} else {
c.to_string() c.to_string()
} }
'\u{0}'..='\u{1f}' | '\u{7f}' ..= '\u{a0}'
// print all other control characters, and also non-breaking space, in hex.
=> format!("\\x{:x}\\", c as u32),
_ => c.to_string(),
} }
} }