pub struct ExtParser<'doc> { /* private fields */ }Expand description
Helper for parsing extension types ($ext-type) from Eure documents.
Similar API to RecordParser but for extension type fields.
§Example
let mut ext = doc.parse_extension(node_id);
let optional = ext.field_optional::<bool>("optional")?;
let binding_style = ext.field_optional::<BindingStyle>("binding-style")?;
ext.allow_unknown_fields()?;Implementations§
Source§impl<'doc> ExtParser<'doc>
impl<'doc> ExtParser<'doc>
Sourcepub fn ext<T: ParseDocument<'doc>>(
&mut self,
name: &str,
) -> Result<T, ParseError>
pub fn ext<T: ParseDocument<'doc>>( &mut self, name: &str, ) -> Result<T, ParseError>
Get a required extension field.
Returns ParseErrorKind::MissingExtension if the extension is not present.
Sourcepub fn ext_optional<T: ParseDocument<'doc>>(
&mut self,
name: &str,
) -> Result<Option<T>, ParseError>
pub fn ext_optional<T: ParseDocument<'doc>>( &mut self, name: &str, ) -> Result<Option<T>, ParseError>
Get an optional extension field.
Returns Ok(None) if the extension is not present.
Sourcepub fn ext_node(&mut self, name: &str) -> Result<NodeId, ParseError>
pub fn ext_node(&mut self, name: &str) -> Result<NodeId, ParseError>
Get the NodeId for an extension field (for manual handling).
Returns ParseErrorKind::MissingExtension if the extension is not present.
Sourcepub fn ext_node_optional(&mut self, name: &str) -> Option<NodeId>
pub fn ext_node_optional(&mut self, name: &str) -> Option<NodeId>
Get the NodeId for an optional extension field.
Returns None if the extension is not present.
Sourcepub fn deny_unknown_extensions(self) -> Result<(), ParseError>
pub fn deny_unknown_extensions(self) -> Result<(), ParseError>
Finish parsing with Deny policy (error if unknown extensions exist).
Sourcepub fn allow_unknown_extensions(self)
pub fn allow_unknown_extensions(self)
Finish parsing with Allow policy (ignore unknown extensions).
Sourcepub fn unknown_extensions(
&self,
) -> impl Iterator<Item = (&'doc Identifier, NodeId)> + '_
pub fn unknown_extensions( &self, ) -> impl Iterator<Item = (&'doc Identifier, NodeId)> + '_
Get an iterator over unknown extensions (for custom handling).
Returns (identifier, node_id) pairs for extensions that haven’t been accessed.