aboutsummaryrefslogtreecommitdiffstats
path: root/src/state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/state.rs')
-rw-r--r--src/state.rs622
1 files changed, 622 insertions, 0 deletions
diff --git a/src/state.rs b/src/state.rs
new file mode 100644
index 0000000..7e28b0c
--- /dev/null
+++ b/src/state.rs
@@ -0,0 +1,622 @@
+use crate::construct;
+use crate::content;
+use crate::tokenizer::Tokenizer;
+
+/// The result of a state.
+#[derive(Debug, PartialEq, Copy, Clone)]
+pub enum State {
+ /// Move to [`Name`][] next.
+ Next(Name),
+ /// Retry in [`Name`][].
+ Retry(Name),
+ /// The state is successful.
+ Ok,
+ /// The state is not successful.
+ Nok,
+}
+
+/// Names of functions to move to.
+#[derive(Debug, Clone, Copy, PartialEq)]
+#[allow(clippy::enum_variant_names)]
+pub enum Name {
+ AttentionStart,
+ AttentionInside,
+
+ AutolinkStart,
+ AutolinkOpen,
+ AutolinkSchemeOrEmailAtext,
+ AutolinkSchemeInsideOrEmailAtext,
+ AutolinkUrlInside,
+ AutolinkEmailAtSignOrDot,
+ AutolinkEmailAtext,
+ AutolinkEmailValue,
+ AutolinkEmailLabel,
+
+ BlankLineStart,
+ BlankLineAfter,
+
+ BlockQuoteStart,
+ BlockQuoteBefore,
+ BlockQuoteContStart,
+ BlockQuoteContBefore,
+ BlockQuoteContAfter,
+
+ BomStart,
+ BomInside,
+
+ CharacterEscapeStart,
+ CharacterEscapeInside,
+
+ CharacterReferenceStart,
+ CharacterReferenceOpen,
+ CharacterReferenceNumeric,
+ CharacterReferenceValue,
+
+ CodeFencedStart,
+ CodeFencedBeforeSequenceOpen,
+ CodeFencedSequenceOpen,
+ CodeFencedInfoBefore,
+ CodeFencedInfo,
+ CodeFencedMetaBefore,
+ CodeFencedMeta,
+ CodeFencedAtNonLazyBreak,
+ CodeFencedCloseBefore,
+ CodeFencedCloseStart,
+ CodeFencedBeforeSequenceClose,
+ CodeFencedSequenceClose,
+ CodeFencedAfterSequenceClose,
+ CodeFencedContentBefore,
+ CodeFencedContentStart,
+ CodeFencedBeforeContentChunk,
+ CodeFencedContentChunk,
+ CodeFencedAfter,
+
+ CodeIndentedStart,
+ CodeIndentedAtBreak,
+ CodeIndentedAfter,
+ CodeIndentedFurtherStart,
+ CodeIndentedInside,
+ CodeIndentedFurtherEnd,
+ CodeIndentedFurtherBegin,
+ CodeIndentedFurtherAfter,
+
+ CodeTextStart,
+ CodeTextSequenceOpen,
+ CodeTextBetween,
+ CodeTextData,
+ CodeTextSequenceClose,
+
+ DataStart,
+ DataInside,
+ DataAtBreak,
+
+ DefinitionStart,
+ DefinitionBefore,
+ DefinitionLabelAfter,
+ DefinitionMarkerAfter,
+ DefinitionDestinationBefore,
+ DefinitionDestinationAfter,
+ DefinitionDestinationMissing,
+ DefinitionTitleBefore,
+ DefinitionAfter,
+ DefinitionAfterWhitespace,
+ DefinitionTitleBeforeMarker,
+ DefinitionTitleAfter,
+ DefinitionTitleAfterOptionalWhitespace,
+
+ DestinationStart,
+ DestinationEnclosedBefore,
+ DestinationEnclosed,
+ DestinationEnclosedEscape,
+ DestinationRaw,
+ DestinationRawEscape,
+
+ DocumentStart,
+ DocumentContainerExistingBefore,
+ DocumentContainerExistingAfter,
+ DocumentContainerNewBefore,
+ DocumentContainerNewBeforeNotBlockQuote,
+ DocumentContainerNewBeforeNotList,
+ DocumentContainerNewAfter,
+ DocumentContainersAfter,
+ DocumentFlowInside,
+ DocumentFlowEnd,
+
+ FlowStart,
+ FlowBeforeCodeIndented,
+ FlowBeforeCodeFenced,
+ FlowBeforeHtml,
+ FlowBeforeHeadingAtx,
+ FlowBeforeHeadingSetext,
+ FlowBeforeThematicBreak,
+ FlowBeforeDefinition,
+ FlowAfter,
+ FlowBlankLineBefore,
+ FlowBlankLineAfter,
+ FlowBeforeParagraph,
+
+ HardBreakEscapeStart,
+ HardBreakEscapeAfter,
+
+ HeadingAtxStart,
+ HeadingAtxBefore,
+ HeadingAtxSequenceOpen,
+ HeadingAtxAtBreak,
+ HeadingAtxSequenceFurther,
+ HeadingAtxData,
+
+ HeadingSetextStart,
+ HeadingSetextBefore,
+ HeadingSetextInside,
+ HeadingSetextAfter,
+
+ HtmlFlowStart,
+ HtmlFlowBefore,
+ HtmlFlowOpen,
+ HtmlFlowDeclarationOpen,
+ HtmlFlowCommentOpenInside,
+ HtmlFlowCdataOpenInside,
+ HtmlFlowTagCloseStart,
+ HtmlFlowTagName,
+ HtmlFlowBasicSelfClosing,
+ HtmlFlowCompleteClosingTagAfter,
+ HtmlFlowCompleteEnd,
+ HtmlFlowCompleteAttributeNameBefore,
+ HtmlFlowCompleteAttributeName,
+ HtmlFlowCompleteAttributeNameAfter,
+ HtmlFlowCompleteAttributeValueBefore,
+ HtmlFlowCompleteAttributeValueQuoted,
+ HtmlFlowCompleteAttributeValueQuotedAfter,
+ HtmlFlowCompleteAttributeValueUnquoted,
+ HtmlFlowCompleteAfter,
+ HtmlFlowBlankLineBefore,
+ HtmlFlowContinuation,
+ HtmlFlowContinuationDeclarationInside,
+ HtmlFlowContinuationAfter,
+ HtmlFlowContinuationStart,
+ HtmlFlowContinuationBefore,
+ HtmlFlowContinuationCommentInside,
+ HtmlFlowContinuationRawTagOpen,
+ HtmlFlowContinuationRawEndTag,
+ HtmlFlowContinuationClose,
+ HtmlFlowContinuationCdataInside,
+ HtmlFlowContinuationStartNonLazy,
+
+ HtmlTextStart,
+ HtmlTextOpen,
+ HtmlTextDeclarationOpen,
+ HtmlTextTagCloseStart,
+ HtmlTextTagClose,
+ HtmlTextTagCloseBetween,
+ HtmlTextTagOpen,
+ HtmlTextTagOpenBetween,
+ HtmlTextTagOpenAttributeName,
+ HtmlTextTagOpenAttributeNameAfter,
+ HtmlTextTagOpenAttributeValueBefore,
+ HtmlTextTagOpenAttributeValueQuoted,
+ HtmlTextTagOpenAttributeValueQuotedAfter,
+ HtmlTextTagOpenAttributeValueUnquoted,
+ HtmlTextCdata,
+ HtmlTextCdataOpenInside,
+ HtmlTextCdataClose,
+ HtmlTextCdataEnd,
+ HtmlTextCommentOpenInside,
+ HtmlTextCommentStart,
+ HtmlTextCommentStartDash,
+ HtmlTextComment,
+ HtmlTextCommentClose,
+ HtmlTextDeclaration,
+ HtmlTextEnd,
+ HtmlTextInstruction,
+ HtmlTextInstructionClose,
+ HtmlTextLineEndingBefore,
+ HtmlTextLineEndingAfter,
+ HtmlTextLineEndingAfterPrefix,
+
+ LabelStart,
+ LabelAtBreak,
+ LabelEolAfter,
+ LabelAtBlankLine,
+ LabelEscape,
+ LabelInside,
+
+ LabelEndStart,
+ LabelEndAfter,
+ LabelEndResourceStart,
+ LabelEndResourceBefore,
+ LabelEndResourceOpen,
+ LabelEndResourceDestinationAfter,
+ LabelEndResourceDestinationMissing,
+ LabelEndResourceBetween,
+ LabelEndResourceTitleAfter,
+ LabelEndResourceEnd,
+ LabelEndOk,
+ LabelEndNok,
+ LabelEndReferenceFull,
+ LabelEndReferenceFullAfter,
+ LabelEndReferenceNotFull,
+ LabelEndReferenceCollapsed,
+ LabelEndReferenceCollapsedOpen,
+
+ LabelStartImageStart,
+ LabelStartImageOpen,
+
+ LabelStartLinkStart,
+
+ ListStart,
+ ListBefore,
+ ListNok,
+ ListBeforeOrdered,
+ ListBeforeUnordered,
+ ListValue,
+ ListMarker,
+ ListMarkerAfter,
+ ListAfter,
+ ListMarkerAfterFilled,
+ ListWhitespace,
+ ListPrefixOther,
+ ListWhitespaceAfter,
+ ListContStart,
+ ListContBlank,
+ ListContFilled,
+ ListOk,
+
+ NonLazyContinuationStart,
+ NonLazyContinuationAfter,
+
+ ParagraphStart,
+ ParagraphInside,
+
+ SpaceOrTabStart,
+ SpaceOrTabInside,
+ SpaceOrTabAfter,
+
+ SpaceOrTabEolStart,
+ SpaceOrTabEolAfterFirst,
+ SpaceOrTabEolAfterEol,
+ SpaceOrTabEolAtEol,
+ SpaceOrTabEolAfterMore,
+
+ StringStart,
+ StringBefore,
+ StringBeforeData,
+
+ TextStart,
+ TextBefore,
+ TextBeforeHtml,
+ TextBeforeHardBreakEscape,
+ TextBeforeData,
+
+ ThematicBreakStart,
+ ThematicBreakBefore,
+ ThematicBreakSequence,
+ ThematicBreakAtBreak,
+
+ TitleStart,
+ TitleBegin,
+ TitleAfterEol,
+ TitleAtBreak,
+ TitleAtBlankLine,
+ TitleEscape,
+ TitleInside,
+}
+
+#[allow(clippy::too_many_lines)]
+/// Call the corresponding function for a state name.
+pub fn call(tokenizer: &mut Tokenizer, name: Name) -> State {
+ let func = match name {
+ Name::AttentionStart => construct::attention::start,
+ Name::AttentionInside => construct::attention::inside,
+
+ Name::AutolinkStart => construct::autolink::start,
+ Name::AutolinkOpen => construct::autolink::open,
+ Name::AutolinkSchemeOrEmailAtext => construct::autolink::scheme_or_email_atext,
+ Name::AutolinkSchemeInsideOrEmailAtext => construct::autolink::scheme_inside_or_email_atext,
+ Name::AutolinkUrlInside => construct::autolink::url_inside,
+ Name::AutolinkEmailAtSignOrDot => construct::autolink::email_at_sign_or_dot,
+ Name::AutolinkEmailAtext => construct::autolink::email_atext,
+ Name::AutolinkEmailValue => construct::autolink::email_value,
+ Name::AutolinkEmailLabel => construct::autolink::email_label,
+
+ Name::BlankLineStart => construct::blank_line::start,
+ Name::BlankLineAfter => construct::blank_line::after,
+
+ Name::BlockQuoteStart => construct::block_quote::start,
+ Name::BlockQuoteBefore => construct::block_quote::before,
+ Name::BlockQuoteContStart => construct::block_quote::cont_start,
+ Name::BlockQuoteContBefore => construct::block_quote::cont_before,
+ Name::BlockQuoteContAfter => construct::block_quote::cont_after,
+
+ Name::BomStart => construct::partial_bom::start,
+ Name::BomInside => construct::partial_bom::inside,
+
+ Name::CharacterEscapeStart => construct::character_escape::start,
+ Name::CharacterEscapeInside => construct::character_escape::inside,
+
+ Name::CharacterReferenceStart => construct::character_reference::start,
+ Name::CharacterReferenceOpen => construct::character_reference::open,
+ Name::CharacterReferenceNumeric => construct::character_reference::numeric,
+ Name::CharacterReferenceValue => construct::character_reference::value,
+
+ Name::CodeFencedStart => construct::code_fenced::start,
+ Name::CodeFencedBeforeSequenceOpen => construct::code_fenced::before_sequence_open,
+ Name::CodeFencedSequenceOpen => construct::code_fenced::sequence_open,
+ Name::CodeFencedInfoBefore => construct::code_fenced::info_before,
+ Name::CodeFencedInfo => construct::code_fenced::info,
+ Name::CodeFencedMetaBefore => construct::code_fenced::meta_before,
+ Name::CodeFencedMeta => construct::code_fenced::meta,
+ Name::CodeFencedAtNonLazyBreak => construct::code_fenced::at_non_lazy_break,
+ Name::CodeFencedCloseBefore => construct::code_fenced::close_before,
+ Name::CodeFencedCloseStart => construct::code_fenced::close_start,
+ Name::CodeFencedBeforeSequenceClose => construct::code_fenced::before_sequence_close,
+ Name::CodeFencedSequenceClose => construct::code_fenced::sequence_close,
+ Name::CodeFencedAfterSequenceClose => construct::code_fenced::sequence_close_after,
+ Name::CodeFencedContentBefore => construct::code_fenced::content_before,
+ Name::CodeFencedContentStart => construct::code_fenced::content_start,
+ Name::CodeFencedBeforeContentChunk => construct::code_fenced::before_content_chunk,
+ Name::CodeFencedContentChunk => construct::code_fenced::content_chunk,
+ Name::CodeFencedAfter => construct::code_fenced::after,
+
+ Name::CodeIndentedStart => construct::code_indented::start,
+ Name::CodeIndentedAtBreak => construct::code_indented::at_break,
+ Name::CodeIndentedAfter => construct::code_indented::after,
+ Name::CodeIndentedFurtherStart => construct::code_indented::further_start,
+ Name::CodeIndentedInside => construct::code_indented::inside,
+ Name::CodeIndentedFurtherEnd => construct::code_indented::further_end,
+ Name::CodeIndentedFurtherBegin => construct::code_indented::further_begin,
+ Name::CodeIndentedFurtherAfter => construct::code_indented::further_after,
+
+ Name::CodeTextStart => construct::code_text::start,
+ Name::CodeTextSequenceOpen => construct::code_text::sequence_open,
+ Name::CodeTextBetween => construct::code_text::between,
+ Name::CodeTextData => construct::code_text::data,
+ Name::CodeTextSequenceClose => construct::code_text::sequence_close,
+
+ Name::DataStart => construct::partial_data::start,
+ Name::DataInside => construct::partial_data::inside,
+ Name::DataAtBreak => construct::partial_data::at_break,
+
+ Name::DefinitionStart => construct::definition::start,
+ Name::DefinitionBefore => construct::definition::before,
+ Name::DefinitionLabelAfter => construct::definition::label_after,
+ Name::DefinitionMarkerAfter => construct::definition::marker_after,
+ Name::DefinitionDestinationBefore => construct::definition::destination_before,
+ Name::DefinitionDestinationAfter => construct::definition::destination_after,
+ Name::DefinitionDestinationMissing => construct::definition::destination_missing,
+ Name::DefinitionTitleBefore => construct::definition::title_before,
+ Name::DefinitionAfter => construct::definition::after,
+ Name::DefinitionAfterWhitespace => construct::definition::after_whitespace,
+ Name::DefinitionTitleBeforeMarker => construct::definition::title_before_marker,
+ Name::DefinitionTitleAfter => construct::definition::title_after,
+ Name::DefinitionTitleAfterOptionalWhitespace => {
+ construct::definition::title_after_optional_whitespace
+ }
+
+ Name::DestinationStart => construct::partial_destination::start,
+ Name::DestinationEnclosedBefore => construct::partial_destination::enclosed_before,
+ Name::DestinationEnclosed => construct::partial_destination::enclosed,
+ Name::DestinationEnclosedEscape => construct::partial_destination::enclosed_escape,
+ Name::DestinationRaw => construct::partial_destination::raw,
+ Name::DestinationRawEscape => construct::partial_destination::raw_escape,
+
+ Name::DocumentStart => content::document::start,
+ Name::DocumentContainerExistingBefore => content::document::container_existing_before,
+ Name::DocumentContainerExistingAfter => content::document::container_existing_after,
+ Name::DocumentContainerNewBefore => content::document::container_new_before,
+ Name::DocumentContainerNewBeforeNotBlockQuote => {
+ content::document::container_new_before_not_block_quote
+ }
+ Name::DocumentContainerNewBeforeNotList => content::document::container_new_before_not_list,
+ Name::DocumentContainerNewAfter => content::document::container_new_after,
+ Name::DocumentContainersAfter => content::document::containers_after,
+ Name::DocumentFlowEnd => content::document::flow_end,
+ Name::DocumentFlowInside => content::document::flow_inside,
+
+ Name::FlowStart => content::flow::start,
+ Name::FlowBeforeCodeIndented => content::flow::before_code_indented,
+ Name::FlowBeforeCodeFenced => content::flow::before_code_fenced,
+ Name::FlowBeforeHtml => content::flow::before_html,
+ Name::FlowBeforeHeadingAtx => content::flow::before_heading_atx,
+ Name::FlowBeforeHeadingSetext => content::flow::before_heading_setext,
+ Name::FlowBeforeThematicBreak => content::flow::before_thematic_break,
+ Name::FlowBeforeDefinition => content::flow::before_definition,
+ Name::FlowAfter => content::flow::after,
+ Name::FlowBlankLineBefore => content::flow::blank_line_before,
+ Name::FlowBlankLineAfter => content::flow::blank_line_after,
+ Name::FlowBeforeParagraph => content::flow::before_paragraph,
+
+ Name::HardBreakEscapeStart => construct::hard_break_escape::start,
+ Name::HardBreakEscapeAfter => construct::hard_break_escape::after,
+
+ Name::HeadingAtxStart => construct::heading_atx::start,
+ Name::HeadingAtxBefore => construct::heading_atx::before,
+ Name::HeadingAtxSequenceOpen => construct::heading_atx::sequence_open,
+ Name::HeadingAtxAtBreak => construct::heading_atx::at_break,
+ Name::HeadingAtxSequenceFurther => construct::heading_atx::sequence_further,
+ Name::HeadingAtxData => construct::heading_atx::data,
+
+ Name::HeadingSetextStart => construct::heading_setext::start,
+ Name::HeadingSetextBefore => construct::heading_setext::before,
+ Name::HeadingSetextInside => construct::heading_setext::inside,
+ Name::HeadingSetextAfter => construct::heading_setext::after,
+
+ Name::HtmlFlowStart => construct::html_flow::start,
+ Name::HtmlFlowBefore => construct::html_flow::before,
+ Name::HtmlFlowOpen => construct::html_flow::open,
+ Name::HtmlFlowDeclarationOpen => construct::html_flow::declaration_open,
+ Name::HtmlFlowCommentOpenInside => construct::html_flow::comment_open_inside,
+ Name::HtmlFlowCdataOpenInside => construct::html_flow::cdata_open_inside,
+ Name::HtmlFlowTagCloseStart => construct::html_flow::tag_close_start,
+ Name::HtmlFlowTagName => construct::html_flow::tag_name,
+ Name::HtmlFlowBasicSelfClosing => construct::html_flow::basic_self_closing,
+ Name::HtmlFlowCompleteClosingTagAfter => construct::html_flow::complete_closing_tag_after,
+ Name::HtmlFlowCompleteEnd => construct::html_flow::complete_end,
+ Name::HtmlFlowCompleteAttributeNameBefore => {
+ construct::html_flow::complete_attribute_name_before
+ }
+ Name::HtmlFlowCompleteAttributeName => construct::html_flow::complete_attribute_name,
+ Name::HtmlFlowCompleteAttributeNameAfter => {
+ construct::html_flow::complete_attribute_name_after
+ }
+ Name::HtmlFlowCompleteAttributeValueBefore => {
+ construct::html_flow::complete_attribute_value_before
+ }
+ Name::HtmlFlowCompleteAttributeValueQuoted => {
+ construct::html_flow::complete_attribute_value_quoted
+ }
+ Name::HtmlFlowCompleteAttributeValueQuotedAfter => {
+ construct::html_flow::complete_attribute_value_quoted_after
+ }
+ Name::HtmlFlowCompleteAttributeValueUnquoted => {
+ construct::html_flow::complete_attribute_value_unquoted
+ }
+ Name::HtmlFlowCompleteAfter => construct::html_flow::complete_after,
+ Name::HtmlFlowBlankLineBefore => construct::html_flow::blank_line_before,
+ Name::HtmlFlowContinuation => construct::html_flow::continuation,
+ Name::HtmlFlowContinuationDeclarationInside => {
+ construct::html_flow::continuation_declaration_inside
+ }
+ Name::HtmlFlowContinuationAfter => construct::html_flow::continuation_after,
+ Name::HtmlFlowContinuationStart => construct::html_flow::continuation_start,
+ Name::HtmlFlowContinuationBefore => construct::html_flow::continuation_before,
+ Name::HtmlFlowContinuationCommentInside => {
+ construct::html_flow::continuation_comment_inside
+ }
+ Name::HtmlFlowContinuationRawTagOpen => construct::html_flow::continuation_raw_tag_open,
+ Name::HtmlFlowContinuationRawEndTag => construct::html_flow::continuation_raw_end_tag,
+ Name::HtmlFlowContinuationClose => construct::html_flow::continuation_close,
+ Name::HtmlFlowContinuationCdataInside => construct::html_flow::continuation_cdata_inside,
+ Name::HtmlFlowContinuationStartNonLazy => construct::html_flow::continuation_start_non_lazy,
+
+ Name::HtmlTextStart => construct::html_text::start,
+ Name::HtmlTextOpen => construct::html_text::open,
+ Name::HtmlTextDeclarationOpen => construct::html_text::declaration_open,
+ Name::HtmlTextTagCloseStart => construct::html_text::tag_close_start,
+ Name::HtmlTextTagClose => construct::html_text::tag_close,
+ Name::HtmlTextTagCloseBetween => construct::html_text::tag_close_between,
+ Name::HtmlTextTagOpen => construct::html_text::tag_open,
+ Name::HtmlTextTagOpenBetween => construct::html_text::tag_open_between,
+ Name::HtmlTextTagOpenAttributeName => construct::html_text::tag_open_attribute_name,
+ Name::HtmlTextTagOpenAttributeNameAfter => {
+ construct::html_text::tag_open_attribute_name_after
+ }
+ Name::HtmlTextTagOpenAttributeValueBefore => {
+ construct::html_text::tag_open_attribute_value_before
+ }
+ Name::HtmlTextTagOpenAttributeValueQuoted => {
+ construct::html_text::tag_open_attribute_value_quoted
+ }
+ Name::HtmlTextTagOpenAttributeValueQuotedAfter => {
+ construct::html_text::tag_open_attribute_value_quoted_after
+ }
+ Name::HtmlTextTagOpenAttributeValueUnquoted => {
+ construct::html_text::tag_open_attribute_value_unquoted
+ }
+ Name::HtmlTextCdata => construct::html_text::cdata,
+ Name::HtmlTextCdataOpenInside => construct::html_text::cdata_open_inside,
+ Name::HtmlTextCdataClose => construct::html_text::cdata_close,
+ Name::HtmlTextCdataEnd => construct::html_text::cdata_end,
+ Name::HtmlTextCommentOpenInside => construct::html_text::comment_open_inside,
+ Name::HtmlTextCommentStart => construct::html_text::comment_start,
+ Name::HtmlTextCommentStartDash => construct::html_text::comment_start_dash,
+ Name::HtmlTextComment => construct::html_text::comment,
+ Name::HtmlTextCommentClose => construct::html_text::comment_close,
+ Name::HtmlTextDeclaration => construct::html_text::declaration,
+ Name::HtmlTextEnd => construct::html_text::end,
+ Name::HtmlTextInstruction => construct::html_text::instruction,
+ Name::HtmlTextInstructionClose => construct::html_text::instruction_close,
+ Name::HtmlTextLineEndingBefore => construct::html_text::line_ending_before,
+ Name::HtmlTextLineEndingAfter => construct::html_text::line_ending_after,
+ Name::HtmlTextLineEndingAfterPrefix => construct::html_text::line_ending_after_prefix,
+
+ Name::LabelStart => construct::partial_label::start,
+ Name::LabelAtBreak => construct::partial_label::at_break,
+ Name::LabelEolAfter => construct::partial_label::eol_after,
+ Name::LabelAtBlankLine => construct::partial_label::at_blank_line,
+ Name::LabelEscape => construct::partial_label::escape,
+ Name::LabelInside => construct::partial_label::inside,
+
+ Name::LabelEndStart => construct::label_end::start,
+ Name::LabelEndAfter => construct::label_end::after,
+ Name::LabelEndResourceStart => construct::label_end::resource_start,
+ Name::LabelEndResourceBefore => construct::label_end::resource_before,
+ Name::LabelEndResourceOpen => construct::label_end::resource_open,
+ Name::LabelEndResourceDestinationAfter => construct::label_end::resource_destination_after,
+ Name::LabelEndResourceDestinationMissing => {
+ construct::label_end::resource_destination_missing
+ }
+ Name::LabelEndResourceBetween => construct::label_end::resource_between,
+ Name::LabelEndResourceTitleAfter => construct::label_end::resource_title_after,
+ Name::LabelEndResourceEnd => construct::label_end::resource_end,
+ Name::LabelEndOk => construct::label_end::ok,
+ Name::LabelEndNok => construct::label_end::nok,
+ Name::LabelEndReferenceFull => construct::label_end::reference_full,
+ Name::LabelEndReferenceFullAfter => construct::label_end::reference_full_after,
+ Name::LabelEndReferenceNotFull => construct::label_end::reference_not_full,
+ Name::LabelEndReferenceCollapsed => construct::label_end::reference_collapsed,
+ Name::LabelEndReferenceCollapsedOpen => construct::label_end::reference_collapsed_open,
+
+ Name::LabelStartImageStart => construct::label_start_image::start,
+ Name::LabelStartImageOpen => construct::label_start_image::open,
+ Name::LabelStartLinkStart => construct::label_start_link::start,
+
+ Name::ListStart => construct::list::start,
+ Name::ListBefore => construct::list::before,
+ Name::ListNok => construct::list::nok,
+ Name::ListBeforeOrdered => construct::list::before_ordered,
+ Name::ListBeforeUnordered => construct::list::before_unordered,
+ Name::ListValue => construct::list::value,
+ Name::ListMarker => construct::list::marker,
+ Name::ListMarkerAfter => construct::list::marker_after,
+ Name::ListAfter => construct::list::after,
+ Name::ListMarkerAfterFilled => construct::list::marker_after_filled,
+ Name::ListWhitespace => construct::list::whitespace,
+ Name::ListWhitespaceAfter => construct::list::whitespace_after,
+ Name::ListPrefixOther => construct::list::prefix_other,
+ Name::ListContStart => construct::list::cont_start,
+ Name::ListContBlank => construct::list::cont_blank,
+ Name::ListContFilled => construct::list::cont_filled,
+ Name::ListOk => construct::list::ok,
+
+ Name::NonLazyContinuationStart => construct::partial_non_lazy_continuation::start,
+ Name::NonLazyContinuationAfter => construct::partial_non_lazy_continuation::after,
+
+ Name::ParagraphStart => construct::paragraph::start,
+ Name::ParagraphInside => construct::paragraph::inside,
+
+ Name::SpaceOrTabStart => construct::partial_space_or_tab::start,
+ Name::SpaceOrTabInside => construct::partial_space_or_tab::inside,
+ Name::SpaceOrTabAfter => construct::partial_space_or_tab::after,
+
+ Name::SpaceOrTabEolStart => construct::partial_space_or_tab::eol_start,
+ Name::SpaceOrTabEolAfterFirst => construct::partial_space_or_tab::eol_after_first,
+ Name::SpaceOrTabEolAfterEol => construct::partial_space_or_tab::eol_after_eol,
+ Name::SpaceOrTabEolAtEol => construct::partial_space_or_tab::eol_at_eol,
+ Name::SpaceOrTabEolAfterMore => construct::partial_space_or_tab::eol_after_more,
+
+ Name::StringStart => content::string::start,
+ Name::StringBefore => content::string::before,
+ Name::StringBeforeData => content::string::before_data,
+
+ Name::TextStart => content::text::start,
+ Name::TextBefore => content::text::before,
+ Name::TextBeforeHtml => content::text::before_html,
+ Name::TextBeforeHardBreakEscape => content::text::before_hard_break_escape,
+ Name::TextBeforeData => content::text::before_data,
+
+ Name::ThematicBreakStart => construct::thematic_break::start,
+ Name::ThematicBreakBefore => construct::thematic_break::before,
+ Name::ThematicBreakSequence => construct::thematic_break::sequence,
+ Name::ThematicBreakAtBreak => construct::thematic_break::at_break,
+
+ Name::TitleStart => construct::partial_title::start,
+ Name::TitleBegin => construct::partial_title::begin,
+ Name::TitleAfterEol => construct::partial_title::after_eol,
+ Name::TitleAtBreak => construct::partial_title::at_break,
+ Name::TitleAtBlankLine => construct::partial_title::at_blank_line,
+ Name::TitleEscape => construct::partial_title::escape,
+ Name::TitleInside => construct::partial_title::inside,
+ };
+
+ func(tokenizer)
+}