Pure OCaml Yaml 1.2 reader and writer using Bytesrw

cram

+1
tests/cram/bell_character.yml
···
+
text: "test\a"
+1
tests/cram/escaped_backslashes.yml
···
+
escaped: "one\\two\\three"
+7 -8
tests/cram/failing_escapes.t
···
Test: Capital U interpreted as unicode escape
-
$ echo 'path: "C:\\Users\\Name"' | yamlcat --json 2>&1
+
$ yamlcat --json failing_escapes.yml 2>&1
Error: invalid hex escape: at line 1, columns 12-12
[1]
This fails because:
-
- Shell: echo 'C:\\Users\\Name' produces C:\Users\Name
-
- YAML sees: "C:\Users\Name"
+
- YAML input: "C:\Users\Name"
- \U is a 32-bit unicode escape (expects \UHHHHHHHH)
- "sers" are not 8 hex digits, so it fails
Test: Lowercase u unicode escape works
-
$ echo 'unicode: "\\u0041"' | yamlcat --json
+
$ yamlcat --json lowercase_u_unicode.yml
{"unicode": "A"}
Test: Uppercase U requires 8 hex digits
-
$ echo 'unicode: "\\U00000041"' | yamlcat --json
+
$ yamlcat --json uppercase_U_unicode.yml
{"unicode": "A"}
Test: Backslash escaping works for non-unicode
-
$ echo 'escaped: "one\\\\two\\\\three"' | yamlcat --json
+
$ yamlcat --json escaped_backslashes.yml
{"escaped": "one\\two\\three"}
Test: Mixed valid escapes
-
$ echo 'text: "Tab:\\t Newline:\\n Quote:\\\\"' | yamlcat --json
+
$ yamlcat --json mixed_escapes.yml
{"text": "Tab:\t Newline:\n Quote:\\"}
Test: Backslash a is bell character
-
$ echo 'text: "test\\a"' | yamlcat --json
+
$ yamlcat --json bell_character.yml
{"text": "test\007"}
+1
tests/cram/failing_escapes.yml
···
+
path: "C:\Users\Name"
+1
tests/cram/lowercase_u_unicode.yml
···
+
unicode: "\u0041"
+1
tests/cram/mixed_escapes.yml
···
+
text: "Tab:\t Newline:\n Quote:\\"
+1
tests/cram/uppercase_U_unicode.yml
···
+
unicode: "\U00000041"