-
Notifications
You must be signed in to change notification settings - Fork 6
/
macros.js
65 lines (50 loc) · 1.4 KB
/
macros.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
* @author André Storhaug <[email protected]>
* @copyright 2018 NTNU
*/
export const MACROS = new Map([
['begin', null],
['end', null],
['to', null],
['cdot', null],
['times', null],
['ast', null],
['div', null],
['mod', null],
['pm', null],
['frac', null],
['infty', 'inf'],
['operatorname', null],
// ['mathrm', null],
]);
export const IGNORED_MACROS = [
'left', 'right'
];
// Override macro nodes
export const MACROS_OVERRIDE = new Map([
['cdot', {type: 'operator', operatorType: 'infix', value: '*'}],
['times', {type: 'operator', operatorType: 'infix', value: '*'}],
['ast', {type: 'operator', operatorType: 'infix', value: '*'}],
['div', {type: 'operator', operatorType: 'infix', value: '/'}],
['mod', {type: 'operator', operatorType: 'infix', value: '%'}],
['pm', {type: 'operator', operatorType: 'infix', value: '+-'}], // The sign ± dosn't work with Maxima.
]);
export function isMacro(macroName) {
let isMatch = false;
let macro = MACROS.get(macroName);
if(macro !== undefined) {
isMatch = true;
}
return isMatch;
}
export function isIgnoredMacro(macroName) {
let isMatch = false;
let i = 0;
while (!isMatch && i < IGNORED_MACROS.length) {
if (macroName === IGNORED_MACROS[i]) {
isMatch = true;
}
i++;
}
return isMatch;
}