]> luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/excel.js
Initial commit.
[flow-web.git] / static / highlight / languages / excel.js
1 /*! `excel` grammar compiled for Highlight.js 11.11.1 */
2 (function(){
3 var hljsGrammar = (function () {
4 'use strict';
5
6 /*
7 Language: Excel formulae
8 Author: Victor Zhou <OiCMudkips@users.noreply.github.com>
9 Description: Excel formulae
10 Website: https://products.office.com/en-us/excel/
11 Category: enterprise
12 */
13
14 /** @type LanguageFn */
15 function excel(hljs) {
16 // built-in functions imported from https://web.archive.org/web/20241205190205/https://support.microsoft.com/en-us/office/excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188
17 const BUILT_INS = [
18 "ABS",
19 "ACCRINT",
20 "ACCRINTM",
21 "ACOS",
22 "ACOSH",
23 "ACOT",
24 "ACOTH",
25 "AGGREGATE",
26 "ADDRESS",
27 "AMORDEGRC",
28 "AMORLINC",
29 "AND",
30 "ARABIC",
31 "AREAS",
32 "ARRAYTOTEXT",
33 "ASC",
34 "ASIN",
35 "ASINH",
36 "ATAN",
37 "ATAN2",
38 "ATANH",
39 "AVEDEV",
40 "AVERAGE",
41 "AVERAGEA",
42 "AVERAGEIF",
43 "AVERAGEIFS",
44 "BAHTTEXT",
45 "BASE",
46 "BESSELI",
47 "BESSELJ",
48 "BESSELK",
49 "BESSELY",
50 "BETADIST",
51 "BETA.DIST",
52 "BETAINV",
53 "BETA.INV",
54 "BIN2DEC",
55 "BIN2HEX",
56 "BIN2OCT",
57 "BINOMDIST",
58 "BINOM.DIST",
59 "BINOM.DIST.RANGE",
60 "BINOM.INV",
61 "BITAND",
62 "BITLSHIFT",
63 "BITOR",
64 "BITRSHIFT",
65 "BITXOR",
66 "BYCOL",
67 "BYROW",
68 "CALL",
69 "CEILING",
70 "CEILING.MATH",
71 "CEILING.PRECISE",
72 "CELL",
73 "CHAR",
74 "CHIDIST",
75 "CHIINV",
76 "CHITEST",
77 "CHISQ.DIST",
78 "CHISQ.DIST.RT",
79 "CHISQ.INV",
80 "CHISQ.INV.RT",
81 "CHISQ.TEST",
82 "CHOOSE",
83 "CHOOSECOLS",
84 "CHOOSEROWS",
85 "CLEAN",
86 "CODE",
87 "COLUMN",
88 "COLUMNS",
89 "COMBIN",
90 "COMBINA",
91 "COMPLEX",
92 "CONCAT",
93 "CONCATENATE",
94 "CONFIDENCE",
95 "CONFIDENCE.NORM",
96 "CONFIDENCE.T",
97 "CONVERT",
98 "CORREL",
99 "COS",
100 "COSH",
101 "COT",
102 "COTH",
103 "COUNT",
104 "COUNTA",
105 "COUNTBLANK",
106 "COUNTIF",
107 "COUNTIFS",
108 "COUPDAYBS",
109 "COUPDAYS",
110 "COUPDAYSNC",
111 "COUPNCD",
112 "COUPNUM",
113 "COUPPCD",
114 "COVAR",
115 "COVARIANCE.P",
116 "COVARIANCE.S",
117 "CRITBINOM",
118 "CSC",
119 "CSCH",
120 "CUBEKPIMEMBER",
121 "CUBEMEMBER",
122 "CUBEMEMBERPROPERTY",
123 "CUBERANKEDMEMBER",
124 "CUBESET",
125 "CUBESETCOUNT",
126 "CUBEVALUE",
127 "CUMIPMT",
128 "CUMPRINC",
129 "DATE",
130 "DATEDIF",
131 "DATEVALUE",
132 "DAVERAGE",
133 "DAY",
134 "DAYS",
135 "DAYS360",
136 "DB",
137 "DBCS",
138 "DCOUNT",
139 "DCOUNTA",
140 "DDB",
141 "DEC2BIN",
142 "DEC2HEX",
143 "DEC2OCT",
144 "DECIMAL",
145 "DEGREES",
146 "DELTA",
147 "DEVSQ",
148 "DGET",
149 "DISC",
150 "DMAX",
151 "DMIN",
152 "DOLLAR",
153 "DOLLARDE",
154 "DOLLARFR",
155 "DPRODUCT",
156 "DROP",
157 "DSTDEV",
158 "DSTDEVP",
159 "DSUM",
160 "DURATION",
161 "DVAR",
162 "DVARP",
163 "EDATE",
164 "EFFECT",
165 "ENCODEURL",
166 "EOMONTH",
167 "ERF",
168 "ERF.PRECISE",
169 "ERFC",
170 "ERFC.PRECISE",
171 "ERROR.TYPE",
172 "EUROCONVERT",
173 "EVEN",
174 "EXACT",
175 "EXP",
176 "EXPAND",
177 "EXPON.DIST",
178 "EXPONDIST",
179 "FACT",
180 "FACTDOUBLE",
181 "FALSE",
182 "F.DIST",
183 "FDIST",
184 "F.DIST.RT",
185 "FILTER",
186 "FILTERXML",
187 "FIND",
188 "FINDB",
189 "F.INV",
190 "F.INV.RT",
191 "FINV",
192 "FISHER",
193 "FISHERINV",
194 "FIXED",
195 "FLOOR",
196 "FLOOR.MATH",
197 "FLOOR.PRECISE",
198 "FORECAST",
199 "FORECAST.ETS",
200 "FORECAST.ETS.CONFINT",
201 "FORECAST.ETS.SEASONALITY",
202 "FORECAST.ETS.STAT",
203 "FORECAST.LINEAR",
204 "FORMULATEXT",
205 "FREQUENCY",
206 "F.TEST",
207 "FTEST",
208 "FV",
209 "FVSCHEDULE",
210 "GAMMA",
211 "GAMMA.DIST",
212 "GAMMADIST",
213 "GAMMA.INV",
214 "GAMMAINV",
215 "GAMMALN",
216 "GAMMALN.PRECISE",
217 "GAUSS",
218 "GCD",
219 "GEOMEAN",
220 "GESTEP",
221 "GETPIVOTDATA",
222 "GROWTH",
223 "HARMEAN",
224 "HEX2BIN",
225 "HEX2DEC",
226 "HEX2OCT",
227 "HLOOKUP",
228 "HOUR",
229 "HSTACK",
230 "HYPERLINK",
231 "HYPGEOM.DIST",
232 "HYPGEOMDIST",
233 "IF",
234 "IFERROR",
235 "IFNA",
236 "IFS",
237 "IMABS",
238 "IMAGE",
239 "IMAGINARY",
240 "IMARGUMENT",
241 "IMCONJUGATE",
242 "IMCOS",
243 "IMCOSH",
244 "IMCOT",
245 "IMCSC",
246 "IMCSCH",
247 "IMDIV",
248 "IMEXP",
249 "IMLN",
250 "IMLOG10",
251 "IMLOG2",
252 "IMPOWER",
253 "IMPRODUCT",
254 "IMREAL",
255 "IMSEC",
256 "IMSECH",
257 "IMSIN",
258 "IMSINH",
259 "IMSQRT",
260 "IMSUB",
261 "IMSUM",
262 "IMTAN",
263 "INDEX",
264 "INDIRECT",
265 "INFO",
266 "INT",
267 "INTERCEPT",
268 "INTRATE",
269 "IPMT",
270 "IRR",
271 "ISBLANK",
272 "ISERR",
273 "ISERROR",
274 "ISEVEN",
275 "ISFORMULA",
276 "ISLOGICAL",
277 "ISNA",
278 "ISNONTEXT",
279 "ISNUMBER",
280 "ISODD",
281 "ISOMITTED",
282 "ISREF",
283 "ISTEXT",
284 "ISO.CEILING",
285 "ISOWEEKNUM",
286 "ISPMT",
287 "JIS",
288 "KURT",
289 "LAMBDA",
290 "LARGE",
291 "LCM",
292 "LEFT",
293 "LEFTB",
294 "LEN",
295 "LENB",
296 "LET",
297 "LINEST",
298 "LN",
299 "LOG",
300 "LOG10",
301 "LOGEST",
302 "LOGINV",
303 "LOGNORM.DIST",
304 "LOGNORMDIST",
305 "LOGNORM.INV",
306 "LOOKUP",
307 "LOWER",
308 "MAKEARRAY",
309 "MAP",
310 "MATCH",
311 "MAX",
312 "MAXA",
313 "MAXIFS",
314 "MDETERM",
315 "MDURATION",
316 "MEDIAN",
317 "MID",
318 "MIDB",
319 "MIN",
320 "MINIFS",
321 "MINA",
322 "MINUTE",
323 "MINVERSE",
324 "MIRR",
325 "MMULT",
326 "MOD",
327 "MODE",
328 "MODE.MULT",
329 "MODE.SNGL",
330 "MONTH",
331 "MROUND",
332 "MULTINOMIAL",
333 "MUNIT",
334 "N",
335 "NA",
336 "NEGBINOM.DIST",
337 "NEGBINOMDIST",
338 "NETWORKDAYS",
339 "NETWORKDAYS.INTL",
340 "NOMINAL",
341 "NORM.DIST",
342 "NORMDIST",
343 "NORMINV",
344 "NORM.INV",
345 "NORM.S.DIST",
346 "NORMSDIST",
347 "NORM.S.INV",
348 "NORMSINV",
349 "NOT",
350 "NOW",
351 "NPER",
352 "NPV",
353 "NUMBERVALUE",
354 "OCT2BIN",
355 "OCT2DEC",
356 "OCT2HEX",
357 "ODD",
358 "ODDFPRICE",
359 "ODDFYIELD",
360 "ODDLPRICE",
361 "ODDLYIELD",
362 "OFFSET",
363 "OR",
364 "PDURATION",
365 "PEARSON",
366 "PERCENTILE.EXC",
367 "PERCENTILE.INC",
368 "PERCENTILE",
369 "PERCENTRANK.EXC",
370 "PERCENTRANK.INC",
371 "PERCENTRANK",
372 "PERMUT",
373 "PERMUTATIONA",
374 "PHI",
375 "PHONETIC",
376 "PI",
377 "PMT",
378 "POISSON.DIST",
379 "POISSON",
380 "POWER",
381 "PPMT",
382 "PRICE",
383 "PRICEDISC",
384 "PRICEMAT",
385 "PROB",
386 "PRODUCT",
387 "PROPER",
388 "PV",
389 "QUARTILE",
390 "QUARTILE.EXC",
391 "QUARTILE.INC",
392 "QUOTIENT",
393 "RADIANS",
394 "RAND",
395 "RANDARRAY",
396 "RANDBETWEEN",
397 "RANK.AVG",
398 "RANK.EQ",
399 "RANK",
400 "RATE",
401 "RECEIVED",
402 "REDUCE",
403 "REGISTER.ID",
404 "REPLACE",
405 "REPLACEB",
406 "REPT",
407 "RIGHT",
408 "RIGHTB",
409 "ROMAN",
410 "ROUND",
411 "ROUNDDOWN",
412 "ROUNDUP",
413 "ROW",
414 "ROWS",
415 "RRI",
416 "RSQ",
417 "RTD",
418 "SCAN",
419 "SEARCH",
420 "SEARCHB",
421 "SEC",
422 "SECH",
423 "SECOND",
424 "SEQUENCE",
425 "SERIESSUM",
426 "SHEET",
427 "SHEETS",
428 "SIGN",
429 "SIN",
430 "SINH",
431 "SKEW",
432 "SKEW.P",
433 "SLN",
434 "SLOPE",
435 "SMALL",
436 "SORT",
437 "SORTBY",
438 "SQRT",
439 "SQRTPI",
440 "SQL.REQUEST",
441 "STANDARDIZE",
442 "STOCKHISTORY",
443 "STDEV",
444 "STDEV.P",
445 "STDEV.S",
446 "STDEVA",
447 "STDEVP",
448 "STDEVPA",
449 "STEYX",
450 "SUBSTITUTE",
451 "SUBTOTAL",
452 "SUM",
453 "SUMIF",
454 "SUMIFS",
455 "SUMPRODUCT",
456 "SUMSQ",
457 "SUMX2MY2",
458 "SUMX2PY2",
459 "SUMXMY2",
460 "SWITCH",
461 "SYD",
462 "T",
463 "TAN",
464 "TANH",
465 "TAKE",
466 "TBILLEQ",
467 "TBILLPRICE",
468 "TBILLYIELD",
469 "T.DIST",
470 "T.DIST.2T",
471 "T.DIST.RT",
472 "TDIST",
473 "TEXT",
474 "TEXTAFTER",
475 "TEXTBEFORE",
476 "TEXTJOIN",
477 "TEXTSPLIT",
478 "TIME",
479 "TIMEVALUE",
480 "T.INV",
481 "T.INV.2T",
482 "TINV",
483 "TOCOL",
484 "TOROW",
485 "TODAY",
486 "TRANSPOSE",
487 "TREND",
488 "TRIM",
489 "TRIMMEAN",
490 "TRUE",
491 "TRUNC",
492 "T.TEST",
493 "TTEST",
494 "TYPE",
495 "UNICHAR",
496 "UNICODE",
497 "UNIQUE",
498 "UPPER",
499 "VALUE",
500 "VALUETOTEXT",
501 "VAR",
502 "VAR.P",
503 "VAR.S",
504 "VARA",
505 "VARP",
506 "VARPA",
507 "VDB",
508 "VLOOKUP",
509 "VSTACK",
510 "WEBSERVICE",
511 "WEEKDAY",
512 "WEEKNUM",
513 "WEIBULL",
514 "WEIBULL.DIST",
515 "WORKDAY",
516 "WORKDAY.INTL",
517 "WRAPCOLS",
518 "WRAPROWS",
519 "XIRR",
520 "XLOOKUP",
521 "XMATCH",
522 "XNPV",
523 "XOR",
524 "YEAR",
525 "YEARFRAC",
526 "YIELD",
527 "YIELDDISC",
528 "YIELDMAT",
529 "Z.TEST",
530 "ZTEST"
531 ];
532 return {
533 name: 'Excel formulae',
534 aliases: [
535 'xlsx',
536 'xls'
537 ],
538 case_insensitive: true,
539 keywords: {
540 $pattern: /[a-zA-Z][\w\.]*/,
541 built_in: BUILT_INS
542 },
543 contains: [
544 {
545 /* matches a beginning equal sign found in Excel formula examples */
546 begin: /^=/,
547 end: /[^=]/,
548 returnEnd: true,
549 illegal: /=/, /* only allow single equal sign at front of line */
550 relevance: 10
551 },
552 /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */
553 {
554 /* matches a reference to a single cell */
555 className: 'symbol',
556 begin: /\b[A-Z]{1,2}\d+\b/,
557 end: /[^\d]/,
558 excludeEnd: true,
559 relevance: 0
560 },
561 {
562 /* matches a reference to a range of cells */
563 className: 'symbol',
564 begin: /[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,
565 relevance: 0
566 },
567 hljs.BACKSLASH_ESCAPE,
568 hljs.QUOTE_STRING_MODE,
569 {
570 className: 'number',
571 begin: hljs.NUMBER_RE + '(%)?',
572 relevance: 0
573 },
574 /* Excel formula comments are done by putting the comment in a function call to N() */
575 hljs.COMMENT(/\bN\(/, /\)/,
576 {
577 excludeBegin: true,
578 excludeEnd: true,
579 illegal: /\n/
580 })
581 ]
582 };
583 }
584
585 return excel;
586
587 })();
588
589 hljs.registerLanguage('excel', hljsGrammar);
590 })();