rst_parser/
lib.rs

1#![warn(clippy::pedantic)]
2
3mod conversion;
4mod pair_ext_parse;
5mod pest_rst;
6#[cfg(test)]
7pub mod tests;
8pub mod token;
9pub mod transforms;
10
11use anyhow::Error;
12use pest::Parser;
13
14use document_tree::Document;
15
16use self::conversion::convert_document;
17use self::pest_rst::{RstParser, Rule};
18use self::transforms::standard_transform;
19
20/// Parse into a document tree and resolve sections, but not references.
21///
22/// # Errors
23/// Returns an error if parsing fails.
24pub fn parse_only(source: &str) -> Result<Document, Error> {
25    let pairs = RstParser::parse(Rule::document, source)?;
26    convert_document(pairs)
27}
28
29/// Parse into a document tree and resolve sections and references.
30///
31/// # Errors
32/// Returns an error if parsing fails.
33pub fn parse(source: &str) -> Result<Document, Error> {
34    parse_only(source).map(standard_transform)
35}