Skip to content

Commit f49f57b

Browse files
authored
Turn OpAttr into a bitset (#865)
1 parent 016c61f commit f49f57b

22 files changed

Lines changed: 162 additions & 142 deletions

crates/math-core/src/commands.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use mathml_renderer::attribute::{
2-
FracAttr, HtmlTextStyle, MathVariant, Notation, OpAttr, ParenType, Size, Style, TextTransform,
2+
FracAttr, HtmlTextStyle, MathVariant, Notation, OpAttrs, ParenType, Size, Style, TextTransform,
33
};
44
use mathml_renderer::symbol::{self, Rel};
55

@@ -119,7 +119,7 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
119119
"_" => Letter(symbol::LOW_LINE.as_op().as_char(), Mode::MathOrText),
120120
"`" => TextMode(TextToken::Accent(symbol::COMBINING_GRAVE_ACCENT)),
121121
"aa" => TextMode(TextToken::Letter('å')),
122-
"acute" => Accent(symbol::ACUTE_ACCENT, true, None),
122+
"acute" => Accent(symbol::ACUTE_ACCENT, true, OpAttrs::empty()),
123123
"ae" => TextMode(TextToken::Letter('æ')),
124124
"aleph" => Letter(symbol::ALEF_SYMBOL, Mode::Math),
125125
"alpha" => Letter(symbol::GREEK_SMALL_LETTER_ALPHA, Mode::Math),
@@ -142,7 +142,7 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
142142
"backsimeq" => Relation(symbol::REVERSED_TILDE_EQUALS),
143143
"backslash" => Ord(symbol::REVERSE_SOLIDUS),
144144
"backtrprime" => Ord(symbol::REVERSED_TRIPLE_PRIME),
145-
"bar" => Accent(symbol::MACRON, true, Some(OpAttr::StretchyFalse)),
145+
"bar" => Accent(symbol::MACRON, true, OpAttrs::STRETCHY_FALSE),
146146
"barwedge" => BinaryOp(symbol::NAND),
147147
"bcancel" => Enclose(Notation::DOWN_DIAGONAL),
148148
"because" => Relation(symbol::BECAUSE),
@@ -195,7 +195,7 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
195195
"boxslash" => BinaryOp(symbol::SQUARED_RISING_DIAGONAL_SLASH),
196196
"boxtimes" => ForceBinaryOp(symbol::SQUARED_TIMES.as_op()),
197197
"bra" => CustomCmd(1, &predefined::BRA),
198-
"breve" => Accent(symbol::BREVE, true, None),
198+
"breve" => Accent(symbol::BREVE, true, OpAttrs::empty()),
199199
"bullet" => ForceBinaryOp(symbol::BULLET_OPERATOR.as_op()),
200200
"bumpeq" => Relation(symbol::DIFFERENCE_BETWEEN),
201201
"c" => TextMode(TextToken::Accent(symbol::COMBINING_CEDILLA)),
@@ -206,7 +206,7 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
206206
"cdots" => CustomCmd(0, &predefined::CDOTS),
207207
"centerdot" => ForceBinaryOp(symbol::BULLET_OPERATOR.as_op()),
208208
"cfrac" => Frac(Some(FracAttr::CFracStyle)),
209-
"check" => Accent(symbol::CARON, true, Some(OpAttr::StretchyFalse)),
209+
"check" => Accent(symbol::CARON, true, OpAttrs::STRETCHY_FALSE),
210210
"checkmark" => Letter('✓', Mode::Math),
211211
"chi" => Letter(symbol::GREEK_SMALL_LETTER_CHI, Mode::Math),
212212
"circ" => ForceBinaryOp(symbol::RING_OPERATOR.as_op()),
@@ -244,9 +244,9 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
244244
"dblcolon" => Relation(symbol::PROPORTION),
245245
"ddag" => Letter(symbol::DOUBLE_DAGGER, Mode::Math),
246246
"ddagger" => Letter(symbol::DOUBLE_DAGGER, Mode::Math),
247-
"ddddot" => Accent(symbol::COMBINING_FOUR_DOTS_ABOVE, true, Some(OpAttr::StretchyFalse)),
248-
"dddot" => Accent(symbol::COMBINING_THREE_DOTS_ABOVE, true, Some(OpAttr::StretchyFalse)),
249-
"ddot" => Accent(symbol::DIAERESIS, true, Some(OpAttr::StretchyFalse)),
247+
"ddddot" => Accent(symbol::COMBINING_FOUR_DOTS_ABOVE, true, OpAttrs::STRETCHY_FALSE),
248+
"dddot" => Accent(symbol::COMBINING_THREE_DOTS_ABOVE, true, OpAttrs::STRETCHY_FALSE),
249+
"ddot" => Accent(symbol::DIAERESIS, true, OpAttrs::STRETCHY_FALSE),
250250
"ddots" => Relation(symbol::DOWN_RIGHT_DIAGONAL_ELLIPSIS),
251251
"delta" => Letter(symbol::GREEK_SMALL_LETTER_DELTA, Mode::Math),
252252
"dfrac" => Frac(Some(FracAttr::DisplayStyleTrue)),
@@ -258,7 +258,7 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
258258
"div" => BinaryOp(symbol::DIVISION_SIGN),
259259
"divideontimes" => ForceBinaryOp(symbol::DIVISION_TIMES.as_op()),
260260
"dj" => TextMode(TextToken::Letter('đ')),
261-
"dot" => Accent(symbol::DOT_ABOVE, true, None),
261+
"dot" => Accent(symbol::DOT_ABOVE, true, OpAttrs::empty()),
262262
"doteq" => Relation(symbol::APPROACHES_THE_LIMIT),
263263
"doteqdot" => Relation(symbol::GEOMETRICALLY_EQUAL_TO),
264264
"dotplus" => BinaryOp(symbol::DOT_PLUS),
@@ -315,14 +315,14 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
315315
"gneq" => Relation(symbol::GREATER_THAN_AND_SINGLE_LINE_NOT_EQUAL_TO),
316316
"gneqq" => Relation(symbol::GREATER_THAN_BUT_NOT_EQUAL_TO),
317317
"gnsim" => Relation(symbol::GREATER_THAN_BUT_NOT_EQUIVALENT_TO),
318-
"grave" => Accent(symbol::GRAVE_ACCENT, true, None),
318+
"grave" => Accent(symbol::GRAVE_ACCENT, true, OpAttrs::empty()),
319319
"gt" => OpGreaterThan,
320320
"gtrapprox" => Relation(symbol::GREATER_THAN_OR_APPROXIMATE),
321321
"gtreqless" => Relation(symbol::GREATER_THAN_EQUAL_TO_OR_LESS_THAN),
322322
"gtreqqless" => Relation(symbol::GREATER_THAN_ABOVE_DOUBLE_LINE_EQUAL_ABOVE_LESS_THAN),
323323
"gtrless" => Relation(symbol::GREATER_THAN_OR_LESS_THAN),
324324
"gtrsim" => Relation(symbol::GREATER_THAN_OR_EQUIVALENT_TO),
325-
"hat" => Accent(symbol::COMBINING_CIRCUMFLEX_ACCENT, true, Some(OpAttr::StretchyFalse)),
325+
"hat" => Accent(symbol::COMBINING_CIRCUMFLEX_ACCENT, true, OpAttrs::STRETCHY_FALSE),
326326
"hbar" => Letter(symbol::PLANCK_CONSTANT_OVER_TWO_PI, Mode::Math),
327327
"heartsuit" => Letter(symbol::WHITE_HEART_SUIT, Mode::Math),
328328
"hookleftarrow" => Relation(symbol::LEFTWARDS_ARROW_WITH_HOOK),
@@ -511,10 +511,10 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
511511
"otimes" => ForceBinaryOp(symbol::CIRCLED_TIMES.as_op()),
512512
"overbrace" => OverUnderBrace(symbol::TOP_CURLY_BRACKET, true),
513513
"overbracket" => OverUnderBrace(symbol::TOP_SQUARE_BRACKET, true),
514-
"overleftarrow" => Accent(symbol::LEFTWARDS_ARROW, true, None),
515-
"overline" => Accent(symbol::LOW_LINE, true, None),
514+
"overleftarrow" => Accent(symbol::LEFTWARDS_ARROW, true, OpAttrs::empty()),
515+
"overline" => Accent(symbol::LOW_LINE, true, OpAttrs::empty()),
516516
"overparen" => OverUnderBrace(symbol::TOP_PARENTHESIS, true),
517-
"overrightarrow" => Accent(symbol::RIGHTWARDS_ARROW, true, None),
517+
"overrightarrow" => Accent(symbol::RIGHTWARDS_ARROW, true, OpAttrs::empty()),
518518
"overset" => Overset,
519519
"parallel" => Relation(symbol::PARALLEL_TO),
520520
"partial" => Letter(symbol::PARTIAL_DIFFERENTIAL, Mode::Math),
@@ -641,7 +641,7 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
641641
"theta" => Letter(symbol::GREEK_SMALL_LETTER_THETA, Mode::Math),
642642
"thickspace" => Space(LatexUnit::Mu.length_with_unit(5.0)),
643643
"thinspace" => Space(LatexUnit::Mu.length_with_unit(3.0)),
644-
"tilde" => Accent(symbol::COMBINING_TILDE, true, Some(OpAttr::StretchyTrue)), // should be stretchy=false, but Safari has a bug
644+
"tilde" => Accent(symbol::COMBINING_TILDE, true, OpAttrs::STRETCHY_TRUE), // should be stretchy=false, but Safari has a bug
645645
"times" => ForceBinaryOp(symbol::MULTIPLICATION_SIGN.as_op()),
646646
"to" => Relation(symbol::RIGHTWARDS_ARROW),
647647
"top" => Letter(symbol::DOWN_TACK, Mode::Math),
@@ -658,7 +658,7 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
658658
"ulcorner" => Letter(symbol::TOP_LEFT_CORNER, Mode::Math),
659659
"underbrace" => OverUnderBrace(symbol::BOTTOM_CURLY_BRACKET, false),
660660
"underbracket" => OverUnderBrace(symbol::BOTTOM_SQUARE_BRACKET, false),
661-
"underline" => Accent(symbol::LOW_LINE, false, None),
661+
"underline" => Accent(symbol::LOW_LINE, false, OpAttrs::empty()),
662662
"underparen" => OverUnderBrace(symbol::BOTTOM_PARENTHESIS, false),
663663
"underset" => Underset,
664664
"unlhd" => Relation(symbol::NORMAL_SUBGROUP_OF_OR_EQUAL_TO),
@@ -696,18 +696,18 @@ static COMMANDS: phf::Map<&'static str, Token> = phf::phf_map! {
696696
"vartriangle" => Letter(symbol::WHITE_UP_POINTING_TRIANGLE, Mode::Math),
697697
"vdash" => Relation(symbol::RIGHT_TACK),
698698
"vdots" => Relation(symbol::VERTICAL_ELLIPSIS),
699-
"vec" => Accent(symbol::COMBINING_RIGHT_ARROW_ABOVE, true, Some(OpAttr::StretchyFalse)),
699+
"vec" => Accent(symbol::COMBINING_RIGHT_ARROW_ABOVE, true, OpAttrs::STRETCHY_FALSE),
700700
"vee" => BinaryOp(symbol::LOGICAL_OR),
701701
"veebar" => BinaryOp(symbol::XOR),
702702
"veeeq" => Relation(symbol::EQUIANGULAR_TO), // from "stix"
703703
"venus" => Letter(symbol::FEMALE_SIGN, Mode::Math),
704704
"vert" => Ord(symbol::VERTICAL_LINE),
705705
"wedge" => BinaryOp(symbol::LOGICAL_AND),
706706
"wedgeq" => Relation(symbol::ESTIMATES), // from "stix"
707-
"widecheck" => Accent(symbol::CARON, true, None),
708-
"widehat" => Accent(symbol::COMBINING_CIRCUMFLEX_ACCENT, true, Some(OpAttr::StretchyTrue)),
707+
"widecheck" => Accent(symbol::CARON, true, OpAttrs::empty()),
708+
"widehat" => Accent(symbol::COMBINING_CIRCUMFLEX_ACCENT, true, OpAttrs::STRETCHY_TRUE),
709709
"wideparen" => OverUnderBrace(symbol::TOP_PARENTHESIS, true),
710-
"widetilde" => Accent(symbol::TILDE, true, None),
710+
"widetilde" => Accent(symbol::TILDE, true, OpAttrs::empty()),
711711
"wp" => Letter(symbol::SCRIPT_CAPITAL_P, Mode::Math),
712712
"wr" => ForceBinaryOp(symbol::WREATH_PRODUCT.as_op()),
713713
"xcancel" => Enclose(Notation::UP_DIAGONAL.union(Notation::DOWN_DIAGONAL)),

0 commit comments

Comments
 (0)