Skip to main content

LineInfo

Struct LineInfo 

Source
pub struct LineInfo {
Show 37 fields pub byte_offset: usize, pub byte_len: usize, pub indent: usize, pub visual_indent: usize, pub is_blank: bool, pub in_code_block: bool, pub in_front_matter: bool, pub in_html_block: bool, pub in_list_block: bool, pub in_table_block: bool, pub in_html_comment: bool, pub list_item: Option<Box<ListItemInfo>>, pub heading: Option<Box<HeadingInfo>>, pub is_setext_heading_text: bool, pub blockquote: Option<Box<BlockquoteInfo>>, pub in_mkdocstrings: bool, pub in_esm_block: bool, pub in_code_span_continuation: bool, pub is_horizontal_rule: bool, pub in_math_block: bool, pub in_pandoc_div: bool, pub is_div_marker: bool, pub is_container_marker: bool, pub in_jsx_expression: bool, pub in_mdx_comment: bool, pub in_admonition: bool, pub in_content_tab: bool, pub in_mkdocs_html_markdown: bool, pub in_definition_list: bool, pub in_obsidian_comment: bool, pub in_pymdown_block: bool, pub in_kramdown_extension_block: bool, pub is_kramdown_block_ial: bool, pub in_jsx_block: bool, pub in_footnote_definition: bool, pub in_myst_directive: bool, pub is_myst_comment: bool,
}
Expand description

Pre-computed information about a line

Fields§

§byte_offset: usize

Byte offset where this line starts in the document

§byte_len: usize

Length of the line in bytes (without newline)

§indent: usize

Number of bytes of leading whitespace (for substring extraction)

§visual_indent: usize

Visual column width of leading whitespace (with proper tab expansion) Per CommonMark, tabs expand to the next column that is a multiple of 4. Use this for numeric comparisons like checking for indented code blocks (>= 4).

§is_blank: bool

Whether the line is blank (empty or only whitespace)

§in_code_block: bool

Whether this line is inside a code block

§in_front_matter: bool

Whether this line is inside front matter

§in_html_block: bool

Whether this line is inside an HTML block

§in_list_block: bool

Whether this line is part of a list block (precomputed for O(1) lookup)

§in_table_block: bool

Whether this line is part of a table block (precomputed for O(1) lookup)

§in_html_comment: bool

Whether this line is inside an HTML comment

§list_item: Option<Box<ListItemInfo>>

List item information if this line starts a list item Boxed to reduce LineInfo size: most lines are not list items

§heading: Option<Box<HeadingInfo>>

Heading information if this line is a heading: an ATX heading line, or the last text line of a setext heading, whose underline is the line after Boxed to reduce LineInfo size: most lines are not headings

§is_setext_heading_text: bool

Whether the line holds text of a setext heading: one of the lines of the paragraph the underline below them makes a heading of. The heading is recorded in heading on the last of those lines, with text_lines counting them. A setext heading inside a blockquote is reported through headings() and leaves this unset, as it leaves heading unset.

§blockquote: Option<Box<BlockquoteInfo>>

Blockquote information if this line is a blockquote Boxed to reduce LineInfo size: most lines are not blockquotes

§in_mkdocstrings: bool

Whether this line is inside a mkdocstrings autodoc block

§in_esm_block: bool

Whether this line is part of an ESM import/export block (MDX only)

§in_code_span_continuation: bool

Whether this line is a continuation of a multi-line code span from a previous line

§is_horizontal_rule: bool

Whether this line is a horizontal rule (—, ***, ___, etc.) Pre-computed for consistent detection across all rules

§in_math_block: bool

Whether this line is inside a math block ($$ … $$)

§in_pandoc_div: bool

Whether this line is inside a Pandoc/Quarto div block (::: … :::)

§is_div_marker: bool

Whether this line is a Quarto/Pandoc div marker (opening ::: {.class} or closing :::) Analogous to is_horizontal_rule — marks structural delimiters that are not paragraph text

§is_container_marker: bool

Whether the line is the marker of a container whose body is Markdown: a MkDocs admonition or content tab opener, a PyMdown block fence, or a MyST colon fence. Like is_div_marker, a structural delimiter rather than paragraph text: the body below the marker is the container’s own content, not a continuation of the marker line.

§in_jsx_expression: bool

Whether this line contains or is inside a JSX expression (MDX only)

§in_mdx_comment: bool

Whether this line is inside an MDX comment {/* … */} (MDX only)

§in_admonition: bool

Whether this line is inside an MkDocs admonition block (!!! or ???)

§in_content_tab: bool

Whether this line is inside an MkDocs content tab block (===)

§in_mkdocs_html_markdown: bool

Whether this line is inside an HTML block with markdown attribute (MkDocs grid cards, etc.)

§in_definition_list: bool

Whether this line is a definition list item (: definition)

§in_obsidian_comment: bool

Whether this line is inside an Obsidian comment (%%…%% syntax, Obsidian flavor only)

§in_pymdown_block: bool

Whether this line is inside a PyMdown Blocks region (/// … ///, MkDocs flavor only)

§in_kramdown_extension_block: bool

Whether this line is inside a kramdown extension block ({::comment}…{:/comment}, {::nomarkdown}…{:/nomarkdown})

§is_kramdown_block_ial: bool

Whether this line is a kramdown block IAL ({:.class #id}) or ALD ({:ref: .class})

§in_jsx_block: bool

Whether this line is inside a JSX component block (MDX only, e.g. <Tabs>...</Tabs>)

§in_footnote_definition: bool

Whether this line is inside a footnote definition body (continuation lines)

§in_myst_directive: bool

Whether this line is inside a MyST directive block (colon or backtick fence with {name})

§is_myst_comment: bool

Whether this line is a MyST comment (% comment)

Implementations§

Source§

impl LineInfo

Source

pub fn content<'a>(&self, source: &'a str) -> &'a str

Get the line content as a string slice from the source document

Source

pub fn in_mkdocs_container(&self) -> bool

Check if this line is inside MkDocs-specific indented content (admonitions, tabs, or markdown HTML). This content uses 4-space indentation which pulldown-cmark would interpret as code blocks, but in MkDocs flavor it’s actually container content that should be preserved.

Source

pub fn is_valid_heading(&self) -> bool

Whether this line is a heading in the document’s structure.

An ATX line without a space after its #s is recorded as a heading so MD018 can report it, with is_valid carrying heading detection’s verdict on whether a heading was meant: #2, #3 and #hashtag read as paragraph text (is_valid == false), ##hashtag and #Hashtag as headings missing their space. Structurally an invalid one is paragraph text: it continues a list item and does not separate two lists. Structural code asks this instead of heading.is_some().

Source

pub fn is_paragraph_context(&self) -> bool

Whether this line could be part of a paragraph block (CommonMark paragraph token).

Returns true for ordinary prose lines, including those inside blockquotes and list items. Returns false for lines that belong to non-paragraph blocks: headings, code blocks, HTML blocks, math blocks, horizontal rules, front matter, structural div markers, and flavor-specific extension blocks. This is the per-line view; cross-line constructs like setext underlines aren’t visible here and need additional context to detect.

Used by rules (e.g. MD009 strict mode) that need to distinguish “trailing whitespace could produce a meaningful <br>” from “trailing whitespace is on a structural boundary.”

Source

pub fn in_flavor_container(&self) -> bool

Whether the line sits in a flavor container whose body is ordinary Markdown: a fenced div, a MyST directive, a MkDocs admonition or content tab, an mkdocstrings block, a PyMdown block, a kramdown extension block, or an HTML block opted in with markdown="1".

Each flag is populated by the flavor’s own detection, so a marker written in a flavor that gives it no meaning sets none of them and the line stays ordinary paragraph text. A container’s opening line carries its own container’s flag, so this is true on the opener as well as on the body, at every nesting depth.

Trait Implementations§

Source§

impl Clone for LineInfo

Source§

fn clone(&self) -> LineInfo

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LineInfo

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<'a, T> FromIn<'a, T> for T

Source§

fn from_in(t: T, _: &'a Allocator) -> T

Converts to this type from the input type within the given allocator.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<'a, T, U> IntoIn<'a, U> for T
where U: FromIn<'a, T>,

Source§

fn into_in(self, allocator: &'a Allocator) -> U

Converts this type into the (usually inferred) input type within the given allocator.
Source§

impl<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more