awk function

Mode awk(
  1. Highlight hljs
)

Highlight.js language definition for awk.

Implementation

Mode awk(Highlight hljs) {
  final Mode mode0 = Mode();
  mode0.begin = r'\\[\s\S]';
  mode0.relevance = 0;
  return Mode(
    name: r'Awk',
    keywords: {
      r'keyword':
          r'BEGIN END if else while do for in break continue delete next nextfile function func exit|10',
    },
    contains: [
      Mode(
        scope: r'variable',
        variants: [
          Mode(begin: r'\$[\w\d#@][\w\d_]*'),
          Mode(begin: r'\$\{(.*?)\}'),
        ],
      ),
      Mode(
        scope: r'string',
        contains: [mode0],
        variants: [
          Mode(begin: r"(u|b)?r?'''", end: r"'''", relevance: 10),
          Mode(begin: r'(u|b)?r?"""', end: r'"""', relevance: 10),
          Mode(begin: r"(u|r|ur)'", end: r"'", relevance: 10),
          Mode(begin: r'(u|r|ur)"', end: r'"', relevance: 10),
          Mode(begin: r"(b|br)'", end: r"'"),
          Mode(begin: r'(b|br)"', end: r'"'),
          Mode(
            scope: r'string',
            begin: r"'",
            end: r"'",
            illegal: r'\n',
            contains: [mode0],
          ),
          Mode(
            scope: r'string',
            begin: r'"',
            end: r'"',
            illegal: r'\n',
            contains: [mode0],
          ),
        ],
      ),
      Mode(
        scope: r'regexp',
        begin: r'\/(?=[^/\n]*\/)',
        end: r'\/[gimuy]*',
        contains: [
          mode0,
          Mode(begin: r'\[', end: r'\]', relevance: 0, contains: [mode0]),
        ],
      ),
      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'number', begin: r'\b\d+(\.\d+)?', relevance: 0),
    ],
  );
}