1mod elements;
2mod error;
3mod locale;
4mod lookup;
5mod parser;
6mod queries;
7
8#[cfg(test)]
9mod tests;
10
11pub mod prelude;
12mod printer;
13
14use parser::Parser;
15use printer::Printer;
16
17pub use printer::{HtmlPrinter, TerminalPrinter, TextPrinter};
18
19pub use elements::{
20 Attribute, Document, Element, Embed, Field, Flag, Item, Section, SectionElement,
21};
22pub use error::Error;
23pub use locale::{DefaultLocale, Locale};
24pub use lookup::lookup_line;
25pub use queries::{AttributeQuery, EmbedQuery, FieldQuery, FlagQuery, SectionQuery};
26
27pub fn parse(input: &str) -> Result<Document, Error> {
28 Parser::<DefaultLocale>::parse(input, Box::new(TextPrinter))
29}
30
31pub fn parse_with_locale<L: Locale>(input: &str) -> Result<Document, Error> {
32 Parser::<L>::parse(input, Box::new(TextPrinter))
33}
34
35pub fn parse_with_locale_and_printer<L: Locale>(
36 input: &str,
37 printer: Box<dyn Printer>,
38) -> Result<Document, Error> {
39 Parser::<L>::parse(input, printer)
40}
41
42pub fn parse_with_printer(input: &str, printer: Box<dyn Printer>) -> Result<Document, Error> {
43 Parser::<DefaultLocale>::parse(input, printer)
44}