{ "foo bar" } [ "\"foo \\\nbar\"" eval( -- obj ) ] unit-test
{ "a" } [ "\"\\141\"" eval( -- obj ) ] unit-test
+{ "a1" } [ "\"\\1411\"" eval( -- obj ) ] unit-test
{ "\0" } [ "\"\\0\"" eval( -- obj ) ] unit-test
{ "\x01" } [ "\"\\01\"" eval( -- obj ) ] unit-test
{ "\n" } [ "\"\\012\"" eval( -- obj ) ] unit-test
2 cut-slice [ hex> ] dip ;
: oct-escape ( str -- ch/f str' )
- dup [
- 3 short head-slice [ CHAR: 0 CHAR: 7 between? not ] find drop
+ dup 3 short head-slice [
+ [ CHAR: 0 CHAR: 7 between? not ] find drop
] keep '[ _ length ] unless* [ f ] when-zero
[ cut-slice [ oct> ] dip ] [ f swap ] if* ;