aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser/conversion/inline.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/conversion/inline.rs')
-rw-r--r--src/parser/conversion/inline.rs20
1 files changed, 15 insertions, 5 deletions
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,