David Aguilar
b4cb0ea9e6
Add a garden file for dev tasks
...
Garden is a simple command runner that uses YAML (via yaml-rust) as its
file format. Garden will be switching over to yaml-rust2 shortly.
2024-03-19 15:26:16 +01:00
Ben Boeckel
0546a314ed
doc: mention that types are not interpreted
...
Closes : #87
2024-03-19 15:26:16 +01:00
David Aguilar
f4c4e2ee4a
Enable the case-arms clippy checks
2024-03-19 15:26:16 +01:00
lincoln auster [they/them]
2cf6436fb1
implement borrowed_or
...
Allow the usage of `or` without consuming self. This can be useful
for pipelines that maintain some sort of owned state.
2024-03-19 15:26:16 +01:00
lincoln auster [they/them]
5ba5dfa6e6
introduce or
function
...
Similarly to `or` for Rust's options, this patch provides a way to
'override' the value of a Yaml node if it's some form of error.
2024-03-19 15:26:16 +01:00
David Aguilar
38aaea20db
Update to quickcheck 1.0
2024-03-19 15:26:16 +01:00
Marko Mikulicic
068525a6d7
Use a YamlDecoder builder to implement optional encoding_trap parameter.
2024-03-19 15:26:16 +01:00
Marko Mikulicic
7705e87ff6
Implement load_from_bytes
...
Also helps in some cases with #142 , when the BOM is at the beginning of
the file (common), but not in corner case where the BOM is at the start
of a document which is not the first one.
Closes : #155
2024-03-19 15:26:16 +01:00
Jim Turner
c962741719
Add byte a offset to the error message
2024-03-19 15:26:16 +01:00
larkbyte
e1119bb3bf
Replace linked_hash_map with hashlink
2024-03-19 15:26:16 +01:00
David Aguilar
ef1a2d1d5c
ci: replace travis with github actions
2024-03-19 15:26:16 +01:00
David Aguilar
07113c6e1c
Cargo.toml: enable the Rust 2021 Edition
2024-03-19 15:26:16 +01:00
David Aguilar
99fb843550
Cargo.toml: add myself to the authors list
2024-03-19 15:26:16 +01:00
David Aguilar
a6c8dfe5b8
Emit multi-line string values as block scalars
2024-03-19 15:26:16 +01:00
Ethiraric
e4ae1d0546
Update to v0.6.
2024-03-15 20:14:26 +01:00
Ethiraric
dc88910c23
Add bench_compare
tool.
2024-03-15 18:29:54 +01:00
Ethiraric
6b27316586
Prepare for benchmarks.
2024-03-15 17:34:39 +01:00
Ethiraric
f44cb1dd22
Create a deeper YAML in nested.yaml
.
...
This requires heavily reducing the number of nodes since they are on
average more indented. Leaving 5M nodes results in files larger than
1GB.
2024-03-15 12:48:04 +01:00
Ethiraric
0a05d3c0ed
Add gen_large_yaml to justfile's before_commit.
2024-03-15 12:42:10 +01:00
Ethiraric
b7755e119c
Remove tools from examples.
...
Add documentation for those tools, and make it so that `gen_large_yaml`
generates a predetermined set of files instead of outputting to its
standard output.
2024-03-14 19:20:56 +01:00
Ethiraric
3d8a54d384
Add a generator for nested objects.
2024-02-14 00:35:41 +01:00
Ethiraric
765f2bb672
Replace VecDeque
with ArrayDeque
.
...
This removes all allocations in the `Scanner` code. The downside is that
the buffer is now stored in the `Scanner` structure, making it 48 bytes
larger. This however makes the code much more performant.
2024-02-13 23:10:32 +01:00
Ethiraric
8a80e547c6
Fix some clippy lints.
2024-02-13 23:10:17 +01:00
Ethiraric
7b431c77d4
Improve comments.
2024-02-08 07:04:38 +01:00
Ethiraric
671a498bf4
Minor improvements.
2024-01-31 22:02:53 +01:00
Ethiraric
5d94b8174d
Add big string array bench generation.
2024-01-30 23:11:00 +01:00
Ethiraric
1dcb1eee34
Rename generator tool.
2024-01-30 22:37:32 +01:00
Ethiraric
99fb05c937
Improve scan_plain_scalar
readability.
...
Take whitespace checking out of the innermost loop for performance.
2024-01-25 03:06:18 +01:00
Ethiraric
f535e505a7
Avoid a trip to self.buffer
.
...
`self.buffer` is a `VecDeque<char>`, meaning that characters are stored
on 4B. When reading as we used to do, this means that every 1 byte
character we read was turned into 4 bytes, which was turned into 1 byte
in `String::extend`.
Instead of going through `self.buffer`, use a local `String` to store
the characters before pushing them to `string`.
2024-01-24 23:02:02 +01:00
Ethiraric
cfbf287b3d
Buffer block scalar lines.
...
Instead of doing a loop that goes:
* fetch from input stream
* push char into string
Make a loop that fetches characters while they're not a breakz and
_then_ extend the string. This avoids a bunch of reallocations.
2024-01-24 21:45:18 +01:00
Ethiraric
26ef839cd3
Split skip
into more specific variants.
...
This function is a hotpath and sometimes removing the conditional jump
to detect line breaks saves a bunch of instructions.
2024-01-24 20:20:52 +01:00
Ethiraric
6babe8de60
Doing this leads to worse performance.
2024-01-24 19:42:18 +01:00
Ethiraric
aaa9288842
Pre-load chars in skip_block_scalar_indent
.
2024-01-24 19:31:45 +01:00
Ethiraric
2cebf0af1d
Help the compiler inline read_break
.
2024-01-24 17:14:52 +01:00
Ethiraric
5789169ceb
Remove debug prints code from release builds.
...
If building release mode, remove debug code. Now, the `debug_print!`
macro resolves to nothing in release build.
In debug build, don't check the environment for each print. This has a
huge overhead. The environment is only checked once and next checks are
made against a simple boolean value.
2024-01-24 02:22:02 +01:00
Ethiraric
e6fae1c679
Add justfile
for my pre-commit todo-list.
2024-01-24 01:11:53 +01:00
Ethiraric
b4f66c457a
Move char is_xxx
fn to their own file.
2024-01-24 01:02:20 +01:00
Ethiraric
36e8b06e82
Add benchmarking tools.
2024-02-08 08:15:36 +01:00
Ethiraric
6e5286c2e1
Use OR for dual licensing.
...
https://doc.rust-lang.org/book/ch14-02-publishing-to-crates-io.html#adding-metadata-to-a-new-crate
2024-01-23 15:20:12 +01:00
Ethiraric
eed3433841
Update licence, readme, doc.
2024-02-08 07:12:14 +01:00
Ethiraric
68c7afcb4c
Fix null nodes with tags in flow constructs.
2024-01-23 00:19:04 +01:00
Ethiraric
7f7919748a
Fix tag scanning.
2024-01-23 00:19:04 +01:00
Ethiraric
76b3773ffd
Fix indent in block scalars.
2024-01-23 00:19:04 +01:00
Ethiraric
9f4b1480df
Fix dquote indentation.
2024-01-23 00:19:04 +01:00
Ethiraric
2e94a4217b
Fix dquote string escape sequences.
2024-01-23 00:19:04 +01:00
Ethiraric
7145ee8282
Fix tests related to anchor/alias indentation.
...
I have no idea what I'm doing.
2024-01-23 00:19:04 +01:00
Ethiraric
9281e35bbb
Fix flow adjacent value with complex key.
2024-01-23 00:19:04 +01:00
Ethiraric
7c3e8ed7c4
Lint and improve formatting.
2024-01-23 00:19:04 +01:00
Ethiraric
5dbd6f9a55
Fix use of dashes in flow contexts.
2024-01-23 00:19:04 +01:00
Ethiraric
628549085c
Fix block scalar / eof interactions.
2024-01-23 00:19:04 +01:00
Ethiraric
c0caeb84e9
Fix block scalars and document end interaction.
2024-01-23 00:19:04 +01:00
Ethiraric
ff28b55d22
Fix duplicate version directive.
2024-01-23 00:19:04 +01:00
Ethiraric
7b744d092e
Fixes towards implicit document end.
2024-01-23 00:19:04 +01:00
Ethiraric
f27a7c25a8
Fixes towards spaces before comments.
2024-01-23 00:19:04 +01:00
Ethiraric
0b58be1458
Fix possible misindent in block scalar.
2024-01-23 00:19:04 +01:00
Ethiraric
0a1aebaf3c
Fix towards multiple documents in a single stream.
2024-01-23 00:19:04 +01:00
Ethiraric
1606523193
Fix towards invalid trailing characters.
2024-01-23 00:19:04 +01:00
Ethiraric
4118cfab7c
Split fetch_flow_scalar
.
2024-01-23 00:19:04 +01:00
Ethiraric
f0ae6473aa
Fix towards flow mapping and colons.
2024-01-23 00:19:04 +01:00
Ethiraric
4c1376a2b0
Finally grasped how SimpleKey
works.
...
This is a huge commit that cannot easily be broken down as it contains
fixes for the next ignored test in the suite which, one fixed, broke
tests that used to pass and were only then fixed.
There is also a substantial amount of comments that were added,
especially around `SimpleKey`. Minor improvements around the code were
added and I did not bother making a separate commit for them.
Overall, that commit fixes 7 tests from the matrix that were related to
the handling of simple keys.
2024-01-23 00:19:04 +01:00
Ethiraric
79046225e7
Minor improvement to debug prints.
2024-01-23 00:19:04 +01:00
Ethiraric
e9bcc8a28b
Fix anchor names' character set.
2024-01-23 00:19:04 +01:00
Ethiraric
6308bbe98f
Fix empty documents tests.
2024-01-23 00:19:04 +01:00
Ethiraric
e7f29450ca
Fix empty keys in implicit mappings.
2024-01-23 00:19:04 +01:00
Ethiraric
7006620027
Add comments to TokenType
and Scanner
.
2024-01-23 00:19:04 +01:00
Ethiraric
be6a05916f
Add debugging helpers.
2024-01-23 00:19:04 +01:00
Ethiraric
2e5605ddc2
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
6e8af26435
More fixes towards invalid tabs?
2024-01-23 00:19:04 +01:00
Ethiraric
06b03f5cf5
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
5437f5d9cb
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
49bfa590a6
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
125c0a411a
Fix towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
458d22ef80
Fix indent when -
& entry have \n
in-between.
2024-01-23 00:19:04 +01:00
Ethiraric
a80091795b
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
88833f8a06
Fix DK95-00, I guess.
2024-01-23 00:19:04 +01:00
Ethiraric
e683932e7a
Rework block scalar indent skipping.
2024-01-23 00:19:04 +01:00
Ethiraric
abac504295
Minor improvements.
2024-01-23 00:19:04 +01:00
Ethiraric
29b513bea3
More fixes towards tabulations.
2024-01-23 00:19:04 +01:00
Ethiraric
e1ae3bd5b2
Fix more inappropriate use of tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
d9287638b9
Use type aliases where appropriate.
2024-01-23 00:19:04 +01:00
Ethiraric
1590018312
Doccomment is_
series of functions.
2024-01-23 00:19:04 +01:00
Ethiraric
c670b32461
Fix tab used as indentation checks.
2024-01-23 00:19:04 +01:00
Ethiraric
06a6fb34c1
Handle "!!" tag overriding.
2024-01-23 00:19:04 +01:00
Ethiraric
ffed282a9f
Remove stale tag handling code.
2024-01-23 00:19:04 +01:00
Ethiraric
92e20e6eb4
Don't inherit tag directives between documents.
2024-01-23 00:19:04 +01:00
Ethiraric
5f6dc2246f
Reslove tag directives.
2024-01-23 00:19:04 +01:00
Ethiraric
8da6ddef10
Remove _
prefix to used method.
2024-01-23 00:19:04 +01:00
Ethiraric
3f10cf9e5d
Propagate tag to SequenceStart event.
2024-01-23 00:19:04 +01:00
Ethiraric
e6fdcddceb
Propagate tag to MappingStart event.
2024-01-23 00:19:04 +01:00
Ethiraric
3ffb231e40
Minor improvements.
...
* Doc comments
* Helper functions
* Line breaks for readability
2024-01-23 00:19:04 +01:00
Ethiraric
81f9a376fb
Rustfmt + clippy.
2024-01-23 00:19:04 +01:00
Ethiraric
8c4ea2c838
Move emitter/scanner tests to their folder.
...
Change scanner's complex test:
```diff
- *coffee:
+ *coffee :
amount: 4
- *cookies:
+ *cookies :
amount: 4
```
According to https://play.yaml.io/main/parser , this example was invalid
in the first place. Adding a space makes it so that the colon is not
part of the alias name.
Also fix colons not being able to be part of anchors.
2024-01-23 00:19:04 +01:00
Denis Lisov
fb8ef31546
yaml-test-suite: print the YAML text on failure
2024-01-23 00:19:04 +01:00
Denis Lisov
c7e371a24c
yaml-test-suite: update to YTS v2022-01-17
2024-01-23 00:19:04 +01:00
Denis Lisov
9fd57469a4
yaml-test-suite: print the names of missing XFAILs
2024-01-23 00:19:04 +01:00
Denis Lisov
080d7d5275
yaml-test-suite: ensure all XFAILs do exist as tests
2024-01-23 00:19:04 +01:00
Denis Lisov
4ba34544ad
yaml-test-suite: add ignores and classify failures
2024-01-23 00:19:04 +01:00
Denis Lisov
a8cf1bb642
yaml-test-suite: move to libtest-mimic
2024-01-23 00:19:04 +01:00
Denis Lisov
9001d564b6
testing: add an integration test for yaml-test-suite
...
The official YAML test suite (https://github.com/yaml/yaml-test-suite ).
Requires the submodule to be checked out.
2024-01-23 00:19:04 +01:00
Ethiraric
ff2d5fc5b6
Expose ScanError::info
.
...
From https://github.com/chyh1990/yaml-rust/pull/190 .
2023-08-17 23:43:15 +02:00