aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp A2018-12-02 19:33:27 +0100
committerPhilipp A2018-12-02 19:33:27 +0100
commitb46de05f56960074edff80d24af48f59f163e293 (patch)
treeefaea2fe39cad695a6d91e45bb94d241dd492e06
parentc81bdf3cb38c91c42e8a40b41335a3222f807040 (diff)
downloadrust-rst-b46de05f56960074edff80d24af48f59f163e293.tar.bz2
implemented reference_target
-rw-r--r--src/parser/conversion/block.rs2
-rw-r--r--src/parser/conversion/inline.rs20
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,