n1ql function
Highlight.js language definition for n1ql.
Implementation
Mode n1ql(Highlight hljs) {
final Mode mode0 = Mode();
final Mode mode1 = Mode();
final Mode mode2 = Mode();
final Mode mode3 = Mode();
mode0.begin = r'\\[\s\S]';
mode0.relevance = 0;
mode1.scope = r'comment';
mode1.begin = r'/\*';
mode1.end = r'\*/';
mode1.contains = [mode2, mode3];
mode2.scope = r'doctag';
mode2.begin = r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)';
mode2.end = r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):';
mode2.excludeBegin = true;
mode2.relevance = 0;
mode3.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}";
return Mode(
name: r'N1QL',
caseInsensitive: true,
contains: [
Mode(
beginKeywords:
r'build create index delete drop explain infer|10 insert merge prepare select update upsert|10',
end: r';',
keywords: {
r'keyword': [
r'all',
r'alter',
r'analyze',
r'and',
r'any',
r'array',
r'as',
r'asc',
r'begin',
r'between',
r'binary',
r'boolean',
r'break',
r'bucket',
r'build',
r'by',
r'call',
r'case',
r'cast',
r'cluster',
r'collate',
r'collection',
r'commit',
r'connect',
r'continue',
r'correlate',
r'cover',
r'create',
r'database',
r'dataset',
r'datastore',
r'declare',
r'decrement',
r'delete',
r'derived',
r'desc',
r'describe',
r'distinct',
r'do',
r'drop',
r'each',
r'element',
r'else',
r'end',
r'every',
r'except',
r'exclude',
r'execute',
r'exists',
r'explain',
r'fetch',
r'first',
r'flatten',
r'for',
r'force',
r'from',
r'function',
r'grant',
r'group',
r'gsi',
r'having',
r'if',
r'ignore',
r'ilike',
r'in',
r'include',
r'increment',
r'index',
r'infer',
r'inline',
r'inner',
r'insert',
r'intersect',
r'into',
r'is',
r'join',
r'key',
r'keys',
r'keyspace',
r'known',
r'last',
r'left',
r'let',
r'letting',
r'like',
r'limit',
r'lsm',
r'map',
r'mapping',
r'matched',
r'materialized',
r'merge',
r'minus',
r'namespace',
r'nest',
r'not',
r'number',
r'object',
r'offset',
r'on',
r'option',
r'or',
r'order',
r'outer',
r'over',
r'parse',
r'partition',
r'password',
r'path',
r'pool',
r'prepare',
r'primary',
r'private',
r'privilege',
r'procedure',
r'public',
r'raw',
r'realm',
r'reduce',
r'rename',
r'return',
r'returning',
r'revoke',
r'right',
r'role',
r'rollback',
r'satisfies',
r'schema',
r'select',
r'self',
r'semi',
r'set',
r'show',
r'some',
r'start',
r'statistics',
r'string',
r'system',
r'then',
r'to',
r'transaction',
r'trigger',
r'truncate',
r'under',
r'union',
r'unique',
r'unknown',
r'unnest',
r'unset',
r'update',
r'upsert',
r'use',
r'user',
r'using',
r'validate',
r'value',
r'valued',
r'values',
r'via',
r'view',
r'when',
r'where',
r'while',
r'with',
r'within',
r'work',
r'xor',
],
r'literal': [r'true', r'false', r'null', r'missing|5'],
r'built_in': [
r'array_agg',
r'array_append',
r'array_concat',
r'array_contains',
r'array_count',
r'array_distinct',
r'array_ifnull',
r'array_length',
r'array_max',
r'array_min',
r'array_position',
r'array_prepend',
r'array_put',
r'array_range',
r'array_remove',
r'array_repeat',
r'array_replace',
r'array_reverse',
r'array_sort',
r'array_sum',
r'avg',
r'count',
r'max',
r'min',
r'sum',
r'greatest',
r'least',
r'ifmissing',
r'ifmissingornull',
r'ifnull',
r'missingif',
r'nullif',
r'ifinf',
r'ifnan',
r'ifnanorinf',
r'naninf',
r'neginfif',
r'posinfif',
r'clock_millis',
r'clock_str',
r'date_add_millis',
r'date_add_str',
r'date_diff_millis',
r'date_diff_str',
r'date_part_millis',
r'date_part_str',
r'date_trunc_millis',
r'date_trunc_str',
r'duration_to_str',
r'millis',
r'str_to_millis',
r'millis_to_str',
r'millis_to_utc',
r'millis_to_zone_name',
r'now_millis',
r'now_str',
r'str_to_duration',
r'str_to_utc',
r'str_to_zone_name',
r'decode_json',
r'encode_json',
r'encoded_size',
r'poly_length',
r'base64',
r'base64_encode',
r'base64_decode',
r'meta',
r'uuid',
r'abs',
r'acos',
r'asin',
r'atan',
r'atan2',
r'ceil',
r'cos',
r'degrees',
r'e',
r'exp',
r'ln',
r'log',
r'floor',
r'pi',
r'power',
r'radians',
r'random',
r'round',
r'sign',
r'sin',
r'sqrt',
r'tan',
r'trunc',
r'object_length',
r'object_names',
r'object_pairs',
r'object_inner_pairs',
r'object_values',
r'object_inner_values',
r'object_add',
r'object_put',
r'object_remove',
r'object_unwrap',
r'regexp_contains',
r'regexp_like',
r'regexp_position',
r'regexp_replace',
r'contains',
r'initcap',
r'length',
r'lower',
r'ltrim',
r'position',
r'repeat',
r'replace',
r'rtrim',
r'split',
r'substr',
r'title',
r'trim',
r'upper',
r'isarray',
r'isatom',
r'isboolean',
r'isnumber',
r'isobject',
r'isstring',
r'type',
r'toarray',
r'toatom',
r'toboolean',
r'tonumber',
r'toobject',
r'tostring',
],
},
contains: [
Mode(scope: r'string', begin: r"'", end: r"'", contains: [mode0]),
Mode(scope: r'string', begin: r'"', end: r'"', contains: [mode0]),
Mode(scope: r'symbol', begin: r'`', end: r'`', contains: [mode0]),
Mode(
scope: r'number',
begin:
r'(-?)(\b0[xX][a-fA-F0-9]+|(\b\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?)',
relevance: 0,
),
mode1,
],
),
mode1,
],
);
}