pub enum ParsedItem<'a> {
Entry(Entry<'a>),
String(&'a str, Value<'a>),
Preamble(Value<'a>),
Comment(&'a str),
}Expand description
A raw parsed item from a BibTeX file before processing
This represents the different types of items that can appear in a BibTeX file,
returned by the low-level parse_bibtex() function. These items are in their
raw parsed form:
- String variables are not yet expanded
- Field values preserve concatenation structure
- Comments are preserved exactly as found
- All items maintain their original order
§Examples
use bibtex_parser::parser::{parse_bibtex, ParsedItem};
let input = "@string{name = \"John\"}\n@article{key, author = name}";
let items = parse_bibtex(input)?;
match &items[0] {
ParsedItem::String(var_name, value) => {
println!("String variable: {} = {:?}", var_name, value);
},
_ => {}
}
match &items[1] {
ParsedItem::Entry(entry) => {
// The author field contains a variable reference, not the expanded value
println!("Entry key: {}", entry.key());
},
_ => {}
}Variants§
Entry(Entry<'a>)
A bibliography entry (article, book, inproceedings, etc.)
Contains the entry in its raw parsed form with field values that may reference string variables or contain concatenations.
String(&'a str, Value<'a>)
A string definition (@string{name = value})
Contains the variable name and its value. The value itself may contain references to other string variables or concatenations.
Preamble(Value<'a>)
A preamble (@preamble{value})
Contains the preamble value, which may reference string variables or contain concatenations.
Comment(&'a str)
A comment (both % line comment and @comment{...})
Contains the raw comment text exactly as it appears in the source, including any whitespace and formatting.
Trait Implementations§
Source§impl<'a> Clone for ParsedItem<'a>
impl<'a> Clone for ParsedItem<'a>
Source§fn clone(&self) -> ParsedItem<'a>
fn clone(&self) -> ParsedItem<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'a> Debug for ParsedItem<'a>
impl<'a> Debug for ParsedItem<'a>
Source§impl<'a> PartialEq for ParsedItem<'a>
impl<'a> PartialEq for ParsedItem<'a>
Source§fn eq(&self, other: &ParsedItem<'a>) -> bool
fn eq(&self, other: &ParsedItem<'a>) -> bool
self and other values to be equal, and is used by ==.impl<'a> StructuralPartialEq for ParsedItem<'a>
Auto Trait Implementations§
impl<'a> Freeze for ParsedItem<'a>
impl<'a> RefUnwindSafe for ParsedItem<'a>
impl<'a> Send for ParsedItem<'a>
impl<'a> Sync for ParsedItem<'a>
impl<'a> Unpin for ParsedItem<'a>
impl<'a> UnsafeUnpin for ParsedItem<'a>
impl<'a> UnwindSafe for ParsedItem<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more