pub enum ParseNode {
Show 57 variants
Atom {
mode: Mode,
family: AtomFamily,
text: String,
loc: Option<SourceLocation>,
},
MathOrd {
mode: Mode,
text: String,
loc: Option<SourceLocation>,
},
TextOrd {
mode: Mode,
text: String,
loc: Option<SourceLocation>,
},
OpToken {
mode: Mode,
text: String,
loc: Option<SourceLocation>,
},
AccentToken {
mode: Mode,
text: String,
loc: Option<SourceLocation>,
},
SpacingNode {
mode: Mode,
text: String,
loc: Option<SourceLocation>,
},
OrdGroup {
mode: Mode,
body: Vec<ParseNode>,
semisimple: Option<bool>,
loc: Option<SourceLocation>,
},
SupSub {
mode: Mode,
base: Option<Box<ParseNode>>,
sup: Option<Box<ParseNode>>,
sub: Option<Box<ParseNode>>,
loc: Option<SourceLocation>,
},
GenFrac {
mode: Mode,
continued: bool,
numer: Box<ParseNode>,
denom: Box<ParseNode>,
has_bar_line: bool,
left_delim: Option<String>,
right_delim: Option<String>,
bar_size: Option<Measurement>,
loc: Option<SourceLocation>,
},
Sqrt {
mode: Mode,
body: Box<ParseNode>,
index: Option<Box<ParseNode>>,
loc: Option<SourceLocation>,
},
Accent {
mode: Mode,
label: String,
is_stretchy: Option<bool>,
is_shifty: Option<bool>,
base: Box<ParseNode>,
loc: Option<SourceLocation>,
},
AccentUnder {
mode: Mode,
label: String,
is_stretchy: Option<bool>,
is_shifty: Option<bool>,
base: Box<ParseNode>,
loc: Option<SourceLocation>,
},
Op {
mode: Mode,
limits: bool,
always_handle_sup_sub: Option<bool>,
suppress_base_shift: Option<bool>,
parent_is_sup_sub: bool,
symbol: bool,
name: Option<String>,
body: Option<Vec<ParseNode>>,
loc: Option<SourceLocation>,
},
OperatorName {
mode: Mode,
body: Vec<ParseNode>,
always_handle_sup_sub: bool,
limits: bool,
parent_is_sup_sub: bool,
loc: Option<SourceLocation>,
},
Font {
mode: Mode,
font: String,
body: Box<ParseNode>,
loc: Option<SourceLocation>,
},
Text {
mode: Mode,
body: Vec<ParseNode>,
font: Option<String>,
loc: Option<SourceLocation>,
},
Color {
mode: Mode,
color: String,
body: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
ColorToken {
mode: Mode,
color: String,
loc: Option<SourceLocation>,
},
Size {
mode: Mode,
value: Measurement,
is_blank: bool,
loc: Option<SourceLocation>,
},
Styling {
mode: Mode,
style: StyleStr,
body: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
Sizing {
mode: Mode,
size: u8,
body: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
DelimSizing {
mode: Mode,
size: u8,
mclass: String,
delim: String,
loc: Option<SourceLocation>,
},
LeftRight {
mode: Mode,
body: Vec<ParseNode>,
left: String,
right: String,
right_color: Option<String>,
loc: Option<SourceLocation>,
},
LeftRightRight {
mode: Mode,
delim: String,
color: Option<String>,
loc: Option<SourceLocation>,
},
Middle {
mode: Mode,
delim: String,
loc: Option<SourceLocation>,
},
Overline {
mode: Mode,
body: Box<ParseNode>,
loc: Option<SourceLocation>,
},
Underline {
mode: Mode,
body: Box<ParseNode>,
loc: Option<SourceLocation>,
},
Rule {
mode: Mode,
shift: Option<Measurement>,
width: Measurement,
height: Measurement,
loc: Option<SourceLocation>,
},
Kern {
mode: Mode,
dimension: Measurement,
loc: Option<SourceLocation>,
},
Phantom {
mode: Mode,
body: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
VPhantom {
mode: Mode,
body: Box<ParseNode>,
loc: Option<SourceLocation>,
},
Smash {
mode: Mode,
body: Box<ParseNode>,
smash_height: bool,
smash_depth: bool,
loc: Option<SourceLocation>,
},
MClass {
mode: Mode,
mclass: String,
body: Vec<ParseNode>,
is_character_box: bool,
loc: Option<SourceLocation>,
},
Array {Show 13 fields
mode: Mode,
body: Vec<Vec<ParseNode>>,
row_gaps: Vec<Option<Measurement>>,
hlines_before_row: Vec<Vec<bool>>,
cols: Option<Vec<AlignSpec>>,
col_separation_type: Option<String>,
hskip_before_and_after: Option<bool>,
add_jot: Option<bool>,
arraystretch: f64,
tags: Option<Vec<ArrayTag>>,
leqno: Option<bool>,
is_cd: Option<bool>,
loc: Option<SourceLocation>,
},
Environment {
mode: Mode,
name: String,
name_group: Box<ParseNode>,
loc: Option<SourceLocation>,
},
Cr {
mode: Mode,
new_line: bool,
size: Option<Measurement>,
loc: Option<SourceLocation>,
},
Infix {
mode: Mode,
replace_with: String,
size: Option<Measurement>,
loc: Option<SourceLocation>,
},
Internal {
mode: Mode,
loc: Option<SourceLocation>,
},
Verb {
mode: Mode,
body: String,
star: bool,
loc: Option<SourceLocation>,
},
Href {
mode: Mode,
href: String,
body: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
Url {
mode: Mode,
url: String,
loc: Option<SourceLocation>,
},
Raw {
mode: Mode,
string: String,
loc: Option<SourceLocation>,
},
HBox {
mode: Mode,
body: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
HorizBrace {
mode: Mode,
label: String,
is_over: bool,
base: Box<ParseNode>,
loc: Option<SourceLocation>,
},
Enclose {
mode: Mode,
label: String,
background_color: Option<String>,
border_color: Option<String>,
body: Box<ParseNode>,
loc: Option<SourceLocation>,
},
Lap {
mode: Mode,
alignment: String,
body: Box<ParseNode>,
loc: Option<SourceLocation>,
},
MathChoice {
mode: Mode,
display: Vec<ParseNode>,
text: Vec<ParseNode>,
script: Vec<ParseNode>,
scriptscript: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
RaiseBox {
mode: Mode,
dy: Measurement,
body: Box<ParseNode>,
loc: Option<SourceLocation>,
},
VCenter {
mode: Mode,
body: Box<ParseNode>,
loc: Option<SourceLocation>,
},
XArrow {
mode: Mode,
label: String,
body: Box<ParseNode>,
below: Option<Box<ParseNode>>,
loc: Option<SourceLocation>,
},
Pmb {
mode: Mode,
mclass: String,
body: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
Tag {
mode: Mode,
body: Vec<ParseNode>,
tag: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
Html {
mode: Mode,
attributes: HashMap<String, String>,
body: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
HtmlMathMl {
mode: Mode,
html: Vec<ParseNode>,
mathml: Vec<ParseNode>,
loc: Option<SourceLocation>,
},
IncludeGraphics {
mode: Mode,
alt: String,
width: Measurement,
height: Measurement,
totalheight: Measurement,
src: String,
loc: Option<SourceLocation>,
},
CdLabel {
mode: Mode,
side: String,
label: Box<ParseNode>,
loc: Option<SourceLocation>,
},
CdLabelParent {
mode: Mode,
fragment: Box<ParseNode>,
loc: Option<SourceLocation>,
},
}Expand description
The main AST node type. Each variant corresponds to a KaTeX ParseNode type.
Serializes to JSON with "type": "variant_name" to match KaTeX’s format,
enabling direct structural comparison.
Variants§
Atom
MathOrd
TextOrd
OpToken
AccentToken
SpacingNode
OrdGroup
SupSub
Fields
§
loc: Option<SourceLocation>GenFrac
Sqrt
Accent
Fields
§
loc: Option<SourceLocation>AccentUnder
Fields
§
loc: Option<SourceLocation>Op
Fields
§
loc: Option<SourceLocation>OperatorName
Fields
§
loc: Option<SourceLocation>Font
Text
Color
ColorToken
Size
Styling
Sizing
DelimSizing
LeftRight
Fields
§
loc: Option<SourceLocation>LeftRightRight
Middle
Overline
Underline
Rule
Fields
§
shift: Option<Measurement>§
width: Measurement§
height: Measurement§
loc: Option<SourceLocation>Kern
Phantom
VPhantom
Smash
Fields
§
loc: Option<SourceLocation>MClass
Fields
§
loc: Option<SourceLocation>Array
Environment
Cr
Infix
Internal
Verb
Href
Url
Raw
HBox
HorizBrace
Enclose
Fields
§
loc: Option<SourceLocation>Lap
MathChoice
Fields
§
loc: Option<SourceLocation>RaiseBox
VCenter
XArrow
Fields
§
loc: Option<SourceLocation>Pmb
Tag
Html
Fields
§
loc: Option<SourceLocation>HtmlMathMl
IncludeGraphics
CdLabel
CdLabelParent
Implementations§
Source§impl ParseNode
impl ParseNode
pub fn mode(&self) -> Mode
pub fn type_name(&self) -> &'static str
Sourcepub fn is_symbol_node(&self) -> bool
pub fn is_symbol_node(&self) -> bool
Check if this node is a symbol node (atom or non-atom symbol).
Sourcepub fn symbol_text(&self) -> Option<&str>
pub fn symbol_text(&self) -> Option<&str>
Get the text of a symbol node.
Sourcepub fn normalize_argument(arg: ParseNode) -> ParseNode
pub fn normalize_argument(arg: ParseNode) -> ParseNode
Normalize an argument: if it’s an ordgroup with a single element, unwrap it.
Sourcepub fn ord_argument(arg: ParseNode) -> Vec<ParseNode>
pub fn ord_argument(arg: ParseNode) -> Vec<ParseNode>
Convert an argument to a list: if ordgroup, return body; otherwise wrap in vec.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ParseNode
impl<'de> Deserialize<'de> for ParseNode
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for ParseNode
impl RefUnwindSafe for ParseNode
impl Send for ParseNode
impl Sync for ParseNode
impl Unpin for ParseNode
impl UnsafeUnpin for ParseNode
impl UnwindSafe for ParseNode
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
Mutably borrows from an owned value. Read more