1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//! A feature complete *BibTeX* parser using [nom](https://github.com/Geal/nom).
//!
//! **nom-bibtex** can parse the four differents types of entries listed in the
//! [BibTeX format description](http://www.bibtex.org/Format/):
//!
//! - Preambles which allows to call *LaTeX* command inside your *BibTeX*.
//! - Strings which defines abbreviations in a key-value format.
//! - Comments.
//! - Bibliography entries.
//!
//! ## Example
//!
//! ```
//! extern crate nom_bibtex;
//! use nom_bibtex::*;
//!
//! const BIBFILE_DATA: &str = r#"@preamble{
//! "A bibtex preamble" # " another test"
//! }
//!
//! @Comment{
//! Here is a comment.
//! }
//!
//! Another comment!
//!
//! @string ( name= "Charles Vandevoorde")
//! @string (github = "https://github.com/charlesvdv")
//!
//! @misc {my_citation_key,
//! author= name,
//! title = "nom-bibtex",
//! note = "Github: " # github
//! }
//! "#;
//!
//! fn main() {
//! let bibtex = Bibtex::parse(BIBFILE_DATA).unwrap();
//!
//! let preambles = bibtex.preambles();
//! assert_eq!(preambles[0], "A bibtex preamble another test");
//!
//! let comments = bibtex.comments();
//! assert_eq!(comments[0], "Here is a comment.");
//! assert_eq!(comments[1], "Another comment!");
//!
//! let variables = bibtex.variables();
//! assert_eq!(variables["name"], "Charles Vandevoorde");
//! assert_eq!(variables["github"], "https://github.com/charlesvdv");
//!
//! let biblio = &bibtex.bibliographies()[0];
//! assert_eq!(biblio.entry_type(), "misc");
//! assert_eq!(biblio.citation_key(), "my_citation_key");
//!
//! let bib_tags = biblio.tags();
//! assert_eq!(bib_tags["author"], "Charles Vandevoorde");
//! assert_eq!(bib_tags["title"], "nom-bibtex");
//! assert_eq!(bib_tags["note"], "Github: https://github.com/charlesvdv");
//! }
//! ```
//!
extern crate quick_error;
pub use ;
pub use Entry;