diff options
author | Titus Wormer <tituswormer@gmail.com> | 2022-07-25 17:42:20 +0200 |
---|---|---|
committer | Titus Wormer <tituswormer@gmail.com> | 2022-07-25 17:42:20 +0200 |
commit | 5ee6edf222658e73ee97871972b6fbeef444451b (patch) | |
tree | c9233c7a8584a2d027ef1b7443e3e5b59918ca2b /src/construct/partial_label.rs | |
parent | 91dc4b1f461fa76df7163f68b2a6db361a71beea (diff) | |
download | markdown-rs-5ee6edf222658e73ee97871972b6fbeef444451b.tar.gz markdown-rs-5ee6edf222658e73ee97871972b6fbeef444451b.tar.bz2 markdown-rs-5ee6edf222658e73ee97871972b6fbeef444451b.zip |
Refactor to not pass codes around
Diffstat (limited to 'src/construct/partial_label.rs')
-rw-r--r-- | src/construct/partial_label.rs | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/src/construct/partial_label.rs b/src/construct/partial_label.rs index 3bb3abf..91a0e26 100644 --- a/src/construct/partial_label.rs +++ b/src/construct/partial_label.rs @@ -96,8 +96,8 @@ struct Info { /// > | [a] /// ^ /// ``` -pub fn start(tokenizer: &mut Tokenizer, code: Code, options: Options) -> State { - match code { +pub fn start(tokenizer: &mut Tokenizer, options: Options) -> State { + match tokenizer.current { Code::Char('[') => { let info = Info { connect: false, @@ -107,10 +107,10 @@ pub fn start(tokenizer: &mut Tokenizer, code: Code, options: Options) -> State { }; tokenizer.enter(info.options.label.clone()); tokenizer.enter(info.options.marker.clone()); - tokenizer.consume(code); + tokenizer.consume(); tokenizer.exit(info.options.marker.clone()); tokenizer.enter(info.options.string.clone()); - State::Fn(Box::new(|t, c| at_break(t, c, info))) + State::Fn(Box::new(|t| at_break(t, info))) } _ => State::Nok, } @@ -122,15 +122,15 @@ pub fn start(tokenizer: &mut Tokenizer, code: Code, options: Options) -> State { /// > | [a] /// ^ /// ``` -fn at_break(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> State { - match code { +fn at_break(tokenizer: &mut Tokenizer, mut info: Info) -> State { + match tokenizer.current { Code::None | Code::Char('[') => State::Nok, Code::Char(']') if !info.data => State::Nok, _ if info.size > LINK_REFERENCE_SIZE_MAX => State::Nok, Code::Char(']') => { tokenizer.exit(info.options.string.clone()); tokenizer.enter(info.options.marker.clone()); - tokenizer.consume(code); + tokenizer.consume(); tokenizer.exit(info.options.marker.clone()); tokenizer.exit(info.options.label); State::Ok @@ -140,11 +140,11 @@ fn at_break(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> State { content_type: Some(ContentType::String), connect: info.connect, }), - |t, c| { + |t| { info.connect = true; - at_break(t, c, info) + at_break(t, info) }, - )(tokenizer, code), + )(tokenizer), _ => { tokenizer.enter_with_content(Token::Data, Some(ContentType::String)); @@ -155,7 +155,7 @@ fn at_break(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> State { info.connect = true; } - label(tokenizer, code, info) + label(tokenizer, info) } } } @@ -166,36 +166,36 @@ fn at_break(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> State { /// > | [a] /// ^ /// ``` -fn label(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> State { - match code { +fn label(tokenizer: &mut Tokenizer, mut info: Info) -> State { + match tokenizer.current { Code::None | Code::CarriageReturnLineFeed | Code::Char('\n' | '\r' | '[' | ']') => { tokenizer.exit(Token::Data); - at_break(tokenizer, code, info) + at_break(tokenizer, info) } _ if info.size > LINK_REFERENCE_SIZE_MAX => { tokenizer.exit(Token::Data); - at_break(tokenizer, code, info) + at_break(tokenizer, info) } Code::VirtualSpace | Code::Char('\t' | ' ') => { - tokenizer.consume(code); + tokenizer.consume(); info.size += 1; - State::Fn(Box::new(|t, c| label(t, c, info))) + State::Fn(Box::new(|t| label(t, info))) } Code::Char('\\') => { - tokenizer.consume(code); + tokenizer.consume(); info.size += 1; if !info.data { info.data = true; } - State::Fn(Box::new(|t, c| escape(t, c, info))) + State::Fn(Box::new(|t| escape(t, info))) } Code::Char(_) => { - tokenizer.consume(code); + tokenizer.consume(); info.size += 1; if !info.data { info.data = true; } - State::Fn(Box::new(|t, c| label(t, c, info))) + State::Fn(Box::new(|t| label(t, info))) } } } @@ -206,13 +206,13 @@ fn label(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> State { /// > | [a\*a] /// ^ /// ``` -fn escape(tokenizer: &mut Tokenizer, code: Code, mut info: Info) -> State { - match code { +fn escape(tokenizer: &mut Tokenizer, mut info: Info) -> State { + match tokenizer.current { Code::Char('[' | '\\' | ']') => { - tokenizer.consume(code); + tokenizer.consume(); info.size += 1; - State::Fn(Box::new(|t, c| label(t, c, info))) + State::Fn(Box::new(|t| label(t, info))) } - _ => label(tokenizer, code, info), + _ => label(tokenizer, info), } } |