aboutsummaryrefslogtreecommitdiffstats
path: root/src/content
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-22 14:43:42 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-22 14:43:42 +0200
commit33b69eb9189fb2fd0f731530285baf3ac20c5eb0 (patch)
treefb4ad9ad645192b67f01b4727136d0a298b71909 /src/content
parent0fcfeaf05a95ea17763a72d91b6aa1c01843d067 (diff)
downloadmarkdown-rs-33b69eb9189fb2fd0f731530285baf3ac20c5eb0.tar.gz
markdown-rs-33b69eb9189fb2fd0f731530285baf3ac20c5eb0.tar.bz2
markdown-rs-33b69eb9189fb2fd0f731530285baf3ac20c5eb0.zip
Refactor to improve tokenizer, add docs
Diffstat (limited to 'src/content')
-rw-r--r--src/content/flow.rs18
-rw-r--r--src/content/string.rs7
-rw-r--r--src/content/text.rs18
3 files changed, 24 insertions, 19 deletions
diff --git a/src/content/flow.rs b/src/content/flow.rs
index 481c8ff..6283fef 100644
--- a/src/content/flow.rs
+++ b/src/content/flow.rs
@@ -94,14 +94,16 @@ fn blank_line_after(tokenizer: &mut Tokenizer, code: Code) -> StateFnResult {
fn initial_before(tokenizer: &mut Tokenizer, code: Code) -> StateFnResult {
match code {
Code::None => (State::Ok, None),
- _ => tokenizer.attempt_7(
- code_indented,
- code_fenced,
- html_flow,
- heading_atx,
- thematic_break,
- definition,
- heading_setext,
+ _ => tokenizer.attempt_n(
+ vec![
+ Box::new(code_indented),
+ Box::new(code_fenced),
+ Box::new(html_flow),
+ Box::new(heading_atx),
+ Box::new(thematic_break),
+ Box::new(definition),
+ Box::new(heading_setext),
+ ],
|ok| Box::new(if ok { after } else { before_paragraph }),
)(tokenizer, code),
}
diff --git a/src/content/string.rs b/src/content/string.rs
index 3338c90..53e88b1 100644
--- a/src/content/string.rs
+++ b/src/content/string.rs
@@ -33,9 +33,10 @@ const MARKERS: [Code; 2] = [
pub fn start(tokenizer: &mut Tokenizer, code: Code) -> StateFnResult {
match code {
Code::None => (State::Ok, None),
- _ => tokenizer.attempt_2(character_reference, character_escape, |ok| {
- Box::new(if ok { start } else { before_data })
- })(tokenizer, code),
+ _ => tokenizer.attempt_n(
+ vec![Box::new(character_reference), Box::new(character_escape)],
+ |ok| Box::new(if ok { start } else { before_data }),
+ )(tokenizer, code),
}
}
diff --git a/src/content/text.rs b/src/content/text.rs
index 857e9a0..1224064 100644
--- a/src/content/text.rs
+++ b/src/content/text.rs
@@ -45,14 +45,16 @@ const MARKERS: [Code; 5] = [
pub fn start(tokenizer: &mut Tokenizer, code: Code) -> StateFnResult {
match code {
Code::None => (State::Ok, None),
- _ => tokenizer.attempt_7(
- character_reference,
- character_escape,
- hard_break_escape,
- hard_break_trailing,
- autolink,
- html_text,
- code_text,
+ _ => tokenizer.attempt_n(
+ vec![
+ Box::new(character_reference),
+ Box::new(character_escape),
+ Box::new(hard_break_escape),
+ Box::new(hard_break_trailing),
+ Box::new(autolink),
+ Box::new(html_text),
+ Box::new(code_text),
+ ],
|ok| Box::new(if ok { start } else { before_data }),
)(tokenizer, code),
}