Expand description
YAML 1.2 parser implementation in pure Rust.
granit-parser is a low-level event parser. It reads YAML input and yields a stream of
Event values paired with their source Span.
Comments are emitted as Event::Comment. They are presentation metadata, not YAML data
nodes, so consumers building YAML value trees should ignore them.
Add it to your project:
cargo add granit-parser§Usage
use granit_parser::{Event, Parser, Placement};
let yaml = r#"# header
items: # inline
- milk
- bread
"#;
let mut comments = Vec::new();
for next in Parser::new_from_str(yaml) {
let (event, span) = next?;
if let Event::Comment(text, placement) = event {
comments.push((
text.into_owned(),
placement,
span.slice(yaml).unwrap().to_owned(),
));
}
}
assert_eq!(
comments,
[
(" header".to_owned(), Placement::Above, "# header".to_owned()),
(" inline".to_owned(), Placement::Right, "# inline".to_owned()),
]
);For comment events, the companion Span covers the whole source comment, including # and
excluding the line break. With Parser::new_from_str, Span::slice returns that source
comment text.
§Features
Note: This crate’s MSRV is 1.81.0.
§debug_prints
Enables the debug module and usage of debug prints in the scanner and the parser. Do not
enable if you are consuming the crate rather than working on it as this can significantly
decrease performance. Output remains opt-in behind a local compile-time toggle in
src/debug.rs.
This feature does not raise the MSRV further.
This feature is not no_std compatible.
Re-exports§
pub use crate::input::BorrowedInput;pub use crate::input::BufferedInput;pub use crate::input::Input;
Modules§
- input
- Utilities to create a source of input to the parser.
- parser_
stack - A stack-based parser implementation.
Structs§
- Comment
- A YAML comment captured from the source.
- Marker
- A location in a YAML document.
- Parser
- A YAML parser.
- Scan
Error - An error that occurred while scanning.
- Scanner
- The YAML scanner.
- Span
- A range of locations in a YAML document.
- StrInput
- A parser input backed by a
&str. - Tag
- A YAML tag.
- Token
- A scanner token.
Enums§
- Event
- An event generated by the YAML parser.
- Placement
- A positional hint for a YAML source comment.
- Scalar
Style - The source style used for a YAML scalar.
- Structure
Style - The notation style used for a YAML sequence or mapping.
- Token
Type - The contents of a scanner token.
- TryLoad
Error - Error returned by
Parser::try_loadandParserTrait::try_load.
Traits§
- Event
Receiver - Trait to be implemented in order to use the low-level parsing API.
- Parser
Trait - Trait extracted from
Parserto support mocking and alternative implementations. - Spanned
Event Receiver - Trait to be implemented for using the low-level parsing API.
- TryEvent
Receiver - Trait to be implemented for fallible event handling without source spans.
- TrySpanned
Event Receiver - Trait to be implemented for fallible event handling with source spans.