blob: 893f635d52a6b43db4b9746c9a19202a5e838dc2 (
plain)
| 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
 | pub mod token;
pub mod conversion;
mod pest_rst;
#[cfg(test)]
pub mod tests;
use std::io::Write;
use failure::Error;
use pest::Parser;
use crate::document_tree::elements::Document;
use self::pest_rst::{RstParser,Rule};
use self::conversion::convert_document;
/// tokens to Document tree. resolves sections, but not references
pub fn parse(source: &str) -> Result<Document, Error> {
    let pairs = RstParser::parse(Rule::document, source)?;
    convert_document(pairs)
}
pub fn serialize_json<W>(source: &str, stream: W) -> Result<(), Error> where W: Write {
    let parsed = parse(source)?;
    serde_json::to_writer(stream, &parsed)?;
    Ok(())
}
pub fn serialize_xml<W>(source: &str, stream: W) -> Result<(), Error> where W: Write {
    let parsed = parse(source)?;
    serde_xml_rs::serialize(&parsed, stream)?;
    Ok(())
}
 |