Skip to main content

Node

Enum Node 

Source
pub enum Node<'arena> {
Show 31 variants Number(&'arena str), IdentifierChar(SuperChar, LetterAttr), IdentifierStr(&'arena str), Operator { op: MathMLOperator, attrs: OpAttrs, size: Option<Size>, left: Option<MathSpacing>, right: Option<MathSpacing>, }, PseudoOp { attrs: OpAttrs, left: Option<MathSpacing>, right: Option<MathSpacing>, name: &'arena str, }, Space(Length), Sub { target: &'arena Node<'arena>, symbol: &'arena Node<'arena>, }, Sup { target: &'arena Node<'arena>, symbol: &'arena Node<'arena>, }, SubSup { target: &'arena Node<'arena>, sub: &'arena Node<'arena>, sup: &'arena Node<'arena>, }, OverAccent(MathMLOperator, OpAttrs, &'arena Node<'arena>), UnderAccent(MathMLOperator, OpAttrs, &'arena Node<'arena>), Over { symbol: &'arena Node<'arena>, target: &'arena Node<'arena>, }, Under { symbol: &'arena Node<'arena>, target: &'arena Node<'arena>, }, UnderOver { target: &'arena Node<'arena>, under: &'arena Node<'arena>, over: &'arena Node<'arena>, }, Sqrt(&'arena Node<'arena>), Root(&'arena Node<'arena>, &'arena Node<'arena>), Frac { num: &'arena Node<'arena>, denom: &'arena Node<'arena>, lt_value: LengthValue, lt_unit: LengthUnit, attr: Option<FracAttr>, }, Row { nodes: &'arena [&'arena Node<'arena>], attrs: RowAttrs, }, Padded { node: &'arena Node<'arena>, width_0: bool, height_0: bool, }, Phantom { node: &'arena Node<'arena>, }, Text(Option<HtmlTextStyle>, Option<HtmlTextSize>, &'arena str), AHref(&'arena AHref<'arena>), Table { align: Alignment, style: Option<Style>, content: &'arena [&'arena Node<'arena>], }, EquationArray { align: Alignment, last_row_info: Option<&'arena RowLabelInfo<'arena>>, content: &'arena [&'arena Node<'arena>], }, MultLine { num_rows: NonZeroU16, last_row_info: Option<&'arena RowLabelInfo<'arena>>, content: &'arena [&'arena Node<'arena>], }, Array { style: Option<Style>, array_spec: &'arena ArraySpec<'arena>, content: &'arena [&'arena Node<'arena>], }, ColumnSeparator, RowSeparator { tag: Option<NonZeroU16>, link_target: Option<&'arena str>, }, Enclose { content: &'arena Node<'arena>, notation: Notation, }, Multiscripts { base: &'arena Node<'arena>, pre: &'arena &'arena [MultiscriptPair<'arena>], post: &'arena &'arena [MultiscriptPair<'arena>], }, UnknownCommand(&'arena str),
}
Expand description

AST node

Variants§

§

Number(&'arena str)

<mn>...</mn>

§

IdentifierChar(SuperChar, LetterAttr)

<mi>...</mi> for a SuperChar.

§

IdentifierStr(&'arena str)

<mi>...</mi> for a string.

§

Operator

<mo>...</mo> for a single character.

§

PseudoOp

<mo>...</mo> for a string.

Fields

§attrs: OpAttrs
§name: &'arena str
§

Space(Length)

<mspace width="..."/>

§

Sub

<msub>...</msub>

Fields

§target: &'arena Node<'arena>
§symbol: &'arena Node<'arena>
§

Sup

<msup>...</msup>

Fields

§target: &'arena Node<'arena>
§symbol: &'arena Node<'arena>
§

SubSup

<msubsup>...</msubsup>

Fields

§target: &'arena Node<'arena>
§sub: &'arena Node<'arena>
§sup: &'arena Node<'arena>
§

OverAccent(MathMLOperator, OpAttrs, &'arena Node<'arena>)

<mover accent="true">...</mover>

§

UnderAccent(MathMLOperator, OpAttrs, &'arena Node<'arena>)

<munder accentunder="true">...</munder>

§

Over

<mover>...</mover>

Fields

§symbol: &'arena Node<'arena>
§target: &'arena Node<'arena>
§

Under

<munder>...</munder>

Fields

§symbol: &'arena Node<'arena>
§target: &'arena Node<'arena>
§

UnderOver

<munderover>...</munderover>

Fields

§target: &'arena Node<'arena>
§under: &'arena Node<'arena>
§over: &'arena Node<'arena>
§

Sqrt(&'arena Node<'arena>)

<msqrt>...</msqrt>

§

Root(&'arena Node<'arena>, &'arena Node<'arena>)

<mroot>...</mroot>

§

Frac

<mfrac>...</mfrac>

Fields

§num: &'arena Node<'arena>

Numerator

§denom: &'arena Node<'arena>

Denominator

§lt_value: LengthValue

Line thickness

§lt_unit: LengthUnit
§

Row

<mrow>...</mrow>

Fields

§nodes: &'arena [&'arena Node<'arena>]
§attrs: RowAttrs
§

Padded

<mpadded>...</mpadded>

Fields

§node: &'arena Node<'arena>
§width_0: bool
§height_0: bool
§

Phantom

<mphantom>...</mphantom>

Fields

§node: &'arena Node<'arena>
§

Text(Option<HtmlTextStyle>, Option<HtmlTextSize>, &'arena str)

<mtext>...</mtext>. The str gets HTML-escaped.

§

AHref(&'arena AHref<'arena>)

<mtext><a href="...">...</mtext>. The link and text get HTML-escaped.

§

Table

<mtable>...</mtable> for matrices and similar constructs

Fields

§style: Option<Style>
§content: &'arena [&'arena Node<'arena>]
§

EquationArray

<mtable>...</mtable> for equation arrays like the align environment

Fields

§last_row_info: Option<&'arena RowLabelInfo<'arena>>
§content: &'arena [&'arena Node<'arena>]
§

MultLine

<mtable>...</mtable> for the multline environment

Fields

§num_rows: NonZeroU16
§last_row_info: Option<&'arena RowLabelInfo<'arena>>
§content: &'arena [&'arena Node<'arena>]
§

Array

<mtable>...</mtable> for arrays

Fields

§style: Option<Style>
§array_spec: &'arena ArraySpec<'arena>
§content: &'arena [&'arena Node<'arena>]
§

ColumnSeparator

<mtd>...</mtd>

§

RowSeparator

<mtr>...</mtr>

Fields

§link_target: Option<&'arena str>
§

Enclose

<menclose>...</menclose>

Fields

§content: &'arena Node<'arena>
§notation: Notation
§

Multiscripts

<mmultiscripts>...</mmultiscripts> Double pointer indirection is to keep Node’s size down. Ideally we would use some sort of thinslice type

Fields

§base: &'arena Node<'arena>
§pre: &'arena &'arena [MultiscriptPair<'arena>]
§post: &'arena &'arena [MultiscriptPair<'arena>]
§

UnknownCommand(&'arena str)

This node is used for displaying unknown commands. We are not using <merror> here because it’s rendered with a red border and a yellow background, which is not desirable for our use case. We’ll just render it as <mtext> with a custom style.

Implementations§

Source§

impl Node<'_>

Source

pub const EMPTY_ROW: Self

Source

pub fn emit(&self, s: &mut String, base_indent: usize) -> Result

Trait Implementations§

Source§

impl<'arena> Debug for Node<'arena>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'arena> Freeze for Node<'arena>

§

impl<'arena> RefUnwindSafe for Node<'arena>

§

impl<'arena> Send for Node<'arena>

§

impl<'arena> Sync for Node<'arena>

§

impl<'arena> Unpin for Node<'arena>

§

impl<'arena> UnsafeUnpin for Node<'arena>

§

impl<'arena> UnwindSafe for Node<'arena>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.