]> Repositorios git - scryer-prolog.git/commitdiff
extend logic to all control and whitespace characters
authorMarkus Triska <[email protected]>
Sun, 14 May 2023 07:14:10 +0000 (09:14 +0200)
committerMark <[email protected]>
Fri, 23 Jun 2023 20:11:31 +0000 (14:11 -0600)
This addresses #1802.

src/heap_print.rs

index c861a26cd742d0bcf3c179ceac951f0138f4dd8b..dfb2efdeeed2f2a5ddbdca52d4a3b9f00ffb754d 100644 (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{07}' if is_quoted => "\\a".to_string(), // UTF-8 alert
         '\\' 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()
         }
-        '\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(),
+        _ =>
+            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()
+            }
     }
 }