diff options
| author | Philipp A | 2018-12-02 19:33:27 +0100 | 
|---|---|---|
| committer | Philipp A | 2018-12-02 19:33:27 +0100 | 
| commit | b46de05f56960074edff80d24af48f59f163e293 (patch) | |
| tree | efaea2fe39cad695a6d91e45bb94d241dd492e06 | |
| parent | c81bdf3cb38c91c42e8a40b41335a3222f807040 (diff) | |
| download | rust-rst-b46de05f56960074edff80d24af48f59f163e293.tar.bz2 | |
implemented reference_target
| -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, | 
