Mercurial > repos > public > wdown
annotate katex/contrib/render-a11y-string.mjs @ 8:4a25b534c81c javascript-experiment
Add v8 engine and include katex
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 17 Jun 2020 21:43:52 +0200 |
parents | |
children |
rev | line source |
---|---|
8
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 import katex from '../katex.mjs'; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 /** |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 * renderA11yString returns a readable string. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 * |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 * In some cases the string will have the proper semantic math |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 * meaning,: |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 * renderA11yString("\\frac{1}{2}"") |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 * -> "start fraction, 1, divided by, 2, end fraction" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 * |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 * However, other cases do not: |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 * renderA11yString("f(x) = x^2") |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 * -> "f, left parenthesis, x, right parenthesis, equals, x, squared" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 * |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 * The commas in the string aim to increase ease of understanding |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 * when read by a screenreader. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 */ |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 const stringMap = { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 "(": "left parenthesis", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 ")": "right parenthesis", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 "[": "open bracket", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 "]": "close bracket", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 "\\{": "left brace", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 "\\}": "right brace", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 "\\lvert": "open vertical bar", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 "\\rvert": "close vertical bar", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 "|": "vertical bar", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 "\\uparrow": "up arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 "\\Uparrow": "up arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 "\\downarrow": "down arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 "\\Downarrow": "down arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 "\\updownarrow": "up down arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 "\\leftarrow": "left arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 "\\Leftarrow": "left arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 "\\rightarrow": "right arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 "\\Rightarrow": "right arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 "\\langle": "open angle", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 "\\rangle": "close angle", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 "\\lfloor": "open floor", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 "\\rfloor": "close floor", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 "\\int": "integral", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 "\\intop": "integral", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 "\\lim": "limit", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 "\\ln": "natural log", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 "\\log": "log", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 "\\sin": "sine", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 "\\cos": "cosine", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 "\\tan": "tangent", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
49 "\\cot": "cotangent", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 "\\sum": "sum", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 "/": "slash", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 ",": "comma", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 ".": "point", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 "-": "negative", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 "+": "plus", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 "~": "tilde", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 ":": "colon", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 "?": "question mark", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 "'": "apostrophe", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 "\\%": "percent", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 " ": "space", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
62 "\\ ": "space", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 "\\$": "dollar sign", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 "\\angle": "angle", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
65 "\\degree": "degree", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 "\\circ": "circle", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 "\\vec": "vector", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 "\\triangle": "triangle", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 "\\pi": "pi", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 "\\prime": "prime", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 "\\infty": "infinity", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
72 "\\alpha": "alpha", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 "\\beta": "beta", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 "\\gamma": "gamma", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 "\\omega": "omega", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
76 "\\theta": "theta", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 "\\sigma": "sigma", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 "\\lambda": "lambda", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 "\\tau": "tau", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 "\\Delta": "delta", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 "\\delta": "delta", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 "\\mu": "mu", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 "\\rho": "rho", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 "\\nabla": "del", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 "\\ell": "ell", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 "\\ldots": "dots", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 // TODO: add entries for all accents |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 "\\hat": "hat", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 "\\acute": "acute" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 const powerMap = { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 "prime": "prime", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 "degree": "degrees", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 "circle": "degrees", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 "2": "squared", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 "3": "cubed" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 const openMap = { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 "|": "open vertical bar", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 ".": "" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 const closeMap = { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 "|": "close vertical bar", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 ".": "" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 const binMap = { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
107 "+": "plus", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
108 "-": "minus", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
109 "\\pm": "plus minus", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
110 "\\cdot": "dot", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
111 "*": "times", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
112 "/": "divided by", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
113 "\\times": "times", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
114 "\\div": "divided by", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
115 "\\circ": "circle", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
116 "\\bullet": "bullet" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
117 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
118 const relMap = { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 "=": "equals", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
120 "\\approx": "approximately equals", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
121 "≠": "does not equal", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
122 "\\geq": "is greater than or equal to", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
123 "\\ge": "is greater than or equal to", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
124 "\\leq": "is less than or equal to", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
125 "\\le": "is less than or equal to", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
126 ">": "is greater than", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
127 "<": "is less than", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
128 "\\leftarrow": "left arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
129 "\\Leftarrow": "left arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
130 "\\rightarrow": "right arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
131 "\\Rightarrow": "right arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
132 ":": "colon" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
133 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
134 const accentUnderMap = { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 "\\underleftarrow": "left arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
136 "\\underrightarrow": "right arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
137 "\\underleftrightarrow": "left-right arrow", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
138 "\\undergroup": "group", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
139 "\\underlinesegment": "line segment", |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
140 "\\utilde": "tilde" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
141 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
143 const buildString = (str, type, a11yStrings) => { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
144 if (!str) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
145 return; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
146 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
147 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
148 let ret; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
149 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
150 if (type === "open") { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
151 ret = str in openMap ? openMap[str] : stringMap[str] || str; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
152 } else if (type === "close") { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
153 ret = str in closeMap ? closeMap[str] : stringMap[str] || str; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
154 } else if (type === "bin") { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
155 ret = binMap[str] || str; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
156 } else if (type === "rel") { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
157 ret = relMap[str] || str; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
158 } else { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
159 ret = stringMap[str] || str; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
160 } // If the text to add is a number and there is already a string |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
161 // in the list and the last string is a number then we should |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
162 // combine them into a single number |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
163 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
164 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
165 if (/^\d+$/.test(ret) && a11yStrings.length > 0 && // TODO(kevinb): check that the last item in a11yStrings is a string |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
166 // I think we might be able to drop the nested arrays, which would make |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
167 // this easier to type - $FlowFixMe |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
168 /^\d+$/.test(a11yStrings[a11yStrings.length - 1])) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
169 a11yStrings[a11yStrings.length - 1] += ret; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
170 } else if (ret) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
171 a11yStrings.push(ret); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
172 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
173 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
174 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
175 const buildRegion = (a11yStrings, callback) => { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
176 const regionStrings = []; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
177 a11yStrings.push(regionStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
178 callback(regionStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
179 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
180 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
181 const handleObject = (tree, a11yStrings, atomType) => { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
182 // Everything else is assumed to be an object... |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
183 switch (tree.type) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
184 case "accent": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
185 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
186 buildRegion(a11yStrings, a11yStrings => { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
187 buildA11yStrings(tree.base, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
188 a11yStrings.push("with"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
189 buildString(tree.label, "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
190 a11yStrings.push("on top"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
191 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
192 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
193 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
194 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
195 case "accentUnder": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
196 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
197 buildRegion(a11yStrings, a11yStrings => { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
198 buildA11yStrings(tree.base, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
199 a11yStrings.push("with"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
200 buildString(accentUnderMap[tree.label], "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
201 a11yStrings.push("underneath"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
202 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
203 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
204 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
205 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
206 case "accent-token": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
207 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
208 // Used internally by accent symbols. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
209 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
210 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
211 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
212 case "atom": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
213 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
214 const text = tree.text; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
215 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
216 switch (tree.family) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
217 case "bin": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
218 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
219 buildString(text, "bin", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
220 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
221 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
222 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
223 case "close": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
224 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
225 buildString(text, "close", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
226 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
227 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
228 // TODO(kevinb): figure out what should be done for inner |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
229 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
230 case "inner": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
231 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
232 buildString(tree.text, "inner", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
233 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
234 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
235 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
236 case "open": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
237 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
238 buildString(text, "open", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
239 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
240 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
241 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
242 case "punct": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
243 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
244 buildString(text, "punct", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
245 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
246 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
247 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
248 case "rel": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
249 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
250 buildString(text, "rel", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
251 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
252 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
253 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
254 default: |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
255 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
256 tree.family; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
257 throw new Error(`"${tree.family}" is not a valid atom type`); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
258 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
259 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
260 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
261 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
262 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
263 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
264 case "color": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
265 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
266 const color = tree.color.replace(/katex-/, ""); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
267 buildRegion(a11yStrings, regionStrings => { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
268 regionStrings.push("start color " + color); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
269 buildA11yStrings(tree.body, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
270 regionStrings.push("end color " + color); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
271 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
272 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
273 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
274 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
275 case "color-token": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
276 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
277 // Used by \color, \colorbox, and \fcolorbox but not directly rendered. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
278 // It's a leaf node and has no children so just break. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
279 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
280 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
281 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
282 case "delimsizing": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
283 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
284 if (tree.delim && tree.delim !== ".") { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
285 buildString(tree.delim, "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
286 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
287 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
288 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
289 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
290 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
291 case "genfrac": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
292 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
293 buildRegion(a11yStrings, regionStrings => { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
294 // genfrac can have unbalanced delimiters |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
295 const leftDelim = tree.leftDelim, |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
296 rightDelim = tree.rightDelim; // NOTE: Not sure if this is a safe assumption |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
297 // hasBarLine true -> fraction, false -> binomial |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
298 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
299 if (tree.hasBarLine) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
300 regionStrings.push("start fraction"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
301 leftDelim && buildString(leftDelim, "open", regionStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
302 buildA11yStrings(tree.numer, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
303 regionStrings.push("divided by"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
304 buildA11yStrings(tree.denom, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
305 rightDelim && buildString(rightDelim, "close", regionStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
306 regionStrings.push("end fraction"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
307 } else { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
308 regionStrings.push("start binomial"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
309 leftDelim && buildString(leftDelim, "open", regionStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
310 buildA11yStrings(tree.numer, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
311 regionStrings.push("over"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
312 buildA11yStrings(tree.denom, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
313 rightDelim && buildString(rightDelim, "close", regionStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
314 regionStrings.push("end binomial"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
315 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
316 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
317 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
318 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
319 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
320 case "kern": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
321 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
322 // No op: we don't attempt to present kerning information |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
323 // to the screen reader. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
324 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
325 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
326 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
327 case "leftright": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
328 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
329 buildRegion(a11yStrings, regionStrings => { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
330 buildString(tree.left, "open", regionStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
331 buildA11yStrings(tree.body, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
332 buildString(tree.right, "close", regionStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
333 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
334 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
335 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
336 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
337 case "leftright-right": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
338 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
339 // TODO: double check that this is a no-op |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
340 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
341 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
342 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
343 case "lap": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
344 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
345 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
346 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
347 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
348 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
349 case "mathord": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
350 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
351 buildString(tree.text, "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
352 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
353 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
354 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
355 case "op": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
356 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
357 const body = tree.body, |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
358 name = tree.name; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
359 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
360 if (body) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
361 buildA11yStrings(body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
362 } else if (name) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
363 buildString(name, "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
364 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
365 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
366 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
367 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
368 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
369 case "op-token": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
370 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
371 // Used internally by operator symbols. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
372 buildString(tree.text, atomType, a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
373 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
374 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
375 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
376 case "ordgroup": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
377 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
378 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
379 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
380 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
381 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
382 case "overline": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
383 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
384 buildRegion(a11yStrings, function (a11yStrings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
385 a11yStrings.push("start overline"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
386 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
387 a11yStrings.push("end overline"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
388 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
389 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
390 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
391 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
392 case "phantom": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
393 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
394 a11yStrings.push("empty space"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
395 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
396 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
397 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
398 case "raisebox": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
399 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
400 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
401 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
402 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
403 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
404 case "rule": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
405 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
406 a11yStrings.push("rectangle"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
407 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
408 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
409 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
410 case "sizing": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
411 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
412 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
413 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
414 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
415 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
416 case "spacing": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
417 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
418 a11yStrings.push("space"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
419 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
420 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
421 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
422 case "styling": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
423 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
424 // We ignore the styling and just pass through the contents |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
425 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
426 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
427 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
428 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
429 case "sqrt": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
430 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
431 buildRegion(a11yStrings, regionStrings => { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
432 const body = tree.body, |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
433 index = tree.index; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
434 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
435 if (index) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
436 const indexString = flatten(buildA11yStrings(index, [], atomType)).join(","); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
437 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
438 if (indexString === "3") { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
439 regionStrings.push("cube root of"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
440 buildA11yStrings(body, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
441 regionStrings.push("end cube root"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
442 return; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
443 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
444 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
445 regionStrings.push("root"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
446 regionStrings.push("start index"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
447 buildA11yStrings(index, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
448 regionStrings.push("end index"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
449 return; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
450 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
451 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
452 regionStrings.push("square root of"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
453 buildA11yStrings(body, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
454 regionStrings.push("end square root"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
455 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
456 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
457 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
458 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
459 case "supsub": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
460 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
461 const base = tree.base, |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
462 sub = tree.sub, |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
463 sup = tree.sup; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
464 let isLog = false; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
465 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
466 if (base) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
467 buildA11yStrings(base, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
468 isLog = base.type === "op" && base.name === "\\log"; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
469 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
470 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
471 if (sub) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
472 const regionName = isLog ? "base" : "subscript"; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
473 buildRegion(a11yStrings, function (regionStrings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
474 regionStrings.push(`start ${regionName}`); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
475 buildA11yStrings(sub, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
476 regionStrings.push(`end ${regionName}`); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
477 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
478 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
479 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
480 if (sup) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
481 buildRegion(a11yStrings, function (regionStrings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
482 const supString = flatten(buildA11yStrings(sup, [], atomType)).join(","); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
483 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
484 if (supString in powerMap) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
485 regionStrings.push(powerMap[supString]); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
486 return; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
487 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
488 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
489 regionStrings.push("start superscript"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
490 buildA11yStrings(sup, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
491 regionStrings.push("end superscript"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
492 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
493 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
494 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
495 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
496 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
497 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
498 case "text": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
499 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
500 // TODO: handle other fonts |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
501 if (tree.font === "\\textbf") { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
502 buildRegion(a11yStrings, function (regionStrings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
503 regionStrings.push("start bold text"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
504 buildA11yStrings(tree.body, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
505 regionStrings.push("end bold text"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
506 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
507 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
508 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
509 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
510 buildRegion(a11yStrings, function (regionStrings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
511 regionStrings.push("start text"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
512 buildA11yStrings(tree.body, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
513 regionStrings.push("end text"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
514 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
515 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
516 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
517 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
518 case "textord": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
519 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
520 buildString(tree.text, atomType, a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
521 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
522 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
523 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
524 case "smash": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
525 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
526 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
527 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
528 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
529 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
530 case "enclose": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
531 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
532 // TODO: create a map for these. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
533 // TODO: differentiate between a body with a single atom, e.g. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
534 // "cancel a" instead of "start cancel, a, end cancel" |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
535 if (/cancel/.test(tree.label)) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
536 buildRegion(a11yStrings, function (regionStrings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
537 regionStrings.push("start cancel"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
538 buildA11yStrings(tree.body, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
539 regionStrings.push("end cancel"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
540 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
541 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
542 } else if (/box/.test(tree.label)) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
543 buildRegion(a11yStrings, function (regionStrings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
544 regionStrings.push("start box"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
545 buildA11yStrings(tree.body, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
546 regionStrings.push("end box"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
547 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
548 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
549 } else if (/sout/.test(tree.label)) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
550 buildRegion(a11yStrings, function (regionStrings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
551 regionStrings.push("start strikeout"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
552 buildA11yStrings(tree.body, regionStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
553 regionStrings.push("end strikeout"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
554 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
555 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
556 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
557 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
558 throw new Error(`KaTeX-a11y: enclose node with ${tree.label} not supported yet`); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
559 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
560 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
561 case "vphantom": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
562 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
563 throw new Error("KaTeX-a11y: vphantom not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
564 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
565 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
566 case "hphantom": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
567 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
568 throw new Error("KaTeX-a11y: hphantom not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
569 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
570 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
571 case "operatorname": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
572 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
573 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
574 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
575 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
576 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
577 case "array": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
578 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
579 throw new Error("KaTeX-a11y: array not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
580 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
581 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
582 case "raw": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
583 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
584 throw new Error("KaTeX-a11y: raw not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
585 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
586 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
587 case "size": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
588 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
589 // Although there are nodes of type "size" in the parse tree, they have |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
590 // no semantic meaning and should be ignored. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
591 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
592 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
593 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
594 case "url": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
595 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
596 throw new Error("KaTeX-a11y: url not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
597 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
598 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
599 case "tag": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
600 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
601 throw new Error("KaTeX-a11y: tag not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
602 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
603 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
604 case "verb": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
605 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
606 buildString(`start verbatim`, "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
607 buildString(tree.body, "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
608 buildString(`end verbatim`, "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
609 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
610 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
611 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
612 case "environment": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
613 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
614 throw new Error("KaTeX-a11y: environment not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
615 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
616 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
617 case "horizBrace": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
618 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
619 buildString(`start ${tree.label.slice(1)}`, "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
620 buildA11yStrings(tree.base, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
621 buildString(`end ${tree.label.slice(1)}`, "normal", a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
622 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
623 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
624 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
625 case "infix": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
626 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
627 // All infix nodes are replace with other nodes. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
628 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
629 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
630 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
631 case "includegraphics": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
632 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
633 throw new Error("KaTeX-a11y: includegraphics not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
634 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
635 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
636 case "font": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
637 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
638 // TODO: callout the start/end of specific fonts |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
639 // TODO: map \BBb{N} to "the naturals" or something like that |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
640 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
641 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
642 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
643 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
644 case "href": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
645 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
646 throw new Error("KaTeX-a11y: href not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
647 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
648 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
649 case "cr": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
650 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
651 // This is used by environments. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
652 throw new Error("KaTeX-a11y: cr not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
653 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
654 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
655 case "underline": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
656 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
657 buildRegion(a11yStrings, function (a11yStrings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
658 a11yStrings.push("start underline"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
659 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
660 a11yStrings.push("end underline"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
661 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
662 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
663 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
664 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
665 case "xArrow": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
666 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
667 throw new Error("KaTeX-a11y: xArrow not implemented yet"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
668 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
669 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
670 case "mclass": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
671 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
672 // \neq and \ne are macros so we let "htmlmathml" render the mathmal |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
673 // side of things and extract the text from that. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
674 const atomType = tree.mclass.slice(1); // $FlowFixMe: drop the leading "m" from the values in mclass |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
675 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
676 buildA11yStrings(tree.body, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
677 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
678 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
679 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
680 case "mathchoice": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
681 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
682 // TODO: track which which style we're using, e.g. dispaly, text, etc. |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
683 // default to text style if even that may not be the correct style |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
684 buildA11yStrings(tree.text, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
685 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
686 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
687 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
688 case "htmlmathml": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
689 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
690 buildA11yStrings(tree.mathml, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
691 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
692 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
693 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
694 case "middle": |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
695 { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
696 buildString(tree.delim, atomType, a11yStrings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
697 break; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
698 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
699 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
700 default: |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
701 tree.type; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
702 throw new Error("KaTeX a11y un-recognized type: " + tree.type); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
703 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
704 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
705 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
706 const buildA11yStrings = function buildA11yStrings(tree, a11yStrings, atomType) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
707 if (a11yStrings === void 0) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
708 a11yStrings = []; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
709 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
710 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
711 if (tree instanceof Array) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
712 for (let i = 0; i < tree.length; i++) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
713 buildA11yStrings(tree[i], a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
714 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
715 } else { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
716 handleObject(tree, a11yStrings, atomType); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
717 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
718 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
719 return a11yStrings; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
720 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
721 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
722 const flatten = function flatten(array) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
723 let result = []; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
724 array.forEach(function (item) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
725 if (item instanceof Array) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
726 result = result.concat(flatten(item)); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
727 } else { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
728 result.push(item); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
729 } |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
730 }); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
731 return result; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
732 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
733 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
734 const renderA11yString = function renderA11yString(text, settings) { |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
735 const tree = katex.__parse(text, settings); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
736 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
737 const a11yStrings = buildA11yStrings(tree, [], "normal"); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
738 return flatten(a11yStrings).join(", "); |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
739 }; |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
740 |
4a25b534c81c
Add v8 engine and include katex
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
741 export default renderA11yString; |