sql function
Highlight.js language definition for sql.
Implementation
Mode sql(Highlight hljs) {
return Mode(
name: r'SQL',
caseInsensitive: true,
illegal: r'[{}]|<\/',
keywords: {
r'$pattern': r'\b[\w\.]+',
r'keyword': [
r'all',
r'allocate',
r'alter',
r'and',
r'any',
r'are',
r'array',
r'array_max_cardinality',
r'as|0',
r'asensitive',
r'asymmetric',
r'at|0',
r'atomic',
r'authorization',
r'begin',
r'begin_frame',
r'begin_partition',
r'between',
r'bigint',
r'binary',
r'blob',
r'boolean',
r'both',
r'by|0',
r'call',
r'called',
r'cardinality',
r'cascaded',
r'case',
r'char',
r'char_length',
r'character',
r'character_length',
r'check',
r'classifier',
r'clob',
r'close',
r'collate',
r'collect',
r'column',
r'commit',
r'condition',
r'connect',
r'constraint',
r'contains',
r'convert',
r'copy',
r'corresponding',
r'create',
r'cross',
r'cube',
r'current',
r'current_catalog',
r'current_date',
r'current_default_transform_group',
r'current_path',
r'current_role',
r'current_row',
r'current_schema',
r'current_time',
r'current_timestamp',
r'current_path',
r'current_role',
r'current_transform_group_for_type',
r'current_user',
r'cursor',
r'cycle',
r'date',
r'day',
r'deallocate',
r'dec',
r'decimal',
r'decfloat',
r'declare',
r'default',
r'define',
r'delete',
r'describe',
r'deterministic',
r'disconnect',
r'distinct',
r'double',
r'drop',
r'dynamic',
r'each',
r'else',
r'empty',
r'end',
r'end_frame',
r'end_partition',
r'end-exec',
r'equals',
r'escape',
r'every',
r'except',
r'exec',
r'execute',
r'exists',
r'external',
r'false',
r'fetch',
r'filter',
r'float',
r'for',
r'foreign',
r'frame_row',
r'free',
r'from',
r'full',
r'function',
r'fusion',
r'get',
r'global',
r'grant',
r'group',
r'grouping',
r'groups',
r'having',
r'hold',
r'hour',
r'identity',
r'in|0',
r'indicator',
r'initial',
r'inner',
r'inout',
r'insensitive',
r'insert',
r'int',
r'integer',
r'intersect',
r'intersection',
r'interval',
r'into',
r'is|0',
r'join',
r'language',
r'large',
r'lateral',
r'leading',
r'left',
r'like',
r'like_regex',
r'local',
r'localtime',
r'localtimestamp',
r'match',
r'match_number',
r'match_recognize',
r'matches',
r'member',
r'merge',
r'method',
r'minute',
r'modifies',
r'module',
r'month',
r'multiset',
r'national',
r'natural',
r'nchar',
r'nclob',
r'new',
r'no|0',
r'none',
r'normalize',
r'not',
r'null',
r'numeric',
r'octet_length',
r'occurrences_regex',
r'of|0',
r'offset',
r'old',
r'omit',
r'on|0',
r'one',
r'only',
r'open',
r'or|0',
r'order',
r'out',
r'outer',
r'over',
r'overlaps',
r'overlay',
r'parameter',
r'partition',
r'pattern',
r'per',
r'percent',
r'period',
r'portion',
r'precedes',
r'precision',
r'prepare',
r'primary',
r'procedure',
r'ptf',
r'range',
r'reads',
r'real',
r'recursive',
r'ref',
r'references',
r'referencing',
r'release',
r'result',
r'return',
r'returns',
r'revoke',
r'right',
r'rollback',
r'rollup',
r'row',
r'rows',
r'running',
r'savepoint',
r'scope',
r'scroll',
r'search',
r'second',
r'seek',
r'select',
r'sensitive',
r'session_user',
r'set',
r'show',
r'similar',
r'skip',
r'smallint',
r'some',
r'specific',
r'specifictype',
r'sql',
r'sqlexception',
r'sqlstate',
r'sqlwarning',
r'start',
r'static',
r'submultiset',
r'subset',
r'succeeds',
r'symmetric',
r'system',
r'system_time',
r'system_user',
r'table',
r'tablesample',
r'then',
r'time',
r'timestamp',
r'timezone_hour',
r'timezone_minute',
r'to|0',
r'trailing',
r'translation',
r'trigger',
r'true',
r'truncate',
r'uescape',
r'union',
r'unique',
r'unknown',
r'update',
r'user',
r'using',
r'value',
r'values',
r'varbinary',
r'varchar',
r'varying',
r'versioning',
r'when',
r'whenever',
r'where',
r'window',
r'with',
r'within',
r'without',
r'year',
r'add',
r'asc',
r'collation',
r'desc',
r'final',
r'first',
r'last',
r'view',
],
r'literal': [r'true', r'false', r'unknown'],
r'type': [
r'bigint',
r'binary',
r'blob',
r'boolean',
r'char',
r'character',
r'clob',
r'date',
r'dec',
r'decfloat',
r'decimal',
r'float',
r'int',
r'integer',
r'interval',
r'nchar',
r'nclob',
r'national',
r'numeric',
r'real',
r'row',
r'smallint',
r'time',
r'timestamp',
r'varchar',
r'varying',
r'varbinary',
],
r'built_in': [
r'current_catalog',
r'current_date',
r'current_default_transform_group',
r'current_path',
r'current_role',
r'current_schema',
r'current_transform_group_for_type',
r'current_user',
r'session_user',
r'system_time',
r'system_user',
r'current_time',
r'localtime',
r'current_timestamp',
r'localtimestamp',
],
},
contains: [
Mode(
scope: r'type',
match:
r'\b(?:double\s+precision|large\s+object|with\s+timezone|without\s+timezone)\b',
),
Mode(
scope: r'keyword',
match:
r'\b(?:create\s+table|insert\s+into|primary\s+key|foreign\s+key|not\s+null|alter\s+table|add\s+constraint|grouping\s+sets|on\s+overflow|character\s+set|respect\s+nulls|ignore\s+nulls|nulls\s+first|nulls\s+last|depth\s+first|breadth\s+first)\b',
relevance: 0,
),
Mode(
match:
r'\b(?:abs|acos|array_agg|asin|atan|avg|cast|ceil|ceiling|coalesce|corr|cos|cosh|count|covar_pop|covar_samp|cume_dist|dense_rank|deref|element|exp|extract|first_value|floor|json_array|json_arrayagg|json_exists|json_object|json_objectagg|json_query|json_table|json_table_primitive|json_value|lag|last_value|lead|listagg|ln|log|log10|lower|max|min|mod|nth_value|ntile|nullif|percent_rank|percentile_cont|percentile_disc|position|position_regex|power|rank|regr_avgx|regr_avgy|regr_count|regr_intercept|regr_r2|regr_slope|regr_sxx|regr_sxy|regr_syy|row_number|sin|sinh|sqrt|stddev_pop|stddev_samp|substring|substring_regex|sum|tan|tanh|translate|translate_regex|treat|trim|trim_array|unnest|upper|value_of|var_pop|var_samp|width_bucket)\s*\(',
relevance: 0,
keywords: {
r'built_in': [
r'abs',
r'acos',
r'array_agg',
r'asin',
r'atan',
r'avg',
r'cast',
r'ceil',
r'ceiling',
r'coalesce',
r'corr',
r'cos',
r'cosh',
r'count',
r'covar_pop',
r'covar_samp',
r'cume_dist',
r'dense_rank',
r'deref',
r'element',
r'exp',
r'extract',
r'first_value',
r'floor',
r'json_array',
r'json_arrayagg',
r'json_exists',
r'json_object',
r'json_objectagg',
r'json_query',
r'json_table',
r'json_table_primitive',
r'json_value',
r'lag',
r'last_value',
r'lead',
r'listagg',
r'ln',
r'log',
r'log10',
r'lower',
r'max',
r'min',
r'mod',
r'nth_value',
r'ntile',
r'nullif',
r'percent_rank',
r'percentile_cont',
r'percentile_disc',
r'position',
r'position_regex',
r'power',
r'rank',
r'regr_avgx',
r'regr_avgy',
r'regr_count',
r'regr_intercept',
r'regr_r2',
r'regr_slope',
r'regr_sxx',
r'regr_sxy',
r'regr_syy',
r'row_number',
r'sin',
r'sinh',
r'sqrt',
r'stddev_pop',
r'stddev_samp',
r'substring',
r'substring_regex',
r'sum',
r'tan',
r'tanh',
r'translate',
r'translate_regex',
r'treat',
r'trim',
r'trim_array',
r'unnest',
r'upper',
r'value_of',
r'var_pop',
r'var_samp',
r'width_bucket',
],
},
),
Mode(scope: r'variable', match: r'@[a-z0-9][a-z0-9_]*'),
Mode(
scope: r'string',
variants: [
Mode(
begin: r"'",
end: r"'",
contains: [Mode(match: r"''")],
),
],
),
Mode(
begin: r'"',
end: r'"',
contains: [Mode(match: r'""')],
),
Mode(
scope: r'number',
begin:
r'(-?)(\b0[xX][a-fA-F0-9]+|(\b\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?)',
relevance: 0,
),
Mode(
scope: r'comment',
begin: r'/\*',
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}",
),
],
),
Mode(
scope: r'comment',
begin: r'--',
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}",
),
],
),
Mode(
scope: r'operator',
match: r'[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?',
relevance: 0,
),
],
);
}