pub struct Parser<T> { /* private fields */ }
Expand description
A YAML parser.
Implementations§
source§impl<'a> Parser<Chars<'a>>
impl<'a> Parser<Chars<'a>>
sourcepub fn new_from_str(value: &'a str) -> Self
pub fn new_from_str(value: &'a str) -> Self
Create a new instance of a parser from a &str.
source§impl<T: Iterator<Item = char>> Parser<T>
impl<T: Iterator<Item = char>> Parser<T>
sourcepub fn new(src: T) -> Parser<T>
pub fn new(src: T) -> Parser<T>
Create a new instance of a parser from the given input of characters.
Whether to keep tags across multiple documents when parsing.
This behavior is non-standard as per the YAML specification but can be encountered in the wild. This boolean allows enabling this non-standard extension. This would result in the parser accepting input from test QLJ7 of the yaml-test-suite:
%TAG !prefix! tag:example.com,2011:
--- !prefix!A
a: b
--- !prefix!B
c: d
--- !prefix!C
e: f
With keep_tags
set to false
, the above YAML is rejected. As per the specification, tags
only apply to the document immediately following them. This would error on !prefix!B
.
With keep_tags
set to true
, the above YAML is accepted by the parser.
sourcepub fn peek(&mut self) -> Result<&(Event, Marker), ScanError>
pub fn peek(&mut self) -> Result<&(Event, Marker), ScanError>
Try to load the next event and return it, but do not consuming it from self
.
Any subsequent call to Parser::peek
will return the same value, until a call to
Iterator::next
or Parser::load
.
§Errors
Returns ScanError
when loading the next event fails.
sourcepub fn next_token(&mut self) -> ParseResult
pub fn next_token(&mut self) -> ParseResult
Try to load the next event and return it, consuming it from self
.
§Errors
Returns ScanError
when loading the next event fails.
sourcepub fn load<R: MarkedEventReceiver>(
&mut self,
recv: &mut R,
multi: bool,
) -> Result<(), ScanError>
pub fn load<R: MarkedEventReceiver>( &mut self, recv: &mut R, multi: bool, ) -> Result<(), ScanError>
Load the YAML from the stream in self
, pushing events into recv
.
The contents of the stream are parsed and the corresponding events are sent into the
recveiver. For detailed explanations about how events work, see EventReceiver
.
If multi
is set to true
, the parser will allow parsing of multiple YAML documents
inside the stream.
Note that any EventReceiver
is also a MarkedEventReceiver
, so implementing the
former is enough to call this function.
§Errors
Returns ScanError
when loading fails.