diff options
-rw-r--r-- | src/constant.rs | 5 | ||||
-rw-r--r-- | src/construct/blank_line.rs | 4 | ||||
-rw-r--r-- | src/construct/list_item.rs (renamed from src/construct/list.rs) | 42 | ||||
-rw-r--r-- | src/construct/mod.rs | 4 | ||||
-rw-r--r-- | src/construct/thematic_break.rs | 4 | ||||
-rw-r--r-- | src/content/document.rs | 6 | ||||
-rw-r--r-- | src/event.rs | 12 | ||||
-rw-r--r-- | src/lib.rs | 6 | ||||
-rw-r--r-- | src/resolve.rs | 2 | ||||
-rw-r--r-- | src/state.rs | 60 | ||||
-rw-r--r-- | tests/list.rs | 2 |
11 files changed, 74 insertions, 73 deletions
diff --git a/src/constant.rs b/src/constant.rs index 6ef851c..47cb50c 100644 --- a/src/constant.rs +++ b/src/constant.rs @@ -202,7 +202,8 @@ 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. +/// The max number of decimals allowed to form an (ordered) +/// [list item][list-item]. /// /// `CommonMark` caps this at 10 digits (9 is fine, 10 not). /// This limit is imposed because bigger numbers result in integer overflows @@ -212,7 +213,7 @@ pub const LINK_REFERENCE_SIZE_MAX: usize = 999; /// /// * [*§ 5.2 List items* in `CommonMark`](https://spec.commonmark.org/0.30/#ordered-list-marker) /// -/// [list]: crate::construct::list +/// [list-item]: crate::construct::list_item pub const LIST_ITEM_VALUE_SIZE_MAX: usize = 10; /// Maximum allowed unbalanced parens in destination. diff --git a/src/construct/blank_line.rs b/src/construct/blank_line.rs index 7f1d023..87d257d 100644 --- a/src/construct/blank_line.rs +++ b/src/construct/blank_line.rs @@ -12,7 +12,7 @@ //! such as between two [heading (atx)][heading-atx]s. //! Sometimes, whether blank lines are present, changes the behavior of how //! HTML is rendered, such as whether blank lines are present between list -//! items in a [list][]. +//! items in a [list][list-item]. //! More than one blank line is never needed in `CommonMark`. //! //! Because blank lines can be empty (line endings are not considered part of @@ -28,7 +28,7 @@ //! * [*§ 4.9 Blank lines* in `CommonMark`](https://spec.commonmark.org/0.30/#blank-lines) //! //! [heading-atx]: crate::construct::heading_atx -//! [list]: crate::construct::list +//! [list-item]: crate::construct::list_item //! [paragraph]: crate::construct::paragraph //! [flow]: crate::content::flow diff --git a/src/construct/list.rs b/src/construct/list_item.rs index 596330c..5161254 100644 --- a/src/construct/list.rs +++ b/src/construct/list_item.rs @@ -1,4 +1,4 @@ -//! List is a construct that occurs in the [document][] content type. +//! List item is a construct that occurs in the [document][] content type. //! //! It forms with, roughly, the following BNF: //! @@ -62,11 +62,11 @@ use crate::util::{ /// ^ /// ``` pub fn start(tokenizer: &mut Tokenizer) -> State { - if tokenizer.parse_state.constructs.list { + if tokenizer.parse_state.constructs.list_item { tokenizer.enter(Name::ListItem); if matches!(tokenizer.current, Some(b'\t' | b' ')) { - tokenizer.attempt(State::Next(StateName::ListBefore), State::Nok); + tokenizer.attempt(State::Next(StateName::ListItemBefore), State::Nok); State::Retry(space_or_tab_min_max( tokenizer, 0, @@ -77,7 +77,7 @@ pub fn start(tokenizer: &mut Tokenizer) -> State { }, )) } else { - State::Retry(StateName::ListBefore) + State::Retry(StateName::ListItemBefore) } } else { State::Nok @@ -93,16 +93,16 @@ pub fn start(tokenizer: &mut Tokenizer) -> State { pub fn before(tokenizer: &mut Tokenizer) -> State { // Unordered. if matches!(tokenizer.current, Some(b'*' | b'-')) { - tokenizer.check(State::Nok, State::Next(StateName::ListBeforeUnordered)); + tokenizer.check(State::Nok, State::Next(StateName::ListItemBeforeUnordered)); State::Retry(StateName::ThematicBreakStart) } else if tokenizer.current == Some(b'+') { - State::Retry(StateName::ListBeforeUnordered) + State::Retry(StateName::ListItemBeforeUnordered) } // Ordered. else if tokenizer.current == Some(b'1') || (matches!(tokenizer.current, Some(b'0'..=b'9')) && !tokenizer.interrupt) { - State::Retry(StateName::ListBeforeOrdered) + State::Retry(StateName::ListItemBeforeOrdered) } else { State::Nok } @@ -118,7 +118,7 @@ pub fn before(tokenizer: &mut Tokenizer) -> State { /// ``` pub fn before_unordered(tokenizer: &mut Tokenizer) -> State { tokenizer.enter(Name::ListItemPrefix); - State::Retry(StateName::ListMarker) + State::Retry(StateName::ListItemMarker) } /// At ordered list item value. @@ -130,7 +130,7 @@ pub fn before_unordered(tokenizer: &mut Tokenizer) -> State { pub fn before_ordered(tokenizer: &mut Tokenizer) -> State { tokenizer.enter(Name::ListItemPrefix); tokenizer.enter(Name::ListItemValue); - State::Retry(StateName::ListValue) + State::Retry(StateName::ListItemValue) } /// In ordered list item value. @@ -144,13 +144,13 @@ pub fn value(tokenizer: &mut Tokenizer) -> State { && (!tokenizer.interrupt || tokenizer.tokenize_state.size < 2) { tokenizer.exit(Name::ListItemValue); - State::Retry(StateName::ListMarker) + State::Retry(StateName::ListItemMarker) } else if matches!(tokenizer.current, Some(b'0'..=b'9')) && tokenizer.tokenize_state.size + 1 < LIST_ITEM_VALUE_SIZE_MAX { tokenizer.tokenize_state.size += 1; tokenizer.consume(); - State::Next(StateName::ListValue) + State::Next(StateName::ListItemValue) } else { tokenizer.tokenize_state.size = 0; State::Nok @@ -169,7 +169,7 @@ pub fn marker(tokenizer: &mut Tokenizer) -> State { tokenizer.enter(Name::ListItemMarker); tokenizer.consume(); tokenizer.exit(Name::ListItemMarker); - State::Next(StateName::ListMarkerAfter) + State::Next(StateName::ListItemMarkerAfter) } /// After list item marker. @@ -183,8 +183,8 @@ pub fn marker(tokenizer: &mut Tokenizer) -> State { pub fn marker_after(tokenizer: &mut Tokenizer) -> State { tokenizer.tokenize_state.size = 1; tokenizer.check( - State::Next(StateName::ListAfter), - State::Next(StateName::ListMarkerAfterFilled), + State::Next(StateName::ListItemAfter), + State::Next(StateName::ListItemMarkerAfterFilled), ); State::Retry(StateName::BlankLineStart) } @@ -202,10 +202,10 @@ pub fn marker_after_filled(tokenizer: &mut Tokenizer) -> State { // Attempt to parse up to the largest allowed indent, `nok` if there is more whitespace. tokenizer.attempt( - State::Next(StateName::ListAfter), - State::Next(StateName::ListPrefixOther), + State::Next(StateName::ListItemAfter), + State::Next(StateName::ListItemPrefixOther), ); - State::Retry(StateName::ListWhitespace) + State::Retry(StateName::ListItemWhitespace) } /// After marker, at whitespace. @@ -215,7 +215,7 @@ pub fn marker_after_filled(tokenizer: &mut Tokenizer) -> State { /// ^ /// ``` pub fn whitespace(tokenizer: &mut Tokenizer) -> State { - tokenizer.attempt(State::Next(StateName::ListWhitespaceAfter), State::Nok); + tokenizer.attempt(State::Next(StateName::ListItemWhitespaceAfter), State::Nok); State::Retry(space_or_tab_min_max(tokenizer, 1, TAB_SIZE)) } @@ -245,7 +245,7 @@ pub fn prefix_other(tokenizer: &mut Tokenizer) -> State { tokenizer.enter(Name::SpaceOrTab); tokenizer.consume(); tokenizer.exit(Name::SpaceOrTab); - State::Next(StateName::ListAfter) + State::Next(StateName::ListItemAfter) } _ => State::Nok, } @@ -303,8 +303,8 @@ pub fn after(tokenizer: &mut Tokenizer) -> State { /// ``` pub fn cont_start(tokenizer: &mut Tokenizer) -> State { tokenizer.check( - State::Next(StateName::ListContBlank), - State::Next(StateName::ListContFilled), + State::Next(StateName::ListItemContBlank), + State::Next(StateName::ListItemContFilled), ); State::Retry(StateName::BlankLineStart) } diff --git a/src/construct/mod.rs b/src/construct/mod.rs index 0adf611..566bb30 100644 --- a/src/construct/mod.rs +++ b/src/construct/mod.rs @@ -32,7 +32,7 @@ //! * [label end][label_end] //! * [label start (image)][label_start_image] //! * [label start (link)][label_start_link] -//! * [list][] +//! * [list item][list_item] //! * [paragraph][] //! * [thematic break][thematic_break] //! @@ -84,7 +84,7 @@ pub mod html_text; pub mod label_end; pub mod label_start_image; pub mod label_start_link; -pub mod list; +pub mod list_item; pub mod paragraph; pub mod partial_bom; pub mod partial_data; diff --git a/src/construct/thematic_break.rs b/src/construct/thematic_break.rs index f493b96..1b581ea 100644 --- a/src/construct/thematic_break.rs +++ b/src/construct/thematic_break.rs @@ -20,7 +20,7 @@ //! As using more than three markers has no effect other than wasting space, //! it is recommended to use exactly three markers. //! Thematic breaks formed with asterisks or dashes can interfere with -//! [list][]s if there is whitespace between them: `* * *` and `- - -`. +//! [list][list-item]s if there is whitespace between them: `* * *` and `- - -`. //! For these reasons, it is recommend to not use spaces or tabs between the //! markers. //! Thematic breaks formed with dashes (without whitespace) can also form @@ -45,7 +45,7 @@ //! //! [flow]: crate::content::flow //! [heading_setext]: crate::construct::heading_setext -//! [list]: crate::construct::list +//! [list-item]: crate::construct::list_item //! [html]: https://html.spec.whatwg.org/multipage/grouping-content.html#the-hr-element use super::partial_space_or_tab::{space_or_tab, space_or_tab_min_max}; diff --git a/src/content/document.rs b/src/content/document.rs index 41d60e2..f90aea7 100644 --- a/src/content/document.rs +++ b/src/content/document.rs @@ -6,7 +6,7 @@ //! The constructs found in flow are: //! //! * [Block quote][crate::construct::block_quote] -//! * [List][crate::construct::list] +//! * [List][crate::construct::list_item] use crate::event::{Content, Event, Kind, Link, Name, Point}; use crate::parser::ParseState; @@ -103,7 +103,7 @@ pub fn container_existing_before(tokenizer: &mut Tokenizer) -> State { let name = match container.kind { Container::BlockQuote => StateName::BlockQuoteContStart, - Container::ListItem => StateName::ListContStart, + Container::ListItem => StateName::ListItemContStart, }; tokenizer.attempt( @@ -201,7 +201,7 @@ pub fn container_new_before_not_block_quote(tokenizer: &mut Tokenizer) -> State State::Next(StateName::DocumentContainerNewAfter), State::Next(StateName::DocumentContainerNewBeforeNotList), ); - State::Retry(StateName::ListStart) + State::Retry(StateName::ListItemStart) } /// At new container, but not a list (or block quote). diff --git a/src/event.rs b/src/event.rs index be32b5b..8cdb959 100644 --- a/src/event.rs +++ b/src/event.rs @@ -1332,7 +1332,7 @@ pub enum Name { /// [`ListItemPrefix`][Name::ListItemPrefix], /// [flow content][crate::content::flow] /// * **Construct**: - /// [`list`][crate::construct::list] + /// [`list item`][crate::construct::list_item] /// /// ## Example /// @@ -1352,7 +1352,7 @@ pub enum Name { /// * **Content model**: /// void /// * **Construct**: - /// [`list`][crate::construct::list] + /// [`list item`][crate::construct::list_item] /// /// ## Example /// @@ -1374,7 +1374,7 @@ pub enum Name { /// [`ListItemValue`][Name::ListItemValue], /// [`SpaceOrTab`][Name::SpaceOrTab] /// * **Construct**: - /// [`list`][crate::construct::list] + /// [`list item`][crate::construct::list_item] /// /// ## Example /// @@ -1394,7 +1394,7 @@ pub enum Name { /// * **Content model**: /// void /// * **Construct**: - /// [`list`][crate::construct::list] + /// [`list item`][crate::construct::list_item] /// /// ## Example /// @@ -1416,7 +1416,7 @@ pub enum Name { /// [`LineEnding`][Name::LineEnding], /// [`SpaceOrTab`][Name::SpaceOrTab] /// * **Construct**: - /// [`list`][crate::construct::list] + /// [`list item`][crate::construct::list_item] /// /// ## Example /// @@ -1440,7 +1440,7 @@ pub enum Name { /// [`LineEnding`][Name::LineEnding], /// [`SpaceOrTab`][Name::SpaceOrTab] /// * **Construct**: - /// [`list`][crate::construct::list] + /// [`list item`][crate::construct::list_item] /// /// ## Example /// @@ -218,13 +218,13 @@ pub struct Constructs { /// ^^^^ /// ``` pub label_end: bool, - /// List. + /// List items. /// /// ```markdown /// > | * a /// ^^^ /// ``` - pub list: bool, + pub list_item: bool, /// Thematic break. /// /// ```markdown @@ -256,7 +256,7 @@ impl Default for Constructs { label_start_image: true, label_start_link: true, label_end: true, - list: true, + list_item: true, thematic_break: true, } } diff --git a/src/resolve.rs b/src/resolve.rs index e7d63f9..edc92b2 100644 --- a/src/resolve.rs +++ b/src/resolve.rs @@ -23,7 +23,7 @@ pub fn call(tokenizer: &mut Tokenizer, name: Name) { Name::Attention => construct::attention::resolve, Name::HeadingAtx => construct::heading_atx::resolve, Name::HeadingSetext => construct::heading_setext::resolve, - Name::List => construct::list::resolve, + Name::List => construct::list_item::resolve, Name::Paragraph => construct::paragraph::resolve, Name::Data => construct::partial_data::resolve, Name::String => content::string::resolve, diff --git a/src/state.rs b/src/state.rs index 006ffe1..344a31e 100644 --- a/src/state.rs +++ b/src/state.rs @@ -240,21 +240,21 @@ pub enum Name { LabelStartLinkStart, - ListStart, - ListBefore, - ListBeforeOrdered, - ListBeforeUnordered, - ListValue, - ListMarker, - ListMarkerAfter, - ListAfter, - ListMarkerAfterFilled, - ListWhitespace, - ListPrefixOther, - ListWhitespaceAfter, - ListContStart, - ListContBlank, - ListContFilled, + ListItemStart, + ListItemBefore, + ListItemBeforeOrdered, + ListItemBeforeUnordered, + ListItemValue, + ListItemMarker, + ListItemMarkerAfter, + ListItemAfter, + ListItemMarkerAfterFilled, + ListItemWhitespace, + ListItemPrefixOther, + ListItemWhitespaceAfter, + ListItemContStart, + ListItemContBlank, + ListItemContFilled, NonLazyContinuationStart, NonLazyContinuationAfter, @@ -552,21 +552,21 @@ pub fn call(tokenizer: &mut Tokenizer, name: Name) -> State { 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::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::ListItemStart => construct::list_item::start, + Name::ListItemBefore => construct::list_item::before, + Name::ListItemBeforeOrdered => construct::list_item::before_ordered, + Name::ListItemBeforeUnordered => construct::list_item::before_unordered, + Name::ListItemValue => construct::list_item::value, + Name::ListItemMarker => construct::list_item::marker, + Name::ListItemMarkerAfter => construct::list_item::marker_after, + Name::ListItemAfter => construct::list_item::after, + Name::ListItemMarkerAfterFilled => construct::list_item::marker_after_filled, + Name::ListItemWhitespace => construct::list_item::whitespace, + Name::ListItemWhitespaceAfter => construct::list_item::whitespace_after, + Name::ListItemPrefixOther => construct::list_item::prefix_other, + Name::ListItemContStart => construct::list_item::cont_start, + Name::ListItemContBlank => construct::list_item::cont_blank, + Name::ListItemContFilled => construct::list_item::cont_filled, Name::NonLazyContinuationStart => construct::partial_non_lazy_continuation::start, Name::NonLazyContinuationAfter => construct::partial_non_lazy_continuation::after, diff --git a/tests/list.rs b/tests/list.rs index b70b489..d75421f 100644 --- a/tests/list.rs +++ b/tests/list.rs @@ -562,7 +562,7 @@ fn list() { "- one\n\n two", &Options { constructs: Constructs { - list: false, + list_item: false, ..Constructs::default() }, ..Options::default() |