sql function

Mode sql(
  1. Highlight hljs
)

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,
      ),
    ],
  );
}