aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-07-15 12:34:23 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-07-15 12:36:36 +0200
commit66c70d1b917976c32b770e5d724fc4e47a2309c6 (patch)
treefaac63df2b0687d15f7de556d765f6c93a3d7dd1
parent21dbf42b5e5979fb30837bbb3b2638dcf5711249 (diff)
downloadmarkdown-rs-66c70d1b917976c32b770e5d724fc4e47a2309c6.tar.gz
markdown-rs-66c70d1b917976c32b770e5d724fc4e47a2309c6.tar.bz2
markdown-rs-66c70d1b917976c32b770e5d724fc4e47a2309c6.zip
Refactor to sort, document lists in token
Diffstat (limited to '')
-rw-r--r--src/compiler.rs3
-rw-r--r--src/constant.rs1
-rw-r--r--src/token.rs139
3 files changed, 131 insertions, 12 deletions
diff --git a/src/compiler.rs b/src/compiler.rs
index 7b50147..6484aaa 100644
--- a/src/compiler.rs
+++ b/src/compiler.rs
@@ -723,8 +723,7 @@ fn on_enter_list(context: &mut CompileContext) {
// Blank line directly in list or directly in list item,
// but not a blank line after an empty list item.
- if balance < 3 && event.token_type == Token::BlankLineEnding
- {
+ if balance < 3 && event.token_type == Token::BlankLineEnding {
let at_marker = balance == 2
&& events[skip::opt_back(
events,
diff --git a/src/constant.rs b/src/constant.rs
index 2c74083..a5ace28 100644
--- a/src/constant.rs
+++ b/src/constant.rs
@@ -193,7 +193,6 @@ pub const HTML_RAW_SIZE_MAX: usize = 8;
/// To safeguard performance, labels are capped at a large number: `999`.
pub const LINK_REFERENCE_SIZE_MAX: usize = 999;
-
/// The max number of decimals allowed to form an (ordered) [list][] item.
///
/// `CommonMark` caps this at 10 digits (9 is fine, 10 not).
diff --git a/src/token.rs b/src/token.rs
index 889c3ba..825b9cd 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -1386,6 +1386,136 @@ pub enum Token {
/// ^^^^^^
/// ```
Link,
+ /// List item.
+ ///
+ /// ## Info
+ ///
+ /// * **Context**:
+ /// [`ListOrdered`][Token::ListOrdered],
+ /// [`ListUnordered`][Token::ListUnordered],
+ /// * **Content model**:
+ /// [`ListItemPrefix`][Token::ListItemPrefix],
+ /// [flow content][crate::content::flow]
+ /// * **Construct**:
+ /// [`list`][crate::construct::list]
+ ///
+ /// ## Example
+ ///
+ /// ```markdown
+ /// > | * a
+ /// ^^^
+ /// > | 1. b
+ /// ^^^^
+ /// ```
+ ListItem,
+ /// List item (marker).
+ ///
+ /// ## Info
+ ///
+ /// * **Context**:
+ /// [`ListItemPrefix`][Token::ListItemPrefix]
+ /// * **Content model**:
+ /// void
+ /// * **Construct**:
+ /// [`list`][crate::construct::list]
+ ///
+ /// ## Example
+ ///
+ /// ```markdown
+ /// > | * a
+ /// ^
+ /// > | 1. b
+ /// ^
+ /// ```
+ ListItemMarker,
+ /// List item (prefix).
+ ///
+ /// ## Info
+ ///
+ /// * **Context**:
+ /// [`ListItem`][Token::ListItem]
+ /// * **Content model**:
+ /// [`ListItemMarker`][Token::ListItemMarker],
+ /// [`ListItemValue`][Token::ListItemValue],
+ /// [`SpaceOrTab`][Token::SpaceOrTab]
+ /// * **Construct**:
+ /// [`list`][crate::construct::list]
+ ///
+ /// ## Example
+ ///
+ /// ```markdown
+ /// > | * a
+ /// ^^
+ /// > | b
+ /// ^^
+ /// ```
+ ListItemPrefix,
+ /// List item (value).
+ ///
+ /// ## Info
+ ///
+ /// * **Context**:
+ /// [`ListItemPrefix`][Token::ListItemPrefix]
+ /// * **Content model**:
+ /// void
+ /// * **Construct**:
+ /// [`list`][crate::construct::list]
+ ///
+ /// ## Example
+ ///
+ /// ```markdown
+ /// > | 1. b
+ /// ^
+ /// ```
+ ListItemValue,
+ /// List (ordered).
+ ///
+ /// ## Info
+ ///
+ /// * **Context**:
+ /// [document content][crate::content::document]
+ /// * **Content model**:
+ /// [`BlankLineEnding`][Token::BlankLineEnding],
+ /// [`BlockQuotePrefix`][Token::BlockQuotePrefix],
+ /// [`ListItem`][Token::ListItem],
+ /// [`LineEnding`][Token::LineEnding],
+ /// [`SpaceOrTab`][Token::SpaceOrTab]
+ /// * **Construct**:
+ /// [`list`][crate::construct::list]
+ ///
+ /// ## Example
+ ///
+ /// ```markdown
+ /// > | 1. a
+ /// ^^^^
+ /// > | 2. b
+ /// ^^^^
+ /// ```
+ ListOrdered,
+ /// List (unordered).
+ ///
+ /// ## Info
+ ///
+ /// * **Context**:
+ /// [document content][crate::content::document]
+ /// * **Content model**:
+ /// [`BlankLineEnding`][Token::BlankLineEnding],
+ /// [`BlockQuotePrefix`][Token::BlockQuotePrefix],
+ /// [`ListItem`][Token::ListItem],
+ /// [`LineEnding`][Token::LineEnding],
+ /// [`SpaceOrTab`][Token::SpaceOrTab]
+ /// * **Construct**:
+ /// [`list`][crate::construct::list]
+ ///
+ /// ## Example
+ ///
+ /// ```markdown
+ /// > | * a
+ /// ^^^
+ /// > | * b
+ /// ^^^
+ /// ```
+ ListUnordered,
/// Whole paragraph.
///
/// ## Info
@@ -1765,13 +1895,4 @@ pub enum Token {
/// ^ ^ ^
/// ```
ThematicBreakSequence,
-
- // To do: sort.
- ListOrdered,
- ListUnordered,
- ListItem,
- ListItemPrefix,
- ListItemValue,
- ListItemMarker,
- // ListItemPrefixSpaceOrTab,
}