diff options
| author | 2022-08-25 13:16:45 +0200 | |
|---|---|---|
| committer | 2022-08-25 13:16:45 +0200 | |
| commit | 1e4c95079cb97b2b02440b21945c6d12741a7d19 (patch) | |
| tree | 4f6a4a179e72630c1cdd058f84498e32b9a433e0 /src/construct/text.rs | |
| parent | 49b6a4e72516e8b2a8768e761a60a4f461802d69 (diff) | |
| download | markdown-rs-1e4c95079cb97b2b02440b21945c6d12741a7d19.tar.gz markdown-rs-1e4c95079cb97b2b02440b21945c6d12741a7d19.tar.bz2 markdown-rs-1e4c95079cb97b2b02440b21945c6d12741a7d19.zip  | |
Add support for GFM footnotes
Diffstat (limited to '')
| -rw-r--r-- | src/construct/text.rs | 24 | 
1 files changed, 21 insertions, 3 deletions
diff --git a/src/construct/text.rs b/src/construct/text.rs index 65f55d4..5535e3f 100644 --- a/src/construct/text.rs +++ b/src/construct/text.rs @@ -11,6 +11,8 @@  //! *   [Character escape][crate::construct::character_escape]  //! *   [Character reference][crate::construct::character_reference]  //! *   [Code (text)][crate::construct::code_text] +//! *   [GFM: Label start (footnote)][crate::construct::gfm_label_start_footnote] +//! *   [GFM: Task list item check][crate::construct::gfm_task_list_item_check]  //! *   [Hard break (escape)][crate::construct::hard_break_escape]  //! *   [HTML (text)][crate::construct::html_text]  //! *   [Label start (image)][crate::construct::label_start_image] @@ -34,7 +36,7 @@ const MARKERS: [u8; 10] = [      b'<',  // `autolink`, `html_text`      b'[',  // `label_start_link`      b'\\', // `character_escape`, `hard_break_escape` -    b']',  // `label_end` +    b']',  // `label_end`, `gfm_label_start_footnote`      b'_',  // `attention`      b'`',  // `code_text`      b'~',  // `attention` (w/ `gfm_strikethrough`) @@ -104,9 +106,9 @@ pub fn before(tokenizer: &mut Tokenizer) -> State {          Some(b'[') => {              tokenizer.attempt(                  State::Next(StateName::TextBefore), -                State::Next(StateName::TextBeforeData), +                State::Next(StateName::TextBeforeLabelStartLink),              ); -            State::Retry(StateName::LabelStartLinkStart) +            State::Retry(StateName::GfmLabelStartFootnoteStart)          }          Some(b'\\') => {              tokenizer.attempt( @@ -165,6 +167,22 @@ pub fn before_hard_break_escape(tokenizer: &mut Tokenizer) -> State {      State::Retry(StateName::HardBreakEscapeStart)  } +/// Before label start (link). +/// +/// At `[`, which wasn’t a GFM label start (footnote). +/// +/// ```markdown +/// > | [a](b) +///     ^ +/// ``` +pub fn before_label_start_link(tokenizer: &mut Tokenizer) -> State { +    tokenizer.attempt( +        State::Next(StateName::TextBefore), +        State::Next(StateName::TextBeforeData), +    ); +    State::Retry(StateName::LabelStartLinkStart) +} +  /// Before data.  ///  /// ```markdown  | 
