From 99e221b84a8c2ba06d4687aee6f598852be8570e Mon Sep 17 00:00:00 2001 From: "@crashkeys.dev" Date: Tue, 11 Nov 2025 13:16:16 +0100 Subject: [PATCH] wikilink: improved state transition logic. Signed-off-by: @crashkeys.dev --- src/construct/wikilink.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/construct/wikilink.rs b/src/construct/wikilink.rs index a5a517a..76438e3 100644 --- a/src/construct/wikilink.rs +++ b/src/construct/wikilink.rs @@ -26,17 +26,21 @@ use crate::tokenizer::{Label, LabelKind, LabelStart, Tokenizer}; /// ^ /// ``` pub fn start(tokenizer: &mut Tokenizer) -> State { - let start_conditions = - tokenizer.parse_state.options.constructs.wikilink && tokenizer.current == Some(b'['); + if !tokenizer.parse_state.options.constructs.wikilink { + return State::Retry(MoveName::TextBeforeLabelStartLink); + } + + let start_conditions = tokenizer.current == Some(b'['); if start_conditions && tokenizer.tokenize_state.size == 0 { tokenizer.tokenize_state.size += 1; tokenizer.attempt( State::Next(MoveName::WikilinkStart), - State::Next(MoveName::TextBeforeLabelStartLink), + State::Retry(MoveName::TextBeforeLabelStartLink), ); + tokenizer.consume(); - return State::Ok; + State::Ok } else if start_conditions && tokenizer.tokenize_state.size == 1 { tokenizer.tokenize_state.size = 0; let start = tokenizer.events.len(); @@ -57,7 +61,8 @@ pub fn start(tokenizer: &mut Tokenizer) -> State { tokenizer.tokenize_state.size = 0; // Resume the "regular" sequence of state transitions - State::Retry(MoveName::TextBeforeLabelStartLink) + State::Nok + // State::Retry(MoveName::TextBeforeLabelStartLink) } } -- 2.51.2