Commit graph

230 commits

Author SHA1 Message Date
Ethiraric
2642252f7f Add doc checks to before_commit. 2024-03-28 21:06:32 +01:00
David Aguilar
2dc9e2c13f maint: version-up and minimize where we mention the version
Remove the version number from tools/gen_large_yaml so that we
can avoid needing to update the version in two places.
2024-03-25 22:25:46 -07:00
John Vandenberg
992c9c29fb fix typos 2024-03-25 14:52:44 +01:00
David Aguilar
ddb6885a17 yaml: add YamlLoader::load_from_parser(&Parser)
Make it easier to load documents from a prebuilt Parser.
2024-03-25 00:06:10 +01:00
David Aguilar
cd2028aca7 parser: add Parser::new_from_str(&str) 2024-03-25 00:06:10 +01:00
David Aguilar
21738031e3 parser: fixup typos from github 2024-03-24 15:01:38 -07:00
David Aguilar
6ea41cc9a8 parser: add a test for keep_tags(false)
Co-authored-by: Ethiraric <ethiraric@gmail.com>
2024-03-24 14:21:33 -07:00
David Aguilar
dfaea08aa1 parser: better document keep_tags
Co-authored-by: Ethiraric <ethiraric@gmail.com>
2024-03-24 14:21:33 -07:00
David Aguilar
e0560cb232 parser: add an option to keep tags across multiple documents
Documents are self-contained and tags defined in the first document are not
visible to subsequent documents.

Add support for having tags that span across all documents by making the
clearing of tags in the parser opt-out.

Closes: #10
2024-03-24 14:21:33 -07:00
David Aguilar
a5550d4203 yaml: add YamlLoader::documents() to get a read-only view of the parsed documents 2024-03-24 14:21:33 -07:00
Ethiraric
eddea11e01 Switch from encoding to encoding_rs.
See https://github.com/rustsec/advisory-db/issues/1605.
2024-03-24 17:14:44 +01:00
Ethiraric
898dab9851 Fix rustdoc ignore directive. 2024-03-20 16:00:33 +01:00
Ethiraric
c3ba2070e5 Add missing_docs warning. 2024-03-20 16:00:30 +01:00
Ethiraric
a06ba5205a Forgot to bump some v0.6.0 to v0.7.0. 2024-03-20 16:00:15 +01:00
Ethiraric
9133bb0a34 Re-enable clippy warnings. 2024-03-19 18:18:59 +01:00
David Aguilar
c1145fc814 Enable all clippy warnings
Rename Scanner::next() to Scanner::next_token() to avoid
confusiong with the Iterator trait.
2024-03-19 15:26:16 +01:00
David Aguilar
429813a0cd Enable the missing-errors-doc clippy checks 2024-03-19 15:26:16 +01:00
David Aguilar
4c64feb5ad Eliminate panics and enable the missing panics docs check 2024-03-19 15:26:16 +01:00
David Aguilar
04f8b99f49 Enable the redundant-else clippy checks 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
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
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
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
671a498bf4 Minor improvements. 2024-01-31 22:02:53 +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
b4f66c457a Move char is_xxx fn to their own file. 2024-01-24 01:02:20 +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
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