diff options
| author | Philipp A | 2019-12-07 18:30:43 +0100 |
|---|---|---|
| committer | Philipp A | 2019-12-07 18:30:43 +0100 |
| commit | 2f19fa55606306964f5e4d6a08b6957f547f7066 (patch) | |
| tree | 3023a401e1c1bc1bcb86c90c80129058f34aa8ad /src/parser | |
| parent | ec53e5420b41725a14b9bf0fc5d89e90bcfb882d (diff) | |
| download | rust-rst-2f19fa55606306964f5e4d6a08b6957f547f7066.tar.bz2 | |
Add basic markup
Diffstat (limited to 'src/parser')
| -rw-r--r-- | src/parser/conversion/inline.rs | 24 | ||||
| -rw-r--r-- | src/parser/tests.rs | 17 |
2 files changed, 25 insertions, 16 deletions
diff --git a/src/parser/conversion/inline.rs b/src/parser/conversion/inline.rs index 94f99b4..79e6f12 100644 --- a/src/parser/conversion/inline.rs +++ b/src/parser/conversion/inline.rs @@ -19,9 +19,9 @@ use super::whitespace_normalize_name; 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)?, - Rule::substitution_ref => convert_substitution(pair)?.into(), + Rule::str => pair.as_str().into(), + Rule::reference => convert_reference(pair)?, + Rule::substitution_ref => convert_substitution_ref(pair)?.into(), rule => unimplemented!("unknown rule {:?}", rule), }) } @@ -142,17 +142,11 @@ fn convert_reference(pair: Pair<Rule>) -> Result<c::TextOrInlineElement, Error> ).into()) } -fn convert_substitution(pair: Pair<Rule>) -> Result<e::SubstitutionReference, Error> { - let concrete = pair.into_inner().next().unwrap(); - match concrete.as_rule() { - Rule::substitution_name => { - let name = whitespace_normalize_name(concrete.as_str()); - Ok(a::ExtraAttributes::with_extra( - a::SubstitutionReference { - refname: vec![at::NameToken(name)] - } - )) +fn convert_substitution_ref(pair: Pair<Rule>) -> Result<e::SubstitutionReference, Error> { + let name = whitespace_normalize_name(pair.as_str()); + Ok(a::ExtraAttributes::with_extra( + a::SubstitutionReference { + refname: vec![at::NameToken(name)] } - _ => unreachable!() - } + )) } diff --git a/src/parser/tests.rs b/src/parser/tests.rs index a3df64c..bf9fe22 100644 --- a/src/parser/tests.rs +++ b/src/parser/tests.rs @@ -17,6 +17,21 @@ fn plain() { } #[test] +fn emph() { + parses_to! { + parser: RstParser, + input: "line *with markup*\n", + rule: Rule::paragraph, + tokens: [ + paragraph(0, 18, [ + str(0, 5), + emph(6, 17), + ]) + ] + }; +} + +#[test] fn title() { parses_to! { parser: RstParser, @@ -125,7 +140,7 @@ A |subst| in-line tokens: [ paragraph(0, 17, [ str(0, 2), - substitution_ref(2, 9, [ substitution_name(3, 8) ]), + substitution_name(3, 8), str(9, 17), ]), substitution_def(19, 52, [ |
