diff options
Diffstat (limited to 'src/parser')
| -rw-r--r-- | src/parser/conversion/block.rs | 2 | ||||
| -rw-r--r-- | src/parser/conversion/inline.rs | 20 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/parser/conversion/block.rs b/src/parser/conversion/block.rs index 5a92ed6..d99f38f 100644 --- a/src/parser/conversion/block.rs +++ b/src/parser/conversion/block.rs @@ -38,7 +38,7 @@ fn convert_title(pair: Pair<Rule>) -> e::Title { match p.as_rule() { Rule::line => title = Some(p.as_str()), Rule::adornments => _adornment_char = Some(p.as_str().chars().next().expect("Empty adornment?")), - rule => panic!("Unexpected rule in title: {:?}", rule), + rule => unimplemented!("Unexpected rule in title: {:?}", rule), }; } // TODO adornment char diff --git a/src/parser/conversion/inline.rs b/src/parser/conversion/inline.rs index 0b6f659..5d75c69 100644 --- a/src/parser/conversion/inline.rs +++ b/src/parser/conversion/inline.rs @@ -19,15 +19,25 @@ 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), + rule => unimplemented!("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 mut name = None; + let mut uri = None; + let mut id = None; + let mut name_tokens = vec![]; + let concrete = pair.into_inner().next().unwrap(); + match concrete.as_rule() { + Rule::reference_target => { + let rt_inner = concrete.into_inner().next().unwrap(); // reference_target_uq or target_name_qu + name = Some(rt_inner.as_str().to_owned()); // TODO: is this right? + }, + Rule::reference_explicit => unimplemented!("explicit reference"), + Rule::reference_auto => unimplemented!("auto reference"), + _ => unreachable!(), + }; let extra = a::Reference { name: name, refuri: uri, |
