Struct markdown_it::parser::block::LineOffset
source · pub struct LineOffset {
pub line_start: usize,
pub line_end: usize,
pub first_nonspace: usize,
pub indent_nonspace: i32,
}
Expand description
Holds start/end/etc. positions for a specific source text line.
Fields§
§line_start: usize
line_start
is the actual start of the line.
" > blockquote\r\n"
^-- it will always point here (must not be modified by rules)
line_end: usize
line_end
is first newline character after the line,
or position after string length if there aren’t any newlines left.
" > blockquote\r\n"
^-- it will point here
first_nonspace: usize
first_nonspace
is the byte offset of the first non-space character in
the current line.
" > blockquote\r\n"
^-- it will point here when paragraph is parsed
^----- it is initially pointed here
It will be modified by rules (list and blockquote), chars before it must be treated as whitespaces.
indent_nonspace: i32
indent_nonspace
is the indent (amount of virtual spaces from start)
of first non-space character in the current line, taking into account
tab expansion.
For example, in case of \t foo
, indent is 5 (tab ends at multiple of 4,
then one space after it). Only tabs and spaces are counted for it,
so no funny unicode business (if cmark supported unicode spaces, they’d
be counted as 1 each regardless of utf8 width).
You should compare indent_nonspace
with state.blkindent
when determining
real indent after taking into account lists.
Most block rules in commonmark are indented 0..=3, and >=4 is code block. Special value of ident_nonspace=-1 is used by this library as a sign that this rule can only be a paragraph continuation (used in blockquotes), so you must take into account that any math can end up negative.
Trait Implementations§
source§impl Clone for LineOffset
impl Clone for LineOffset
source§fn clone(&self) -> LineOffset
fn clone(&self) -> LineOffset
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl RefUnwindSafe for LineOffset
impl Send for LineOffset
impl Sync for LineOffset
impl Unpin for LineOffset
impl UnwindSafe for LineOffset
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere T: Any,
source§fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any, Global>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.source§fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
fn into_any_rc(self: Rc<T, Global>) -> Rc<dyn Any, Global>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.