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)) +} |
