struct ItemizedBlock {
lines: Vec<String>,
indent: usize,
opener: String,
line_start: String,
}
Expand description
Block that is formatted as an item.
An item starts with either a star *
, a dash -
, a greater-than >
, a plus ‘+’, or a number
12.
or 34)
(with at most 2 digits). An item represents CommonMark’s “list
items” and/or “block
quotes”, but note that only a subset of
CommonMark is recognized - see the doc comment of ItemizedBlock::get_marker_length
for more
details.
Different level of indentation are handled by shrinking the shape accordingly.
Fields§
§lines: Vec<String>
the lines that are identified as part of an itemized block
indent: usize
the number of characters (typically whitespaces) up to the item marker
opener: String
the string that marks the start of an item
line_start: String
sequence of characters (typically whitespaces) to prefix new lines that are part of the item
Implementations§
Source§impl ItemizedBlock
impl ItemizedBlock
Sourcefn get_marker_length(trimmed: &str) -> Option<usize>
fn get_marker_length(trimmed: &str) -> Option<usize>
Checks whether the trimmed
line includes an item marker. Returns None
if there is no
marker. Returns the length of the marker (in bytes) if one is present. Note that the length
includes the whitespace that follows the marker, for example the marker in "* list item"
has the length of 2.
This function recognizes item markers that correspond to CommonMark’s “bullet list marker”, “block quote marker”, and/or “ordered list marker”.
Compared to CommonMark specification, the number of digits that are allowed in an “ordered list marker” is more limited (to at most 2 digits). Limiting the length of the marker helps reduce the risk of recognizing arbitrary numbers as markers. See also https://talk.commonmark.org/t/blank-lines-before-lists-revisited/1990 which gives the following example where a number (i.e. “1868”) doesn’t signify an ordered list:
The Captain died in
1868. He wes buried in...
Sourcefn new(line: &str) -> Option<ItemizedBlock>
fn new(line: &str) -> Option<ItemizedBlock>
Creates a new ItemizedBlock
described with the given line
.
Returns None
if line
doesn’t start an item.
Sourcefn create_string_format<'a>(
&'a self,
fmt: &'a StringFormat<'_>,
) -> StringFormat<'a>
fn create_string_format<'a>( &'a self, fmt: &'a StringFormat<'_>, ) -> StringFormat<'a>
Returns a StringFormat
used for formatting the content of an item.
Sourcefn add_line(&mut self, line: &str) -> bool
fn add_line(&mut self, line: &str) -> bool
Returns true
if the line is part of the current itemized block.
If it is, then it is added to the internal lines list.
Sourcefn trimmed_block_as_string(&self) -> String
fn trimmed_block_as_string(&self) -> String
Returns the block as a string, with each line trimmed at the start.
Sourcefn original_block_as_string(&self) -> String
fn original_block_as_string(&self) -> String
Returns the block as a string under its original form.
Auto Trait Implementations§
impl Freeze for ItemizedBlock
impl RefUnwindSafe for ItemizedBlock
impl Send for ItemizedBlock
impl Sync for ItemizedBlock
impl Unpin for ItemizedBlock
impl UnwindSafe for ItemizedBlock
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 80 bytes