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
b2bed366cf
Add a CHANGELOG to keep track of yaml-rust2 development
2024-03-19 15:26:16 +01:00
David Aguilar
49464b43d9
README: trivial grammar tweak
2024-03-19 15:26:16 +01:00
David Aguilar
aa1afd38d5
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
8110c942ec
doc: mention that types are not interpreted
...
Closes : #87
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
David Aguilar
9764f399fb
Update to quickcheck 1.0
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
5951a33317
ci: replace travis with github actions
2024-03-19 15:26:16 +01:00
David Aguilar
77574b4f30
Cargo.toml: enable the Rust 2021 Edition
2024-03-19 15:26:16 +01:00
David Aguilar
5c9350e824
Cargo.toml: add myself to the authors list
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
f99a81c3e6
Add bench_compare
tool.
2024-03-15 18:29:54 +01:00
Ethiraric
289d16ab4a
Prepare for benchmarks.
2024-03-15 17:34:39 +01:00
Ethiraric
98374de883
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
704d30c7a6
Add gen_large_yaml to justfile's before_commit.
2024-03-15 12:42:10 +01:00
Ethiraric
e390c88077
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
6919d6fd02
Add a generator for nested objects.
2024-02-14 00:35:41 +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
96b012a021
Improve comments.
2024-02-08 07:04:38 +01:00
Ethiraric
e93947bcfe
Minor improvements.
2024-01-31 22:02:53 +01:00
Ethiraric
a1285f107a
Add big string array bench generation.
2024-01-30 23:11:00 +01:00
Ethiraric
b3dd1af018
Rename generator tool.
2024-01-30 22:37:32 +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
25644ffa93
Add justfile
for my pre-commit todo-list.
2024-01-24 01:11:53 +01:00
Ethiraric
06936742f2
Move char is_xxx
fn to their own file.
2024-01-24 01:02:20 +01:00
Ethiraric
ed591e86ca
Add benchmarking tools.
2024-02-08 08:15:36 +01:00
Ethiraric
ac2d02f65e
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
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
Ethiraric
3868b83756
Fix dquote indentation.
2024-01-23 00:19:04 +01:00
Ethiraric
36c4f8951e
Fix dquote string escape sequences.
2024-01-23 00:19:04 +01:00
Ethiraric
71c54f318f
Fix tests related to anchor/alias indentation.
...
I have no idea what I'm doing.
2024-01-23 00:19:04 +01:00
Ethiraric
ca7579a3c9
Fix flow adjacent value with complex key.
2024-01-23 00:19:04 +01:00
Ethiraric
a34fcac152
Lint and improve formatting.
2024-01-23 00:19:04 +01:00
Ethiraric
ef799af5eb
Fix use of dashes in flow contexts.
2024-01-23 00:19:04 +01:00
Ethiraric
c60099af9b
Fix block scalar / eof interactions.
2024-01-23 00:19:04 +01:00
Ethiraric
9b653e607b
Fix block scalars and document end interaction.
2024-01-23 00:19:04 +01:00
Ethiraric
308b07bad2
Fix duplicate version directive.
2024-01-23 00:19:04 +01:00
Ethiraric
31dc4a1456
Fixes towards implicit document end.
2024-01-23 00:19:04 +01:00
Ethiraric
7a3e3b05b4
Fixes towards spaces before comments.
2024-01-23 00:19:04 +01:00
Ethiraric
99d82be6a3
Fix possible misindent in block scalar.
2024-01-23 00:19:04 +01:00
Ethiraric
b2aa95b4c1
Fix towards multiple documents in a single stream.
2024-01-23 00:19:04 +01:00
Ethiraric
bff3c4ccaf
Fix towards invalid trailing characters.
2024-01-23 00:19:04 +01:00
Ethiraric
032efff867
Split fetch_flow_scalar
.
2024-01-23 00:19:04 +01:00
Ethiraric
81104ba833
Fix towards flow mapping and colons.
2024-01-23 00:19:04 +01:00
Ethiraric
4603e31a67
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
795193483e
Minor improvement to debug prints.
2024-01-23 00:19:04 +01:00
Ethiraric
23f3a512f0
Fix anchor names' character set.
2024-01-23 00:19:04 +01:00
Ethiraric
07a0743288
Fix empty documents tests.
2024-01-23 00:19:04 +01:00
Ethiraric
65a89f41b9
Fix empty keys in implicit mappings.
2024-01-23 00:19:04 +01:00
Ethiraric
f2b5946008
Add comments to TokenType
and Scanner
.
2024-01-23 00:19:04 +01:00
Ethiraric
19bd49865f
Add debugging helpers.
2024-01-23 00:19:04 +01:00
Ethiraric
319b288e60
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
0889d66c32
More fixes towards invalid tabs?
2024-01-23 00:19:04 +01:00
Ethiraric
84bfd0d3de
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
870f2359dd
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
da233d5426
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
ffe0cfb6d5
Fix towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
cd2c34cabe
Fix indent when -
& entry have \n
in-between.
2024-01-23 00:19:04 +01:00
Ethiraric
5a8c5a3d44
More fixes towards invalid tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
326082e0bc
Fix DK95-00, I guess.
2024-01-23 00:19:04 +01:00
Ethiraric
f9e55be2f0
Rework block scalar indent skipping.
2024-01-23 00:19:04 +01:00
Ethiraric
abe5d30b3a
Minor improvements.
2024-01-23 00:19:04 +01:00
Ethiraric
01ecc1ab0f
More fixes towards tabulations.
2024-01-23 00:19:04 +01:00
Ethiraric
e69953bf80
Fix more inappropriate use of tabs.
2024-01-23 00:19:04 +01:00
Ethiraric
15e02cf53d
Use type aliases where appropriate.
2024-01-23 00:19:04 +01:00
Ethiraric
acb35b431a
Doccomment is_
series of functions.
2024-01-23 00:19:04 +01:00
Ethiraric
270c75ce03
Fix tab used as indentation checks.
2024-01-23 00:19:04 +01:00
Ethiraric
1afe5e353f
Handle "!!" tag overriding.
2024-01-23 00:19:04 +01:00
Ethiraric
cf9088286d
Remove stale tag handling code.
2024-01-23 00:19:04 +01:00
Ethiraric
0d50cff2b5
Don't inherit tag directives between documents.
2024-01-23 00:19:04 +01:00
Ethiraric
a502625ce8
Reslove tag directives.
2024-01-23 00:19:04 +01:00
Ethiraric
df48d59150
Remove _
prefix to used method.
2024-01-23 00:19:04 +01:00
Ethiraric
b1be5686bf
Propagate tag to SequenceStart event.
2024-01-23 00:19:04 +01:00
Ethiraric
ddd768e681
Propagate tag to MappingStart event.
2024-01-23 00:19:04 +01:00
Ethiraric
e4c4182020
Minor improvements.
...
* Doc comments
* Helper functions
* Line breaks for readability
2024-01-23 00:19:04 +01:00
Ethiraric
c458fd1248
Rustfmt + clippy.
2024-01-23 00:19:04 +01:00
Ethiraric
f9eb8c6d60
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
3cdb815556
yaml-test-suite: print the YAML text on failure
2024-01-23 00:19:04 +01:00
Denis Lisov
af569b50d7
yaml-test-suite: update to YTS v2022-01-17
2024-01-23 00:19:04 +01:00
Denis Lisov
d27da67c69
yaml-test-suite: print the names of missing XFAILs
2024-01-23 00:19:04 +01:00
Denis Lisov
ce88cabc08
yaml-test-suite: ensure all XFAILs do exist as tests
2024-01-23 00:19:04 +01:00
Denis Lisov
eac129c5f5
yaml-test-suite: add ignores and classify failures
2024-01-23 00:19:04 +01:00
Denis Lisov
ff12dca0d2
yaml-test-suite: move to libtest-mimic
2024-01-23 00:19:04 +01:00
Denis Lisov
38a81c6200
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
da67c9a763
Expose ScanError::info
.
...
From https://github.com/chyh1990/yaml-rust/pull/190 .
2023-08-17 23:43:15 +02:00
Ethiraric
c3d394186a
Fix more clippy lints.
2023-08-17 23:31:32 +02:00
Ethiraric
a49f4417b8
Add a dump_events example to aid debugging.
2023-08-17 23:16:09 +02:00
Ethiraric
a31d836d9c
Add a release-lto cargo profile.
2023-08-17 23:16:09 +02:00
Ethiraric
2d8c4e8fc9
Add documentation and move tests to their folder.
2023-08-17 23:16:06 +02:00
Ethiraric
91ed5dca21
Clippy set to pedantic.
2023-08-14 16:11:33 +02:00
Alexander Kjäll
beae0f306b
library is now in the crates repo ( #164 )
2021-07-12 15:48:17 +08:00
Yuheng Chen
95d0603129
Bump to v0.4.5
2021-01-03 11:57:28 -08:00
Dylan DPC
6d0561fa31
Update Cargo.toml ( #162 )
2020-07-10 13:44:57 +08:00
Yuheng Chen
95e1ad2dce
Bump to v0.4.4
2020-06-01 21:02:16 +08:00
Evan Harvey
d5bfbcb047
Spellcheck ( #143 )
...
* Spellcheck src
* Spellcheck README
2020-06-01 20:59:27 +08:00
Yuheng Chen
2be65d069e
fix CI for clippy 0.9
2020-06-01 20:34:13 +08:00
Chen Yuheng
268eb2c6fd
Raise minimum rustc support to 1.31
2020-06-01 20:18:27 +08:00
Chen Yuheng
6b9b0360e5
Update .travis.yml
2020-06-01 20:15:32 +08:00
Chen Yuheng
604dfc3d64
Merge pull request #158 from XVilka/rust2018
...
Rust 2018 transition.
2020-06-01 20:05:39 +08:00
Anton Kochkov
2a18bbb074
Fix build
2020-05-27 14:36:22 +08:00
Anton Kochkov
d038b75bb7
Update AppVeyor
2020-05-27 14:29:54 +08:00
Anton Kochkov
a4b1bb6e9b
Update quickcheck to 0.9
2020-05-27 14:25:59 +08:00
Anton Kochkov
8d26a5eca3
Remove deprecated API
2020-05-27 14:19:22 +08:00
Anton Kochkov
95562ac849
Rust 2018 transition
2020-05-27 14:15:28 +08:00
Hendrik Sollich
1005387c2c
Raise minimum rustc version to 1.28 (Fixes CI)
...
Known minimum version to build [regex](https://crates.io/crates/regex ).
Old enough as it is, we're not c++ here!
2019-07-24 18:37:03 +02:00
Hendrik Sollich
faf6e2a8a6
Fix emitting hexlike strings without quotes
...
The emitter omitted quotes for strings that start with `0x` those would
subsequently be parsed as strings again. This should fix #133 .
2019-07-24 16:40:02 +02:00
Yuheng Chen
bd87698008
Bump to v0.4.3
2019-03-07 14:27:03 +08:00
Robin Stocker
a3591b3fef
Fix handling of indicators in plain scalars to conform to YAML 1.2
...
YAML 1.2 has special handling of indicators to be compatible with JSON.
The following is equivalent to `{"a": "b"}` (note, no space after `:`):
{"a":b}
But without the quoted key, a space is required. So the `:` here is part
of the plain scalar:
{a:b} # == {"a:b"}
A plain scalar can also start with a `:` as long as it's followed by
"safe" characters:
{a: :b} # == {"a": ":b"}
(Fixes #118 )
2019-03-04 11:45:39 +11:00
Tibo Delor
cbd5800485
Bump minimum version for test to 1.24.1
...
quickcheckv0.7.2 comes with lazy_static v1.2.0 which only support Rust 1.24.1.
See https://github.com/rust-lang-nursery/lazy-static.rs/releases/tag/1.2.0
2018-12-13 19:03:31 +11:00
Tibo Delor
0705722551
Format using rustfmt 1.0
2018-12-13 18:35:01 +11:00
David Tolnay
04134ffc47
Address write_with_newline lint
2018-09-16 00:00:48 -07:00
David Tolnay
34da7f5f01
Replace try! with question mark
2018-09-15 23:58:48 -07:00
David Tolnay
1652cf524e
Release 0.4.2
2018-09-15 13:09:48 -07:00
David Tolnay
31a54ded85
Lowercase the recursion limit error message
...
To be consistent with the other errors in this crate.
2018-09-15 13:09:11 -07:00
David Tolnay
66326f23f5
Release 0.4.1
2018-09-15 12:31:11 -07:00
David Tolnay
0e1049d10c
Set html_root_url
2018-09-15 12:30:27 -07:00
David Tolnay
b81d0c3da1
Stop recommending a git dependency
2018-09-15 12:29:20 -07:00
David Tolnay
a370e822e7
Remove outdated note about version support
2018-09-15 12:29:02 -07:00
David Tolnay
25d949f985
Reorganize readme links
2018-09-15 12:28:45 -07:00
David Tolnay
60fdd48745
Fix docs.rs link
2018-09-15 12:25:55 -07:00
David Tolnay
dba01d9a48
Render readme on crates.io
2018-09-15 12:25:15 -07:00
David Tolnay
1f2d2aaf31
Remove commented key in Cargo.toml
2018-09-15 12:24:47 -07:00
David Tolnay
34c0069d09
Merge pull request #112 from xfix/add-testing-input-output-identity-in-quickcheck
...
Add testing whether load(dump(x)) is an identity in quickcheck
2018-09-15 12:23:08 -07:00
David Tolnay
10498b2423
Escape string containing colon
...
I don't know whether this is always necessary but it is required for
correctly serializing `["x: %"]`. If we serialize this without quotes to
`[x: %]` then the result is not valid YAML.
2018-09-15 12:20:14 -07:00
David Tolnay
a60ece819a
Tag clippy build in travis build list
2018-09-15 10:12:16 -07:00
David Tolnay
11ddb9f97a
Require clippy to pass when it can be installed
2018-09-15 10:11:00 -07:00
David Tolnay
48c732d077
Ignore should_implement_trait lint
...
The Parser::next method is already a public API.
2018-09-15 10:07:05 -07:00
Konrad Borowski
6cb37b8e32
Add testing whether load(dump(x)) is an identity in quickcheck
2018-09-15 19:06:39 +02:00
David Tolnay
05eb495917
Address redundant_field_names lint
2018-09-15 10:06:34 -07:00
David Tolnay
1b25db62bb
Don't yet use tool attrs because they are not stable
2018-09-15 10:02:56 -07:00
David Tolnay
5039af6862
Format with rustfmt 0.99.4
2018-09-15 09:49:08 -07:00