///|
fn base_element(node : ParseNode) -> ParseNode {
match node {
OrdGroup(body=[only], ..) => base_element(only)
Color(body=[only], ..) => base_element(only)
Font(body~, ..) => base_element(body)
_ => node
}
}
///|
fn is_character_box(node : ParseNode) -> Bool {
match base_element(node) {
MathOrd(..) | TextOrd(..) | Atom(..) => true
_ => false
}
}
///|
fn binrel_class(arg : ParseNode) -> AtomFamily {
let atom = match arg {
OrdGroup(body=[first, ..], ..) => first
_ => arg
}
match atom {
Atom(family=Mbin | Mrel as family, ..) => family
_ => Mord
}
}