diff options
| author | Philipp A | 2018-12-02 17:22:51 +0100 | 
|---|---|---|
| committer | Philipp A | 2018-12-02 17:22:51 +0100 | 
| commit | d067cee68744691f3aebd939befc9837247e639c (patch) | |
| tree | 6f8ff1ba9617a6f55f7c667457c0f009f01300fe /src/parser/conversion/inline.rs | |
| parent | c7bf1a581871a5bb13195d116d9dc7b83eb83c3a (diff) | |
| download | rust-rst-d067cee68744691f3aebd939befc9837247e639c.tar.bz2 | |
First bit of inlines parsing
Diffstat (limited to 'src/parser/conversion/inline.rs')
| -rw-r--r-- | src/parser/conversion/inline.rs | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/src/parser/conversion/inline.rs b/src/parser/conversion/inline.rs new file mode 100644 index 0000000..0b6f659 --- /dev/null +++ b/src/parser/conversion/inline.rs @@ -0,0 +1,38 @@ +use failure::Error; +use pest::iterators::Pair; + +use crate::document_tree::{ +    ExtraAttributes, +    elements as e, +    element_categories as c, +//    attribute_types::ID, +    extra_attributes as a, +}; + +use crate::parser::{ +    pest_rst::Rule, +//    pair_ext_parse::PairExt, +}; + + +pub fn convert_inline(pair: Pair<Rule>) -> Result<c::TextOrInlineElement, Error> { +    Ok(match pair.as_rule() { +        Rule::str       => pair.as_str().into(), +        Rule::reference => convert_reference(pair)?.into(), +        rule => panic!("unknown rule {:?}", rule), +    }) +} + +fn convert_reference(pair: Pair<Rule>) -> Result<e::Reference, Error> { +    let name = None; +    let uri = None; +    let id = None; +    let name_tokens = vec![]; +    let extra = a::Reference { +        name: name, +        refuri: uri, +        refid: id, +        refname: name_tokens, +    }; +    Ok(e::Reference::with_extra(extra)) +}  | 
