Commit graph

236 commits

Author SHA1 Message Date
Ethiraric
40670f3c48 Minor improvements. 2024-04-02 23:06:08 +02:00
Ethiraric
3365ccadb6 Readability improvement in tag handling. 2024-04-02 23:00:33 +02:00
Ethiraric
6b01b554e0 yaml-rust2 -> saphyr-parser
* Drop non-parser files
* Rename everything
* Fix tests
* Start rewriting a bit of docs
2024-04-02 17:14:06 +02:00
Ethiraric
787403daa1 Messed up the MSRV. 2024-03-30 19:39:53 +01:00
Ethiraric
c90c1ed1fb Use cargo features. 2024-03-30 19:24:54 +01:00
Alistair Francis
1fb76ae745 yaml: Implement IndexMut
This implements the IndexMut trait for Yaml. This allows indexing the
Yaml type while having a mutable reference.

Unlike the Index, this will panic on a failure. That is allowed as per
the Rust documentation [1]. We don't have the option of returning a
mutable reference to BAD_VALUE as that is unsafe. So instead we just
panic.

1: https://doc.rust-lang.org/std/ops/trait.IndexMut.html#tymethod.index_mut

Resolves: https://github.com/chyh1990/yaml-rust/issues/123
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Co-authored-by: Ethiraric <ethiraric@gmail.com>
2024-03-30 18:52:39 +01:00
Ethiraric
bf2aaf8044 Add doc checks to before_commit. 2024-03-28 21:06:32 +01:00
David Aguilar
5c7e11ea3f 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
6ec65e636f fix typos 2024-03-25 14:52:44 +01:00
David Aguilar
d7f7c7ce15 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
c00b27bb95 parser: add Parser::new_from_str(&str) 2024-03-25 00:06:10 +01:00
David Aguilar
61b0e70a4e parser: fixup typos from github 2024-03-24 15:01:38 -07:00
David Aguilar
c8e82c00d1 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
dec6bf35bb parser: better document keep_tags
Co-authored-by: Ethiraric <ethiraric@gmail.com>
2024-03-24 14:21:33 -07:00
David Aguilar
150b6f0927 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
16f3ea39e1 yaml: add YamlLoader::documents() to get a read-only view of the parsed documents 2024-03-24 14:21:33 -07:00
Ethiraric
ee92e953f1 Switch from encoding to encoding_rs.
See https://github.com/rustsec/advisory-db/issues/1605.
2024-03-24 17:14:44 +01:00
Ethiraric
3279baaab9 Fix rustdoc ignore directive. 2024-03-20 16:00:33 +01:00
Ethiraric
ccd7b6e718 Add missing_docs warning. 2024-03-20 16:00:30 +01:00
Ethiraric
8247f481c7 Forgot to bump some v0.6.0 to v0.7.0. 2024-03-20 16:00:15 +01:00
Ethiraric
011e81ee85 Re-enable clippy warnings. 2024-03-19 18:18:59 +01:00
David Aguilar
cccf769b1c 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
a120d93e7d Enable the missing-errors-doc clippy checks 2024-03-19 15:26:16 +01:00
David Aguilar
9e505d552f Eliminate panics and enable the missing panics docs check 2024-03-19 15:26:16 +01:00
David Aguilar
a42f26b306 Enable the redundant-else clippy checks 2024-03-19 15:26:16 +01:00
David Aguilar
e36369d69c Enable the case-arms clippy checks 2024-03-19 15:26:16 +01:00
lincoln auster [they/them]
7b4422bb5d 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]
f8542f0f97 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
c32db2986c Use a YamlDecoder builder to implement optional encoding_trap parameter. 2024-03-19 15:26:16 +01:00
Marko Mikulicic
5240918cac 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
03e3047937 Add byte a offset to the error message 2024-03-19 15:26:16 +01:00
larkbyte
54ca9294fa Replace linked_hash_map with hashlink 2024-03-19 15:26:16 +01:00
David Aguilar
5369a002ba Emit multi-line string values as block scalars 2024-03-19 15:26:16 +01:00
Ethiraric
a33d0ffe68 Update to v0.6. 2024-03-15 20:14:26 +01:00
Ethiraric
e7a4f30627 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
603c3c546f Fix some clippy lints. 2024-02-13 23:10:17 +01:00
Ethiraric
e93947bcfe Minor improvements. 2024-01-31 22:02:53 +01:00
Ethiraric
4fee65f27a Improve scan_plain_scalar readability.
Take whitespace checking out of the innermost loop for performance.
2024-01-25 03:06:18 +01:00
Ethiraric
28893c4567 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
2471c5793a 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
7a51c3dfca 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
666965ef4f Doing this leads to worse performance. 2024-01-24 19:42:18 +01:00
Ethiraric
4153a98973 Pre-load chars in skip_block_scalar_indent. 2024-01-24 19:31:45 +01:00
Ethiraric
980d5b0335 Help the compiler inline read_break. 2024-01-24 17:14:52 +01:00
Ethiraric
bcdd725049 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
06936742f2 Move char is_xxx fn to their own file. 2024-01-24 01:02:20 +01:00
Ethiraric
2481df7f9d Update licence, readme, doc. 2024-02-08 07:12:14 +01:00
Ethiraric
f2d0968a89 Fix null nodes with tags in flow constructs. 2024-01-23 00:19:04 +01:00
Ethiraric
4b37abf2b7 Fix tag scanning. 2024-01-23 00:19:04 +01:00
Ethiraric
84a7d2a0ab Fix indent in block scalars. 2024-01-23 00:19:04 +01:00