+1
.devcontainer/init-firewall.sh
+1
.devcontainer/init-firewall.sh
+5
-1
.devcontainer/setup-ocaml.sh
+5
-1
.devcontainer/setup-ocaml.sh
······
+1
term/sortal-mosaic/.gitignore
+1
term/sortal-mosaic/.gitignore
···
+11
term/sortal-mosaic/bin/dune
+11
term/sortal-mosaic/bin/dune
+23
term/sortal-mosaic/bin/main.ml
+23
term/sortal-mosaic/bin/main.ml
···
+27
term/sortal-mosaic/dune-project
+27
term/sortal-mosaic/dune-project
···
+5
term/sortal-mosaic/dune-workspace
+5
term/sortal-mosaic/dune-workspace
+12
term/sortal-mosaic/lib/dune
+12
term/sortal-mosaic/lib/dune
+796
term/sortal-mosaic/lib/sortal_mosaic.ml
+796
term/sortal-mosaic/lib/sortal_mosaic.ml
···
+38
term/sortal-mosaic/sortal_mosaic.opam
+38
term/sortal-mosaic/sortal_mosaic.opam
···
-43
yaml/ocaml-yamle/TODO.md
-43
yaml/ocaml-yamle/TODO.md
···
-64
yaml/ocaml-yamle/bin/dune
-64
yaml/ocaml-yamle/bin/dune
···
-14
yaml/ocaml-yamle/bin/test_emit.ml
-14
yaml/ocaml-yamle/bin/test_emit.ml
···
-184
yaml/ocaml-yamle/bin/yamlcat.ml
-184
yaml/ocaml-yamle/bin/yamlcat.ml
···
-19
yaml/ocaml-yamle/dune-project
-19
yaml/ocaml-yamle/dune-project
···-(description "A pure OCaml implementation of YAML 1.2 parsing and emission, with no C dependencies.")
-26
yaml/ocaml-yamle/lib/chomping.ml
-26
yaml/ocaml-yamle/lib/chomping.ml
···
-54
yaml/ocaml-yamle/lib/document.ml
-54
yaml/ocaml-yamle/lib/document.ml
···
-26
yaml/ocaml-yamle/lib/dune
-26
yaml/ocaml-yamle/lib/dune
···
-764
yaml/ocaml-yamle/lib/emitter.ml
-764
yaml/ocaml-yamle/lib/emitter.ml
···-push_state t In_flow_mapping_value; (* After ] we'll be in value position but sequence handles it *)
-54
yaml/ocaml-yamle/lib/encoding.ml
-54
yaml/ocaml-yamle/lib/encoding.ml
···
-196
yaml/ocaml-yamle/lib/error.ml
-196
yaml/ocaml-yamle/lib/error.ml
···
-77
yaml/ocaml-yamle/lib/event.ml
-77
yaml/ocaml-yamle/lib/event.ml
···
-151
yaml/ocaml-yamle/lib/input.ml
-151
yaml/ocaml-yamle/lib/input.ml
···
-24
yaml/ocaml-yamle/lib/layout_style.ml
-24
yaml/ocaml-yamle/lib/layout_style.ml
···
-276
yaml/ocaml-yamle/lib/loader.ml
-276
yaml/ocaml-yamle/lib/loader.ml
···
-92
yaml/ocaml-yamle/lib/mapping.ml
-92
yaml/ocaml-yamle/lib/mapping.ml
···
-781
yaml/ocaml-yamle/lib/parser.ml
-781
yaml/ocaml-yamle/lib/parser.ml
···-Error.raise_span tok.span (Invalid_directive "directives require explicit document end '...' before them");
-42
yaml/ocaml-yamle/lib/position.ml
-42
yaml/ocaml-yamle/lib/position.ml
···
-61
yaml/ocaml-yamle/lib/scalar.ml
-61
yaml/ocaml-yamle/lib/scalar.ml
···
-33
yaml/ocaml-yamle/lib/scalar_style.ml
-33
yaml/ocaml-yamle/lib/scalar_style.ml
···
-1568
yaml/ocaml-yamle/lib/scanner.ml
-1568
yaml/ocaml-yamle/lib/scanner.ml
···-mutable document_has_content : bool; (** True if we've emitted content tokens in current document *)-mutable adjacent_value_allowed_at : Position.t option; (** Position where adjacent : is allowed *)-if not (Input.is_eof t.input) && not (Input.next_is_break t.input) && col <= indent && indent >= 0 then-Error.raise_at (Input.mark t.input) (Invalid_quoted_scalar_indentation "invalid indentation in quoted scalar");-if not (Input.is_eof t.input) && not (Input.next_is_break t.input) && col <= indent && indent >= 0 then-Error.raise_at (Input.mark t.input) (Invalid_quoted_scalar_indentation "invalid indentation in quoted scalar")-Error.raise_at (Input.mark t.input) (Invalid_quoted_scalar_indentation "invalid indentation in quoted scalar");-Error.raise_at (Input.mark t.input) (Invalid_quoted_scalar_indentation "invalid indentation in quoted scalar");-let max_empty_line_indent = ref 0 in (* Track max indent of empty lines before first content *)-Note: we check Input.next_is_blank BEFORE reading content to see if content starts with whitespace. *)-so we should NOT add any back. On subsequent lines, we add only the spaces beyond content_indent. *)-Error.raise_at (Input.mark t.input) (Invalid_directive "expected comment or line break after version");-| _ -> Error.raise_at start (Invalid_directive "content not allowed after document end marker on same line"))-(Unexpected_token "directives must be separated from document content by document end marker (...)");-(* : followed by whitespace in block, or whitespace/flow indicator in flow, or adjacent value *)-(* In block context without simple key, allow simple keys for compact mappings like ": moon: white"-(* Check for tabs after : : patterns like :\t- or :\tkey: are invalid in block context (Y79Y/09)-(* In block context, tabs-only after : followed by indicator or alphanumeric are not allowed *)
-72
yaml/ocaml-yamle/lib/sequence.ml
-72
yaml/ocaml-yamle/lib/sequence.ml
···
-35
yaml/ocaml-yamle/lib/span.ml
-35
yaml/ocaml-yamle/lib/span.ml
···
-70
yaml/ocaml-yamle/lib/tag.ml
-70
yaml/ocaml-yamle/lib/tag.ml
···
-78
yaml/ocaml-yamle/lib/token.ml
-78
yaml/ocaml-yamle/lib/token.ml
···
-182
yaml/ocaml-yamle/lib/value.ml
-182
yaml/ocaml-yamle/lib/value.ml
···
-257
yaml/ocaml-yamle/lib/yaml.ml
-257
yaml/ocaml-yamle/lib/yaml.ml
···-let resolve_aliases ?(max_nodes = default_max_alias_nodes) ?(max_depth = default_max_alias_depth) (root : t) : t =
-185
yaml/ocaml-yamle/lib/yamle.ml
-185
yaml/ocaml-yamle/lib/yamle.ml
···
-375
yaml/ocaml-yamle/tests/cram/anchors.t
-375
yaml/ocaml-yamle/tests/cram/anchors.t
···
-119
yaml/ocaml-yamle/tests/cram/bomb.t
-119
yaml/ocaml-yamle/tests/cram/bomb.t
···-{"a": [1, 2, 3, 4, 5, 6, 7, 8, 9], "b": [[1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [-{"defaults": {"timeout": 30, "retries": 3}, "production": {"<<": {"timeout": 30, "retries": 3}, "port": 8080}}
-6
yaml/ocaml-yamle/tests/cram/bomb_small.yml
-6
yaml/ocaml-yamle/tests/cram/bomb_small.yml
-863
yaml/ocaml-yamle/tests/cram/collections.t
-863
yaml/ocaml-yamle/tests/cram/collections.t
···-{"simple_sequence": ["apple", "banana", "cherry", "date"], "simple_mapping": {"name": "John Doe", "age": 30, "city": "New York", "country": "USA"}, "nested_sequences": [["alpha", "beta", "gamma"], ["one", "two", "three"], ["red", "green", "blue"]], "nested_mappings": {"person": {"name": "Alice", "contact": {"email": "alice@example.com", "phone": "555-1234"}, "address": {"street": "123 Main St", "city": "Boston"}}}, "mapping_with_sequences": {"colors": ["red", "green", "blue"], "sizes": ["small", "medium", "large"], "numbers": [1, 2, 3]}, "sequence_with_mappings": [{"name": "Alice", "age": 25, "role": "developer"}, {"name": "Bob", "age": 30, "role": "designer"}, {"name": "Charlie", "age": 35, "role": "manager"}], "deep_nesting": {"level1": {"level2": {"level3": {"level4": ["deeply", "nested", "values"], "another_key": "value"}, "items": ["item1", "item2"]}, "metadata": {"created": "2024-01-01", "modified": "2024-12-04"}}}, "complex_structure": {"database": {"connections": [{"host": "db1.example.com", "port": 5432, "credentials": {"username": "admin", "password": "secret"}}, {"host": "db2.example.com", "port": 5432, "credentials": {"username": "readonly", "password": "public"}}]}, "services": [{"name": "api", "endpoints": ["/users", "/posts", "/comments"], "config": {"timeout": 30, "retries": 3}}, {"name": "worker", "tasks": ["email", "reports"], "config": {"concurrency": 10}}]}, "empty_collections": {"empty_sequence": [], "empty_mapping": {}, "sequence_with_empty": ["value1", [], "value2"], "mapping_with_empty": {"key1": "value1", "key2": {}, "key3": "value3"}}}-{simple_sequence: [apple, banana, cherry, date]simple_mapping, {name: John Doe, age: 30, city: New York, country: USA}, nested_sequences: [[alpha, beta, gamma], [one, two, three], [red, green, blue]]nested_mappings, {person: {name: Alice, contact: {email: alice@example.com, phone: 555-1234}address, {street: 123 Main St, city: Boston}}}, mapping_with_sequences: {colors: [red, green, blue]sizes, [small, medium, large], numbers: [1, 2, 3]}sequence_with_mappings, [{name: Alice, age: 25, role: developer}, {name: Bob, age: 30, role: designer}, {name: Charlie, age: 35, role: manager}], deep_nesting: {level1: {level2: {level3: {level4: [deeply, nested, values]another_key, value: }items, [item1, item2]}metadata, {created: 2024-01-01, modified: 2024-12-04}}}complex_structure, {database: {connections: [{host: db1.example.com, port: 5432, credentials: {username: admin, password: secret}}, {host: db2.example.com, port: 5432, credentials: {username: readonly, password: public}}]}services, [{name: api, endpoints: [/users, /posts, /comments]config, {timeout: 30, retries: 3}}, {name: worker, tasks: [email, reports]config, {concurrency: 10}}]}, empty_collections: {empty_sequence: []empty_mapping, {}, sequence_with_empty: [value1, [], value2]mapping_with_empty, {key1: value1, key2: {}key3, value3: }}}-{"compact_sequence": [{"name": "Alice", "age": 25, "city": "Boston"}, {"name": "Bob", "age": 30, "city": "Seattle"}, {"name": "Charlie", "age": 35, "city": "Portland"}], "compact_nested": [{"id": 1, "details": {"type": "admin", "permissions": ["read", "write", "delete"]}}, {"id": 2, "details": {"type": "user", "permissions": ["read"]}}], "compact_complex": [{"key1": "value1", "key2": "value2", "nested": {"sub1": "val1", "sub2": "val2"}}, {"key1": "value3", "key2": "value4", "nested": {"sub1": "val3", "sub2": "val4"}}], "users": [{"username": "alice", "email": "alice@example.com", "active": true}, {"username": "bob", "email": "bob@example.com", "active": false}], "compact_with_flow": [{"name": "service1", "ports": [8080, 8443], "env": {"DEBUG": true, "MODE": "production"}}, {"name": "service2", "ports": [3000], "env": {"DEBUG": false, "MODE": "development"}}], "deep_compact": [{"category": "electronics", "items": [{"name": "laptop", "specs": {"cpu": "Intel i7", "ram": "16GB", "storage": "512GB SSD"}}, {"name": "phone", "specs": {"os": "Android", "ram": "8GB", "storage": "256GB"}}]}, {"category": "furniture", "items": [{"name": "desk", "dimensions": {"width": "150cm", "depth": "75cm", "height": "75cm"}}, {"name": "chair", "dimensions": {"width": "60cm", "depth": "60cm", "height": "120cm"}}]}], "mixed_compact": {"databases": [{"type": "postgresql", "connection": {"host": "localhost", "port": 5432}, "credentials": {"user": "admin", "password": "secret"}}, {"type": "mongodb", "connection": {"host": "localhost", "port": 27017}, "credentials": {"user": "root", "password": "root"}}]}, "single_line_compact": [{"name": "Alice", "age": 25, "role": "developer"}, {"name": "Bob", "age": 30, "role": "designer"}, {"name": "Charlie", "age": 35, "role": "manager"}], "sequences_in_compact": [{"title": "Project A", "members": ["Alice", "Bob", "Charlie"], "tags": ["urgent", "backend"]}, {"title": "Project B", "members": ["David", "Eve"], "tags": ["frontend", "design"]}], "compact_with_empty": [{"id": 1, "data": [], "meta": {}}, {"id": 2, "data": ["item1"], "meta": {"key": "value"}}], "compact_complex_nesting": [{"level": 1, "children": [{"level": "2a", "children": [{"level": "3a", "value": "leaf1"}, {"level": "3b", "value": "leaf2"}]}, {"level": "2b", "children": [{"level": "3c", "value": "leaf3"}]}]}], "api_endpoints": [{"path": "/users", "method": "GET", "auth": "required", "params": [{"name": "page", "type": "integer", "default": 1}, {"name": "limit", "type": "integer", "default": 10}]}, {"path": "/users/:id", "method": "GET", "auth": "required", "params": []}, {"path": "/users", "method": "POST", "auth": "required", "body": {"username": "string", "email": "string", "password": "string"}}], "compact_types": [{"string_val": "hello", "number_val": 42, "float_val": 3.14, "bool_val": true, "null_val": null}, {"string_val": "world", "number_val": 100, "float_val": 2.71, "bool_val": false, "null_val": null}], "minimal": [{"a": 1}, {"b": 2}, {"c": 3}]}-{compact_sequence: [{name: Alice, age: 25, city: Boston}, {name: Bob, age: 30, city: Seattle}, {name: Charlie, age: 35, city: Portland}]compact_nested, [{id: 1, details: {type: admin, permissions: [read, write, delete]}}, {id: 2, details: {type: user, permissions: [read]}}], compact_complex: [{key1: value1, key2: value2, nested: {sub1: val1, sub2: val2}}, {key1: value3, key2: value4, nested: {sub1: val3, sub2: val4}}]users, [{username: alice, email: alice@example.com, active: true}, {username: bob, email: bob@example.com, active: false}], compact_with_flow: [{name: service1, ports: [8080, 8443]env, {DEBUG: true, MODE: production}}, {name: service2, ports: [3000]env, {DEBUG: false, MODE: development}}]deep_compact, [{category: electronics, items: [{name: laptop, specs: {cpu: Intel i7, ram: 16GB, storage: 512GB SSD}}, {name: phone, specs: {os: Android, ram: 8GB, storage: 256GB}}]}, {category: furniture, items: [{name: desk, dimensions: {width: 150cm, depth: 75cm, height: 75cm}}, {name: chair, dimensions: {width: 60cm, depth: 60cm, height: 120cm}}]}], mixed_compact: {databases: [{type: postgresql, connection: {host: localhost, port: 5432}credentials, {user: admin, password: secret}}, {type: mongodb, connection: {host: localhost, port: 27017}credentials, {user: root, password: root}}]}single_line_compact, [{name: Alice, age: 25, role: developer}, {name: Bob, age: 30, role: designer}, {name: Charlie, age: 35, role: manager}], sequences_in_compact: [{title: Project A, members: [Alice, Bob, Charlie]tags, [urgent, backend]}, {title: Project B, members: [David, Eve]tags, [frontend, design]}]compact_with_empty, [{id: 1, data: []meta, {}}, {id: 2, data: [item1]meta, {key: value}}], compact_complex_nesting: [{level: 1, children: [{level: 2a, children: [{level: 3a, value: leaf1}, {level: 3b, value: leaf2}]}, {level: 2b, children: [{level: 3c, value: leaf3}]}]}]api_endpoints, [{path: /users, method: GET, auth: required, params: [{name: page, type: integer, default: 1}, {name: limit, type: integer, default: 10}]}, {path: '/users/:id', method: GET, auth: required, params: []}, {path: /users, method: POST, auth: required, body: {username: string, email: string, password: string}}], compact_types: [{string_val: hello, number_val: 42, float_val: 3.14, bool_val: true, null_val: null}, {string_val: world, number_val: 100, float_val: 2.71, bool_val: false, null_val: null}]minimal, [{a: 1}, {b: 2}, {c: 3}]}-{"simple_flow_sequence": ["apple", "banana", "cherry", "date"], "simple_flow_mapping": {"name": "John", "age": 30, "city": "New York"}, "nested_flow_sequences": [["a", "b", "c"], [1, 2, 3], ["red", "green", "blue"]], "nested_flow_mappings": {"person": {"name": "Alice", "age": 25}, "contact": {"email": "alice@example.com", "phone": "555-1234"}}, "flow_seq_with_maps": [{"name": "Alice", "role": "dev"}, {"name": "Bob", "role": "ops"}, {"name": "Charlie", "role": "qa"}], "flow_map_with_seqs": {"colors": ["red", "green", "blue"], "sizes": ["S", "M", "L"], "numbers": [1, 2, 3]}, "deep_flow_nesting": {"level1": {"level2": {"level3": {"level4": ["a", "b", "c"]}}}}, "empty_flow": {"empty_seq": [], "empty_map": {}, "both": [[], {}]}, "flow_in_block": {"sequence": [1, 2, 3, 4, 5], "mapping": {"a": 1, "b": 2, "c": 3}, "nested": {"items": ["x", "y", "z"], "config": {"timeout": 30, "retries": 3}}}, "block_in_flow": {"users": [{"name": "Alice", "tags": ["dev", "senior"]}, {"name": "Bob", "tags": ["ops", "junior"]}]}, "mixed_structure": {"services": [{"name": "api", "ports": [8080, 8443], "env": {"DEBUG": true, "LOG_LEVEL": "info"}}, {"name": "db", "ports": [5432], "env": {"POSTGRES_DB": "mydb", "POSTGRES_USER": "admin"}}], "config": {"version": 1, "enabled": true}}, "flow_types": {"strings": ["hello", "world", "foo", "bar"], "numbers": [1, 2, 3, 42, 100], "mixed": ["string", 123, true, false, null], "quoted": ["with spaces", "special:chars", "commas, here"]}, "flow_map_types": {"string": "value", "number": 42, "boolean": true, "null_value": null, "float": 3.14}, "nested_mixed": [{"id": 1, "data": ["a", "b", "c"], "meta": {"type": "first"}}, {"id": 2, "data": ["d", "e", "f"], "meta": {"type": "second"}}, {"id": 3, "data": ["g", "h", "i"], "meta": {"type": "third"}}], "multiline_flow": {"long_sequence": ["item1", "item2", "item3", "item4"], "long_mapping": {"key1": "value1", "key2": "value2", "key3": "value3"}}, "edge_cases": {"single_item_seq": ["alone"], "single_item_map": {"only": "one"}, "nested_empty": [[], [{}], [{}, []]], "all_empty": [{}, [], {"a": []}, {"b": {}}]}}-{simple_flow_sequence: [apple, banana, cherry, date]simple_flow_mapping, {name: John, age: 30, city: New York}, nested_flow_sequences: [[a, b, c], [1, 2, 3], [red, green, blue]]nested_flow_mappings, {person: {name: Alice, age: 25}contact, {email: alice@example.com, phone: 555-1234}}, flow_seq_with_maps: [{name: Alice, role: dev}, {name: Bob, role: ops}, {name: Charlie, role: qa}]flow_map_with_seqs, {colors: [red, green, blue]sizes, [S, M, L], numbers: [1, 2, 3]}, deep_flow_nesting: {level1: {level2: {level3: {level4: [a, b, c]}}}}empty_flow, {empty_seq: []empty_map, {}, both: [[], {}]}, flow_in_block: {sequence: [1, 2, 3, 4, 5]mapping, {a: 1, b: 2, c: 3}, nested: {items: [x, y, z]config, {timeout: 30, retries: 3}}}block_in_flow, {users: [{name: Alice, tags: [dev, senior]}, {name: Bob, tags: [ops, junior]}]}, mixed_structure: {services: [{name: api, ports: [8080, 8443]env, {DEBUG: true, LOG_LEVEL: info}}, {name: db, ports: [5432]env, {POSTGRES_DB: mydb, POSTGRES_USER: admin}}]config, {version: 1, enabled: true}}flow_types, {strings: [hello, world, foo, bar]numbers, [1, 2, 3, 42, 100], mixed: [string, 123, true, false, null]quoted, [with spaces, 'special:chars', commas, here]}, flow_map_types: {string: value, number: 42, boolean: true, null_value: null, float: 3.14}nested_mixed, [{id: 1, data: [a, b, c]meta, {type: first}}, {id: 2, data: [d, e, f]meta, {type: second}}, {id: 3, data: [g, h, i]meta, {type: third}}], multiline_flow: {long_sequence: [item1, item2, item3, item4]long_mapping, {key1: value1, key2: value2, key3: value3}}edge_cases, {single_item_seq: [alone]single_item_map, {only: one}, nested_empty: [[], [{}], [{}, []]]all_empty, [{}, [], {a: []}, {b: {}}]}}-[{"id": 1, "tags": ["a", "b", "c"], "config": {"enabled": true}}, {"id": 2, "tags": ["x", "y", "z"], "config": {"enabled": false}}]-[{id: 1, tags: [a, b, c]config, {enabled: true}}, {id: 2, tags: [x, y, z]config, {enabled: false}}]
-197
yaml/ocaml-yamle/tests/cram/comments.t
-197
yaml/ocaml-yamle/tests/cram/comments.t
···-{"name": "John Doe", "age": 30, "address": {"street": "123 Main St", "city": "Springfield", "zip": 12345}, "items": ["apple", "banana", "cherry", "date"], "flow_seq": [1, 2, 3], "flow_map": {"key1": "value1", "key2": "value2"}, "nested": {"level1": {"level2": {"value": "deeply nested"}}}, "multi_comment_key": "value", "special": "value with # hash inside quotes", "empty_value": null, "final_key": "final_value"}-{"literal": "# This looks like a comment\nbut it is part of the literal text\n", "key": "value"}
-204
yaml/ocaml-yamle/tests/cram/documents.t
-204
yaml/ocaml-yamle/tests/cram/documents.t
···-{"key1": "value1", "key2": "value2", "nested": {"inner": "data"}, "list": ["item1", "item2", "item3"]}
-4
yaml/ocaml-yamle/tests/cram/dune
-4
yaml/ocaml-yamle/tests/cram/dune
-49
yaml/ocaml-yamle/tests/cram/empty.t
-49
yaml/ocaml-yamle/tests/cram/empty.t
···
-45
yaml/ocaml-yamle/tests/cram/failing_escapes.t
-45
yaml/ocaml-yamle/tests/cram/failing_escapes.t
···
-407
yaml/ocaml-yamle/tests/cram/multidoc.t
-407
yaml/ocaml-yamle/tests/cram/multidoc.t
···
-471
yaml/ocaml-yamle/tests/cram/scalars.t
-471
yaml/ocaml-yamle/tests/cram/scalars.t
···-{"single_simple": "hello world", "single_with_double": "He said \"hello\"", "single_escaped_quote": "It's a single quote: 'example'", "single_multiline": "This is a multi-line single quoted string", "double_simple": "hello world", "double_with_single": "It's easy", "double_escaped_quote": "She said \"hello\"", "escaped_newline": "Line one\nLine two\nLine three", "escaped_tab": "Column1\tColumn2\tColumn3", "escaped_backslash": "Path: C:\\Users\\Name", "escaped_carriage": "Before\rAfter", "escaped-literal_with_indent: "First line\n Indented line\n More indented\n Back to second level\nBack to first level\n"-folded_basic: "This is a long paragraph that will be folded into a single line with the newlines converted to spaces.\n"-folded_paragraph: "First paragraph flows together into a single line.\nSecond paragraph after blank line also flows together.\n"-empty_literal: "\nempty_folded: >\n\n# Block scalar with only newlines\nonly_newlines_literal: |\n\n\nonly_newlines_folded: >\n\n\n# Complex indentation patterns\ncomplex_literal: |\nFirst level\n Second level\n Third level\n Back to second\nBack to first\n\nNew paragraph\n With indent\n\nFinal paragraph\n"-complex_folded: "This paragraph flows together.\nThis is separate. This line starts more indented and continues.\nFinal thoughts here.\n"-special_chars_literal: "Special: @#$%^&*()\nQuotes: \"double\" 'single'\nBrackets: [array] {object}\nSymbols: | > & * ? : -\n"-"folded_basic": "This is a long paragraph that will be folded into a single line with the newlines c-"literal_indent_2": " Two space indentation\n is preserved here\n Extra indent\n Back to two\n"-{"outer": {"inner": {"description": "This is a folded description.\n", "code": "def test():\n return True\n"}}}
-60
yaml/ocaml-yamle/tests/cram/tags.t
-60
yaml/ocaml-yamle/tests/cram/tags.t
···
-444
yaml/ocaml-yamle/tests/cram/values.t
-444
yaml/ocaml-yamle/tests/cram/values.t
···-{"explicit_null": null, "tilde_null": null, "empty_null": null, "flow_null": [null, null, null], "sequence_nulls": [null, null, null, {"explicit": null}, {"tilde": null}, {"empty": null}], "mapping_nulls": {"key1": null, "key2": null, "key3": null}, "null": "null key with string value", "~": "tilde key with string value", "nested": {"level1": {"null_value": null, "tilde_value": null, "empty_value": null, "list": [null, null, null, "some_value"], "map": {"a": null, "b": null, "c": null}}}, "string_nulls": {"quoted_null": "null", "quoted_tilde": "~", "null_in_string": "this is null", "word_null": "null"}}-{"bool_true": true, "bool_false": false, "capitalized_true": true, "capitalized_false": false, "yes_value": true, "no_value": false, "Yes_value": true, "No_value": false, "YES_value": true, "NO_value": false, "on_value": true, "off_value": false, "On_value": true, "Off_value": false, "ON_value": true, "OFF_value": false, "bool_sequence": [true, false, true, false, true, false], "flow_bools": [true, false, true, false], "bool_mapping": {"active": true, "disabled": false, "enabled": true, "stopped": false}, "quoted_bools": {"quoted_true": "true", "quoted_false": "false", "quoted_yes": "yes", "quoted_no": "no", "single_true": "true", "single_false": "false"}, "nested_bools": {"settings": {"debug": true, "verbose": false, "legacy_yes": true, "legacy_no": false}, "flags": [true, false, true, false]}, "mixed_case": {"TRUE": true, "FALSE": false, "TrUe": true, "FaLsE": false}, "bool_like_strings": {"truthy": "truely", "falsy": "falsetto", "yes_sir": "yessir", "no_way": "noway"}}-{"int_zero": 0, "int_positive": 42, "int_negative": -17, "int_large": 1000000, "int_with_underscores": 1000000, "octal_value": 12, "octal_zero": 0, "octal_large": 511, "hex_lowercase": 26, "hex_uppercase": 26, "hex_mixed": 3735928559, "hex_zero": 0, "float_simple": 3.14, "float_negative": -0.5, "float_zero": 0, "float_leading_dot": 0.5, "float_trailing_zero": 1, "scientific_positive": 10000000000, "scientific_negative": 0.0015, "scientific_uppercase": 250, "scientific_no_sign": 300000, "positive_infinity": inf, "negative_infinity": -inf, "not_a_number": nan, "infinity_upper": inf, "infinity_caps": inf, "nan_upper": nan, "nan_caps": nan, "number_sequence": [0, 42, -17, 3.14, 10000000000, inf, nan], "flow_numbers": [0, 42, -17, 3.14, 26, 12], "number_mapping": {"count": 100, "price": 19.99, "discount": -5, "hex_color": 16734003, "octal_perms": 493, "scientific": 6.022e+23}, "quoted_numbers": {"string_int": "42", "string_float": "3.14", "string_hex": "0x1A", "string_octal": "0o14", "string_inf": ".inf", "string_nan": ".nan"}, "numeric_strings": {"phone": "555-1234", "version": "1.2.3", "code": 123, "leading_zero": 7, "plus_sign": 123}, "edge_cases": {"min_int": -9.22337e+18, "max_int": 9.22337e+18, "very_small": 1e-100, "very_large": 1e+100, "negative_zero": -0, "positive_zero": 0}, "nested_numbers": {"coordinates": {"x": 10.5, "y": -20.3, "z": 0}, "measurements": [1.1, 2.2, 3.3], "stats": {"count": 1000, "average": 45.67, "max": inf, "min": -inf}}, "legacy_octal": 14, "binary_like": 10, "format_tests": {"no_decimal": 42, "with_decimal": 42, "leading_zero_decimal": 0.42, "no_leading_digit": 0.42, "trailing_decimal": 42}}-{"date_simple": "2001-12-15", "date_earliest": "1970-01-01", "date_leap_year": "2020-02-29", "date_current": "2025-12-04", "datetime_utc": "2001-12-15T02:59:43.1Z", "datetime_utc_full": "2001-12-15T02:59:43.123456Z", "datetime_utc_no_frac": "2001-12-15T02:59:43Z", "datetime_offset_pos": "2001-12-15T02:59:43.1+05:30", "datetime_offset_neg": "2001-12-15T02:59:43.1-05:00", "datetime_offset_hours": "2001-12-15T02:59:43+05", "datetime_spaced": "2001-12-14 21:59:43.10 -5", "datetime_spaced_utc": "2001-12-15 02:59:43.1 Z", "datetime_spaced_offset": "2001-12-14 21:59:43.10 -05:00", "datetime_no_frac": "2001-12-15T14:30:00Z", "date_only": "2001-12-15", "timestamp_formats": {"iso_date": "2001-12-15", "iso_datetime_z": "2001-12-15T02:59:43Z", "iso_datetime_offset": "2001-12-15T02:59:43+00:00", "spaced_datetime": "2001-12-14 21:59:43.10 -5", "canonical": "2001-12-15T02:59:43.1Z"}, "timestamp_sequence": ["2001-12-15", "2001-12-15T02:59:43.1Z", "2001-12-14 21:59:43.10 -5", "2025-01-01T00:00:00Z"], "events": {"created": "2001-12-15T02:59:43.1Z", "modified": "2001-12-16T10:30:00Z", "published": "2001-12-14 21:59:43.10 -5"}, "quoted_timestamps": {"string_date": "2001-12-15", "string_datetime": "2001-12-15T02:59:43.1Z", "string_spaced": "2001-12-14 21:59:43.10 -5"}, "edge_cases": {"midnight": "2001-12-15T00:00:00Z", "end_of_day": "2001-12-15T23:59:59Z", "microseconds": "2001-12-15T02:59:43.123456Z", "no_seconds": "2001-12-15T02:59Z", "hour_only": "2001-12-15T02Z"}, "nested_timestamps": {"project": {"start_date": "2001-12-15", "milestones": [{"date": "2001-12-20", "time": "2001-12-20T14:00:00Z"}, {"date": "2002-01-15", "time": "2002-01-15T09:30:00-05:00"}], "metadata": {"created": "2001-12-14 21:59:43.10 -5", "updated": "2001-12-15T02:59:43.1Z"}}}, "invalid_timestamps": {"bad_date": "2001-13-45", "bad_time": "2001-12-15T25:99:99Z", "incomplete": "2001-12", "no_leading_zero": "2001-1-5"}, "timezones": {"utc_z": "2001-12-15T02:59:43Z", "utc_offset": "2001-12-15T02:59:43+00:00", "est": "2001-12-14T21:59:43-05:00", "ist": "2001-12-15T08:29:43+05:30", "jst": "2001-12-15T11:59:43+09:00"}, "date_range": {"past": "1900-01-01", "unix_epoch": "1970-01-01T00:00:00Z", "y2k": "2000-01-01T00:00:00Z", "present": "2025-12-04", "future": "2099-12-31T23:59:59Z"}}
-161
yaml/ocaml-yamle/tests/cram/yamlcat.t
-161
yaml/ocaml-yamle/tests/cram/yamlcat.t
···-install: 'wget https://raw.githubusercontent.com/ocaml/ocaml-travisci-skeleton/master/.travis-docker.sh'-- "PINS=\"cohttp-top:. cohttp-async:. cohttp-lwt-unix:. cohttp-lwt-jsoo:. cohttp-lwt:. cohttp-mirage:. cohttp:.\""-{"language": "c", "sudo": false, "services": ["docker"], "install": "wget https://raw.githubusercontent.com/ocaml/ocaml-travisci-skeleton/master/.travis-docker.sh", "script": "bash -ex ./.travis-docker.sh", "env": {"global": ["EXTRA_REMOTES=\"https://github.com/mirage/mirage-dev.git\"", "PINS=\"cohttp-top:. cohttp-async:. cohttp-lwt-unix:. cohttp-lwt-jsoo:. cohttp-lwt:. cohttp-mirage:. cohttp:.\""], "matrix": ["PACKAGE=\"cohttp\" DISTRO=\"alpine-3.5\" OCAML_VERSION=\"4.06.0\"", "PACKAGE=\"cohttp-async\" DISTRO=\"alpine\" OCAML_VERSION=\"4.06.0\"", "PACKAGE=\"cohttp-lwt\" DISTRO=\"debian-unstable\" OCAML_VERSION=\"4.03.0\"", "PACKAGE=\"cohttp-mirage\" DISTRO=\"debian-unstable\" OCAML_VERSION=\"4.03.0\""]}, "notifications": {"webhooks": {"urls": ["https://webhooks.gitter.im/e/6ee5059c7420709f4ad1"], "on_success": "change", "on_failure": "always", "on_start": false}}}
-9
yaml/ocaml-yamle/tests/dune
-9
yaml/ocaml-yamle/tests/dune
-389
yaml/ocaml-yamle/tests/run_all_tests.ml
-389
yaml/ocaml-yamle/tests/run_all_tests.ml
···-let fail_count = List.length (List.filter (fun r -> match r.status with `Fail _ -> true | _ -> false) results) in-let fail_count = List.length (List.filter (fun r -> match r.status with `Fail _ -> true | _ -> false) results) in
-4
yaml/ocaml-yamle/tests/test_suite_lib/dune
-4
yaml/ocaml-yamle/tests/test_suite_lib/dune
-97
yaml/ocaml-yamle/tests/test_suite_lib/test_suite_loader.ml
-97
yaml/ocaml-yamle/tests/test_suite_lib/test_suite_loader.ml
···
-69
yaml/ocaml-yamle/tests/test_suite_lib/tree_format.ml
-69
yaml/ocaml-yamle/tests/test_suite_lib/tree_format.ml
···
-353
yaml/ocaml-yamle/tests/test_yamle.ml
-353
yaml/ocaml-yamle/tests/test_yamle.ml
···-check_value "plain" (`String "hello") (of_string "hello world" |> function `String s -> `String (String.sub s 0 5) | v -> v);-Alcotest.failf "expected 1 pair but got %d pairs (trailing comma should not create empty entry)"-Alcotest.(check bool) "contains name" true (starts_with "name" trimmed || starts_with "\"name\"" trimmed)-| _ -> Alcotest.fail ("expected Alias_expansion_depth_limit error, got: " ^ Error.kind_to_string e.Error.kind))
-24
yaml/ocaml-yamle/tests/yaml/anchor.yml
-24
yaml/ocaml-yamle/tests/yaml/anchor.yml
···
-125
yaml/ocaml-yamle/tests/yaml/anchors_basic.yml
-125
yaml/ocaml-yamle/tests/yaml/anchors_basic.yml
···-# Expected: config.settings should have timeout and retries, config.palette should have the color list
-194
yaml/ocaml-yamle/tests/yaml/anchors_merge.yml
-194
yaml/ocaml-yamle/tests/yaml/anchors_merge.yml
···-# Expected: custom should have size and weight from base, but color should be blue, and add shape-# Expected: main_heading should inherit from heading (which inherits from base_style) with overrides
-23
yaml/ocaml-yamle/tests/yaml/cohttp.yml
-23
yaml/ocaml-yamle/tests/yaml/cohttp.yml
···-install: wget https://raw.githubusercontent.com/ocaml/ocaml-travisci-skeleton/master/.travis-docker.sh-- PINS="cohttp-top:. cohttp-async:. cohttp-lwt-unix:. cohttp-lwt-jsoo:. cohttp-lwt:. cohttp-mirage:. cohttp:."
-126
yaml/ocaml-yamle/tests/yaml/collections_block.yml
-126
yaml/ocaml-yamle/tests/yaml/collections_block.yml
···
-198
yaml/ocaml-yamle/tests/yaml/collections_compact.yml
-198
yaml/ocaml-yamle/tests/yaml/collections_compact.yml
···
-96
yaml/ocaml-yamle/tests/yaml/collections_flow.yml
-96
yaml/ocaml-yamle/tests/yaml/collections_flow.yml
···-nested_flow_mappings: {person: {name: Alice, age: 25}, contact: {email: alice@example.com, phone: 555-1234}}-flow_seq_with_maps: [{name: Alice, role: dev}, {name: Bob, role: ops}, {name: Charlie, role: qa}]
-53
yaml/ocaml-yamle/tests/yaml/comments.yml
-53
yaml/ocaml-yamle/tests/yaml/comments.yml
···
-8
yaml/ocaml-yamle/tests/yaml/directives.yml
-8
yaml/ocaml-yamle/tests/yaml/directives.yml
-15
yaml/ocaml-yamle/tests/yaml/directives_multiple_tags.yml
-15
yaml/ocaml-yamle/tests/yaml/directives_multiple_tags.yml
···
-10
yaml/ocaml-yamle/tests/yaml/directives_tag.yml
-10
yaml/ocaml-yamle/tests/yaml/directives_tag.yml
-10
yaml/ocaml-yamle/tests/yaml/directives_yaml11.yml
-10
yaml/ocaml-yamle/tests/yaml/directives_yaml11.yml
-15
yaml/ocaml-yamle/tests/yaml/documents_multi.yml
-15
yaml/ocaml-yamle/tests/yaml/documents_multi.yml
-10
yaml/ocaml-yamle/tests/yaml/documents_multi_empty.yml
-10
yaml/ocaml-yamle/tests/yaml/documents_multi_empty.yml
-15
yaml/ocaml-yamle/tests/yaml/documents_multi_three.yml
-15
yaml/ocaml-yamle/tests/yaml/documents_multi_three.yml
···
-16
yaml/ocaml-yamle/tests/yaml/documents_multi_with_end.yml
-16
yaml/ocaml-yamle/tests/yaml/documents_multi_with_end.yml
-11
yaml/ocaml-yamle/tests/yaml/documents_single.yml
-11
yaml/ocaml-yamle/tests/yaml/documents_single.yml
-11
yaml/ocaml-yamle/tests/yaml/documents_single_explicit_both.yml
-11
yaml/ocaml-yamle/tests/yaml/documents_single_explicit_both.yml
-10
yaml/ocaml-yamle/tests/yaml/documents_single_explicit_start.yml
-10
yaml/ocaml-yamle/tests/yaml/documents_single_explicit_start.yml
-11
yaml/ocaml-yamle/tests/yaml/documents_single_with_directive.yml
-11
yaml/ocaml-yamle/tests/yaml/documents_single_with_directive.yml
-155
yaml/ocaml-yamle/tests/yaml/edge_cases.yml
-155
yaml/ocaml-yamle/tests/yaml/edge_cases.yml
···-very_long_key: "This is a very long value that contains a lot of text to test how the parser handles long lines. It should be able to handle lines that are much longer than typical lines in most YAML files. This continues for quite a while to make sure we test the boundaries of reasonable line lengths. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."-This is a very long literal block that should preserve all the whitespace and newlines exactly as written. It can contain very long lines that go on and on and on without breaking. This tests whether the parser can handle long content in literal blocks properly. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-59
yaml/ocaml-yamle/tests/yaml/linuxkit.yml
-59
yaml/ocaml-yamle/tests/yaml/linuxkit.yml
···
-192
yaml/ocaml-yamle/tests/yaml/scalars_block.yml
-192
yaml/ocaml-yamle/tests/yaml/scalars_block.yml
···
-60
yaml/ocaml-yamle/tests/yaml/scalars_plain.yml
-60
yaml/ocaml-yamle/tests/yaml/scalars_plain.yml
···
-81
yaml/ocaml-yamle/tests/yaml/scalars_quoted.yml
-81
yaml/ocaml-yamle/tests/yaml/scalars_quoted.yml
···
-82
yaml/ocaml-yamle/tests/yaml/values_bool.yml
-82
yaml/ocaml-yamle/tests/yaml/values_bool.yml
···
-55
yaml/ocaml-yamle/tests/yaml/values_null.yml
-55
yaml/ocaml-yamle/tests/yaml/values_null.yml
···
-120
yaml/ocaml-yamle/tests/yaml/values_numbers.yml
-120
yaml/ocaml-yamle/tests/yaml/values_numbers.yml
···
-101
yaml/ocaml-yamle/tests/yaml/values_timestamps.yml
-101
yaml/ocaml-yamle/tests/yaml/values_timestamps.yml
···
-105
yaml/ocaml-yamle/tests/yaml/whitespace.yml
-105
yaml/ocaml-yamle/tests/yaml/whitespace.yml
···
-3
yaml/ocaml-yamle/tests/yaml/yaml-1.2.yml
-3
yaml/ocaml-yamle/tests/yaml/yaml-1.2.yml
···-- {?"a key can be looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooger": "than 1024 when parsing is unambiguous before seeing the colon."}
-32
yaml/ocaml-yamle/yamle.opam
-32
yaml/ocaml-yamle/yamle.opam
···