diff options
Diffstat (limited to 'parser/src/lib.rs')
| -rw-r--r-- | parser/src/lib.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/parser/src/lib.rs b/parser/src/lib.rs new file mode 100644 index 0000000..23e97c7 --- /dev/null +++ b/parser/src/lib.rs @@ -0,0 +1,28 @@ +pub mod token; +mod conversion; +mod simplify; +mod pest_rst; +mod pair_ext_parse; +#[cfg(test)] +pub mod tests; + +use failure::Error; +use pest::Parser; + +use document_tree::Document; + +use self::pest_rst::{RstParser,Rule}; +use self::conversion::convert_document; +use self::simplify::resolve_references; + + +/// Parse into a document tree and resolve sections, but not references. +pub fn parse_only(source: &str) -> Result<Document, Error> { + let pairs = RstParser::parse(Rule::document, source)?; + convert_document(pairs) +} + +/// Parse into a document tree and resolve sections and references. +pub fn parse(source: &str) -> Result<Document, Error> { + parse_only(source).map(resolve_references) +} |
