excel function

Mode excel(
  1. Highlight hljs
)

Highlight.js language definition for excel.

Implementation

Mode excel(Highlight hljs) {
  final Mode mode0 = Mode();
  mode0.begin = r'\\[\s\S]';
  mode0.relevance = 0;
  return Mode(
    name: r'Excel formulae',
    aliases: [r'xlsx', r'xls'],
    caseInsensitive: true,
    keywords: {
      r'$pattern': r'[a-zA-Z][\w\.]*',
      r'built_in': [
        r'ABS',
        r'ACCRINT',
        r'ACCRINTM',
        r'ACOS',
        r'ACOSH',
        r'ACOT',
        r'ACOTH',
        r'AGGREGATE',
        r'ADDRESS',
        r'AMORDEGRC',
        r'AMORLINC',
        r'AND',
        r'ARABIC',
        r'AREAS',
        r'ARRAYTOTEXT',
        r'ASC',
        r'ASIN',
        r'ASINH',
        r'ATAN',
        r'ATAN2',
        r'ATANH',
        r'AVEDEV',
        r'AVERAGE',
        r'AVERAGEA',
        r'AVERAGEIF',
        r'AVERAGEIFS',
        r'BAHTTEXT',
        r'BASE',
        r'BESSELI',
        r'BESSELJ',
        r'BESSELK',
        r'BESSELY',
        r'BETADIST',
        r'BETA.DIST',
        r'BETAINV',
        r'BETA.INV',
        r'BIN2DEC',
        r'BIN2HEX',
        r'BIN2OCT',
        r'BINOMDIST',
        r'BINOM.DIST',
        r'BINOM.DIST.RANGE',
        r'BINOM.INV',
        r'BITAND',
        r'BITLSHIFT',
        r'BITOR',
        r'BITRSHIFT',
        r'BITXOR',
        r'BYCOL',
        r'BYROW',
        r'CALL',
        r'CEILING',
        r'CEILING.MATH',
        r'CEILING.PRECISE',
        r'CELL',
        r'CHAR',
        r'CHIDIST',
        r'CHIINV',
        r'CHITEST',
        r'CHISQ.DIST',
        r'CHISQ.DIST.RT',
        r'CHISQ.INV',
        r'CHISQ.INV.RT',
        r'CHISQ.TEST',
        r'CHOOSE',
        r'CHOOSECOLS',
        r'CHOOSEROWS',
        r'CLEAN',
        r'CODE',
        r'COLUMN',
        r'COLUMNS',
        r'COMBIN',
        r'COMBINA',
        r'COMPLEX',
        r'CONCAT',
        r'CONCATENATE',
        r'CONFIDENCE',
        r'CONFIDENCE.NORM',
        r'CONFIDENCE.T',
        r'CONVERT',
        r'CORREL',
        r'COS',
        r'COSH',
        r'COT',
        r'COTH',
        r'COUNT',
        r'COUNTA',
        r'COUNTBLANK',
        r'COUNTIF',
        r'COUNTIFS',
        r'COUPDAYBS',
        r'COUPDAYS',
        r'COUPDAYSNC',
        r'COUPNCD',
        r'COUPNUM',
        r'COUPPCD',
        r'COVAR',
        r'COVARIANCE.P',
        r'COVARIANCE.S',
        r'CRITBINOM',
        r'CSC',
        r'CSCH',
        r'CUBEKPIMEMBER',
        r'CUBEMEMBER',
        r'CUBEMEMBERPROPERTY',
        r'CUBERANKEDMEMBER',
        r'CUBESET',
        r'CUBESETCOUNT',
        r'CUBEVALUE',
        r'CUMIPMT',
        r'CUMPRINC',
        r'DATE',
        r'DATEDIF',
        r'DATEVALUE',
        r'DAVERAGE',
        r'DAY',
        r'DAYS',
        r'DAYS360',
        r'DB',
        r'DBCS',
        r'DCOUNT',
        r'DCOUNTA',
        r'DDB',
        r'DEC2BIN',
        r'DEC2HEX',
        r'DEC2OCT',
        r'DECIMAL',
        r'DEGREES',
        r'DELTA',
        r'DEVSQ',
        r'DGET',
        r'DISC',
        r'DMAX',
        r'DMIN',
        r'DOLLAR',
        r'DOLLARDE',
        r'DOLLARFR',
        r'DPRODUCT',
        r'DROP',
        r'DSTDEV',
        r'DSTDEVP',
        r'DSUM',
        r'DURATION',
        r'DVAR',
        r'DVARP',
        r'EDATE',
        r'EFFECT',
        r'ENCODEURL',
        r'EOMONTH',
        r'ERF',
        r'ERF.PRECISE',
        r'ERFC',
        r'ERFC.PRECISE',
        r'ERROR.TYPE',
        r'EUROCONVERT',
        r'EVEN',
        r'EXACT',
        r'EXP',
        r'EXPAND',
        r'EXPON.DIST',
        r'EXPONDIST',
        r'FACT',
        r'FACTDOUBLE',
        r'FALSE',
        r'F.DIST',
        r'FDIST',
        r'F.DIST.RT',
        r'FILTER',
        r'FILTERXML',
        r'FIND',
        r'FINDB',
        r'F.INV',
        r'F.INV.RT',
        r'FINV',
        r'FISHER',
        r'FISHERINV',
        r'FIXED',
        r'FLOOR',
        r'FLOOR.MATH',
        r'FLOOR.PRECISE',
        r'FORECAST',
        r'FORECAST.ETS',
        r'FORECAST.ETS.CONFINT',
        r'FORECAST.ETS.SEASONALITY',
        r'FORECAST.ETS.STAT',
        r'FORECAST.LINEAR',
        r'FORMULATEXT',
        r'FREQUENCY',
        r'F.TEST',
        r'FTEST',
        r'FV',
        r'FVSCHEDULE',
        r'GAMMA',
        r'GAMMA.DIST',
        r'GAMMADIST',
        r'GAMMA.INV',
        r'GAMMAINV',
        r'GAMMALN',
        r'GAMMALN.PRECISE',
        r'GAUSS',
        r'GCD',
        r'GEOMEAN',
        r'GESTEP',
        r'GETPIVOTDATA',
        r'GROWTH',
        r'HARMEAN',
        r'HEX2BIN',
        r'HEX2DEC',
        r'HEX2OCT',
        r'HLOOKUP',
        r'HOUR',
        r'HSTACK',
        r'HYPERLINK',
        r'HYPGEOM.DIST',
        r'HYPGEOMDIST',
        r'IF',
        r'IFERROR',
        r'IFNA',
        r'IFS',
        r'IMABS',
        r'IMAGE',
        r'IMAGINARY',
        r'IMARGUMENT',
        r'IMCONJUGATE',
        r'IMCOS',
        r'IMCOSH',
        r'IMCOT',
        r'IMCSC',
        r'IMCSCH',
        r'IMDIV',
        r'IMEXP',
        r'IMLN',
        r'IMLOG10',
        r'IMLOG2',
        r'IMPOWER',
        r'IMPRODUCT',
        r'IMREAL',
        r'IMSEC',
        r'IMSECH',
        r'IMSIN',
        r'IMSINH',
        r'IMSQRT',
        r'IMSUB',
        r'IMSUM',
        r'IMTAN',
        r'INDEX',
        r'INDIRECT',
        r'INFO',
        r'INT',
        r'INTERCEPT',
        r'INTRATE',
        r'IPMT',
        r'IRR',
        r'ISBLANK',
        r'ISERR',
        r'ISERROR',
        r'ISEVEN',
        r'ISFORMULA',
        r'ISLOGICAL',
        r'ISNA',
        r'ISNONTEXT',
        r'ISNUMBER',
        r'ISODD',
        r'ISOMITTED',
        r'ISREF',
        r'ISTEXT',
        r'ISO.CEILING',
        r'ISOWEEKNUM',
        r'ISPMT',
        r'JIS',
        r'KURT',
        r'LAMBDA',
        r'LARGE',
        r'LCM',
        r'LEFT',
        r'LEFTB',
        r'LEN',
        r'LENB',
        r'LET',
        r'LINEST',
        r'LN',
        r'LOG',
        r'LOG10',
        r'LOGEST',
        r'LOGINV',
        r'LOGNORM.DIST',
        r'LOGNORMDIST',
        r'LOGNORM.INV',
        r'LOOKUP',
        r'LOWER',
        r'MAKEARRAY',
        r'MAP',
        r'MATCH',
        r'MAX',
        r'MAXA',
        r'MAXIFS',
        r'MDETERM',
        r'MDURATION',
        r'MEDIAN',
        r'MID',
        r'MIDB',
        r'MIN',
        r'MINIFS',
        r'MINA',
        r'MINUTE',
        r'MINVERSE',
        r'MIRR',
        r'MMULT',
        r'MOD',
        r'MODE',
        r'MODE.MULT',
        r'MODE.SNGL',
        r'MONTH',
        r'MROUND',
        r'MULTINOMIAL',
        r'MUNIT',
        r'N',
        r'NA',
        r'NEGBINOM.DIST',
        r'NEGBINOMDIST',
        r'NETWORKDAYS',
        r'NETWORKDAYS.INTL',
        r'NOMINAL',
        r'NORM.DIST',
        r'NORMDIST',
        r'NORMINV',
        r'NORM.INV',
        r'NORM.S.DIST',
        r'NORMSDIST',
        r'NORM.S.INV',
        r'NORMSINV',
        r'NOT',
        r'NOW',
        r'NPER',
        r'NPV',
        r'NUMBERVALUE',
        r'OCT2BIN',
        r'OCT2DEC',
        r'OCT2HEX',
        r'ODD',
        r'ODDFPRICE',
        r'ODDFYIELD',
        r'ODDLPRICE',
        r'ODDLYIELD',
        r'OFFSET',
        r'OR',
        r'PDURATION',
        r'PEARSON',
        r'PERCENTILE.EXC',
        r'PERCENTILE.INC',
        r'PERCENTILE',
        r'PERCENTRANK.EXC',
        r'PERCENTRANK.INC',
        r'PERCENTRANK',
        r'PERMUT',
        r'PERMUTATIONA',
        r'PHI',
        r'PHONETIC',
        r'PI',
        r'PMT',
        r'POISSON.DIST',
        r'POISSON',
        r'POWER',
        r'PPMT',
        r'PRICE',
        r'PRICEDISC',
        r'PRICEMAT',
        r'PROB',
        r'PRODUCT',
        r'PROPER',
        r'PV',
        r'QUARTILE',
        r'QUARTILE.EXC',
        r'QUARTILE.INC',
        r'QUOTIENT',
        r'RADIANS',
        r'RAND',
        r'RANDARRAY',
        r'RANDBETWEEN',
        r'RANK.AVG',
        r'RANK.EQ',
        r'RANK',
        r'RATE',
        r'RECEIVED',
        r'REDUCE',
        r'REGISTER.ID',
        r'REPLACE',
        r'REPLACEB',
        r'REPT',
        r'RIGHT',
        r'RIGHTB',
        r'ROMAN',
        r'ROUND',
        r'ROUNDDOWN',
        r'ROUNDUP',
        r'ROW',
        r'ROWS',
        r'RRI',
        r'RSQ',
        r'RTD',
        r'SCAN',
        r'SEARCH',
        r'SEARCHB',
        r'SEC',
        r'SECH',
        r'SECOND',
        r'SEQUENCE',
        r'SERIESSUM',
        r'SHEET',
        r'SHEETS',
        r'SIGN',
        r'SIN',
        r'SINH',
        r'SKEW',
        r'SKEW.P',
        r'SLN',
        r'SLOPE',
        r'SMALL',
        r'SORT',
        r'SORTBY',
        r'SQRT',
        r'SQRTPI',
        r'SQL.REQUEST',
        r'STANDARDIZE',
        r'STOCKHISTORY',
        r'STDEV',
        r'STDEV.P',
        r'STDEV.S',
        r'STDEVA',
        r'STDEVP',
        r'STDEVPA',
        r'STEYX',
        r'SUBSTITUTE',
        r'SUBTOTAL',
        r'SUM',
        r'SUMIF',
        r'SUMIFS',
        r'SUMPRODUCT',
        r'SUMSQ',
        r'SUMX2MY2',
        r'SUMX2PY2',
        r'SUMXMY2',
        r'SWITCH',
        r'SYD',
        r'T',
        r'TAN',
        r'TANH',
        r'TAKE',
        r'TBILLEQ',
        r'TBILLPRICE',
        r'TBILLYIELD',
        r'T.DIST',
        r'T.DIST.2T',
        r'T.DIST.RT',
        r'TDIST',
        r'TEXT',
        r'TEXTAFTER',
        r'TEXTBEFORE',
        r'TEXTJOIN',
        r'TEXTSPLIT',
        r'TIME',
        r'TIMEVALUE',
        r'T.INV',
        r'T.INV.2T',
        r'TINV',
        r'TOCOL',
        r'TOROW',
        r'TODAY',
        r'TRANSPOSE',
        r'TREND',
        r'TRIM',
        r'TRIMMEAN',
        r'TRUE',
        r'TRUNC',
        r'T.TEST',
        r'TTEST',
        r'TYPE',
        r'UNICHAR',
        r'UNICODE',
        r'UNIQUE',
        r'UPPER',
        r'VALUE',
        r'VALUETOTEXT',
        r'VAR',
        r'VAR.P',
        r'VAR.S',
        r'VARA',
        r'VARP',
        r'VARPA',
        r'VDB',
        r'VLOOKUP',
        r'VSTACK',
        r'WEBSERVICE',
        r'WEEKDAY',
        r'WEEKNUM',
        r'WEIBULL',
        r'WEIBULL.DIST',
        r'WORKDAY',
        r'WORKDAY.INTL',
        r'WRAPCOLS',
        r'WRAPROWS',
        r'XIRR',
        r'XLOOKUP',
        r'XMATCH',
        r'XNPV',
        r'XOR',
        r'YEAR',
        r'YEARFRAC',
        r'YIELD',
        r'YIELDDISC',
        r'YIELDMAT',
        r'Z.TEST',
        r'ZTEST',
      ],
    },
    contains: [
      Mode(
        begin: r'^=',
        end: r'[^=]',
        returnEnd: true,
        illegal: r'=',
        relevance: 10,
      ),
      Mode(
        scope: r'symbol',
        begin: r'\b[A-Z]{1,2}\d+\b',
        end: r'[^\d]',
        excludeEnd: true,
        relevance: 0,
      ),
      Mode(
        scope: r'symbol',
        begin: r'[A-Z]{0,2}\d*:[A-Z]{0,2}\d*',
        relevance: 0,
      ),
      mode0,
      Mode(
        scope: r'string',
        begin: r'"',
        end: r'"',
        illegal: r'\n',
        contains: [mode0],
      ),
      Mode(scope: r'number', begin: r'\b\d+(\.\d+)?(%)?', relevance: 0),
      Mode(
        scope: r'comment',
        begin: r'\bN\(',
        end: r'\)',
        contains: [
          Mode(
            scope: r'doctag',
            begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
            end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
            excludeBegin: true,
            relevance: 0,
          ),
          Mode(
            begin:
                r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
          ),
        ],
        excludeBegin: true,
        excludeEnd: true,
        illegal: r'\n',
      ),
    ],
  );
}