ruby function

Mode ruby(
  1. Highlight hljs
)

Implementation

Mode ruby(Highlight hljs) {
  final Mode _mode0 = Mode();
  final Mode _mode1 = Mode();
  final Mode _mode2 = Mode();
  final Mode _mode3 = Mode();
  final Mode _mode4 = Mode();
  final Mode _mode5 = Mode();
  final Mode _mode6 = Mode();
  final Mode _mode7 = Mode();
  final Mode _mode8 = Mode();
  final Mode _mode9 = Mode();
  final Mode _mode10 = Mode();
  final Mode _mode11 = Mode();
  final Mode _mode12 = Mode();
  final Mode _mode13 = Mode();
  final Mode _mode14 = Mode();
  final Mode _mode15 = Mode();
  final Mode _mode16 = Mode();
  final Mode _mode17 = Mode();
  final Mode _mode18 = Mode();
  final Mode _mode19 = Mode();
  final Mode _mode20 = Mode();
  final Mode _mode21 = Mode();
  final Mode _mode22 = Mode();
  final Mode _mode23 = Mode();
  final Mode _mode24 = Mode();
  final Mode _mode25 = Mode();
  final Mode _mode26 = Mode();
  final Mode _mode27 = Mode();
  final Mode _mode28 = Mode();
  final Mode _mode29 = Mode();
  final Mode _mode30 = Mode();
  final Mode _mode31 = Mode();
  final Mode _mode32 = Mode();
  final Mode _mode33 = Mode();
  final Mode _mode34 = Mode();
  final Mode _mode35 = Mode();
  final Mode _mode36 = Mode();
  final Mode _mode37 = Mode();
  final Mode _mode38 = Mode();
  final Mode _mode39 = Mode();
  final Mode _mode40 = Mode();
  final Mode _mode41 = Mode();
  final Mode _mode42 = Mode();
  final Mode _mode43 = Mode();
  final Mode _mode44 = Mode();
  final Mode _mode45 = Mode();
  final Mode _mode46 = Mode();
  final Mode _mode47 = Mode();
  final Mode _mode48 = Mode();
  final Mode _mode49 = Mode();
  final Mode _mode50 = Mode();
  final Mode _mode51 = Mode();
  final Mode _mode52 = Mode();
  final Mode _mode53 = Mode();
  final Mode _mode54 = Mode();
  final Mode _mode55 = Mode();
  final Mode _mode56 = Mode();
  final Mode _mode57 = Mode();
  final Mode _mode58 = Mode();
  final Mode _mode59 = Mode();
  final Mode _mode60 = Mode();
  final Mode _mode61 = Mode();
  final Mode _mode62 = Mode();
  final Mode _mode63 = Mode();
  _mode0.scope = r'string';
  _mode0.contains = [_mode1, _mode2];
  _mode0.variants = [
    _mode45,
    _mode46,
    _mode47,
    _mode48,
    _mode49,
    _mode50,
    _mode51,
    _mode52,
    _mode53,
    _mode54,
    _mode55,
    _mode56,
    _mode57,
    _mode58,
    _mode59,
    _mode60,
    _mode61,
    _mode62,
  ];
  _mode1.begin = r'\\[\s\S]';
  _mode1.relevance = 0;
  _mode2.scope = r'subst';
  _mode2.begin = r'#\{';
  _mode2.end = r'\}';
  _mode2.keywords = {
    r'variable.constant': [r'__FILE__', r'__LINE__', r'__ENCODING__'],
    r'variable.language': [r'self', r'super'],
    r'keyword': [
      r'alias',
      r'and',
      r'begin',
      r'BEGIN',
      r'break',
      r'case',
      r'class',
      r'defined',
      r'do',
      r'else',
      r'elsif',
      r'end',
      r'END',
      r'ensure',
      r'for',
      r'if',
      r'in',
      r'module',
      r'next',
      r'not',
      r'or',
      r'redo',
      r'require',
      r'rescue',
      r'retry',
      r'return',
      r'then',
      r'undef',
      r'unless',
      r'until',
      r'when',
      r'while',
      r'yield',
      r'include',
      r'extend',
      r'prepend',
      r'public',
      r'private',
      r'protected',
      r'raise',
      r'throw',
    ],
    r'built_in': [
      r'proc',
      r'lambda',
      r'attr_accessor',
      r'attr_reader',
      r'attr_writer',
      r'define_method',
      r'private_constant',
      r'module_function',
    ],
    r'literal': [r'true', r'false', r'nil'],
  };
  _mode2.contains = [
    _mode0,
    _mode3,
    _mode6,
    _mode7,
    _mode8,
    _mode9,
    _mode10,
    _mode14,
    _mode15,
    _mode16,
    _mode18,
    _mode25,
    _mode26,
    _mode27,
    _mode34,
    _mode35,
    _mode39,
    _mode42,
  ];
  _mode3.variants = [_mode4, _mode5];
  _mode3.scope = {2: r'title.class', 4: r'title.class.inherited'};
  _mode3.keywords = {
    r'variable.constant': [r'__FILE__', r'__LINE__', r'__ENCODING__'],
    r'variable.language': [r'self', r'super'],
    r'keyword': [
      r'alias',
      r'and',
      r'begin',
      r'BEGIN',
      r'break',
      r'case',
      r'class',
      r'defined',
      r'do',
      r'else',
      r'elsif',
      r'end',
      r'END',
      r'ensure',
      r'for',
      r'if',
      r'in',
      r'module',
      r'next',
      r'not',
      r'or',
      r'redo',
      r'require',
      r'rescue',
      r'retry',
      r'return',
      r'then',
      r'undef',
      r'unless',
      r'until',
      r'when',
      r'while',
      r'yield',
      r'include',
      r'extend',
      r'prepend',
      r'public',
      r'private',
      r'protected',
      r'raise',
      r'throw',
    ],
    r'built_in': [
      r'proc',
      r'lambda',
      r'attr_accessor',
      r'attr_reader',
      r'attr_writer',
      r'define_method',
      r'private_constant',
      r'module_function',
    ],
    r'literal': [r'true', r'false', r'nil'],
  };
  _mode4.match = [
    r'class\s+',
    r'(?:\b([A-Z]+[a-z0-9]+)+|\b([A-Z]+[a-z0-9]+)+[A-Z]+)(::\w+)*',
    r'\s+<\s+',
    r'(?:\b([A-Z]+[a-z0-9]+)+|\b([A-Z]+[a-z0-9]+)+[A-Z]+)(::\w+)*',
  ];
  _mode5.match = [
    r'\b(class|module)\s+',
    r'(?:\b([A-Z]+[a-z0-9]+)+|\b([A-Z]+[a-z0-9]+)+[A-Z]+)(::\w+)*',
  ];
  _mode6.match = [
    r'(include|extend)\s+',
    r'(?:\b([A-Z]+[a-z0-9]+)+|\b([A-Z]+[a-z0-9]+)+[A-Z]+)(::\w+)*',
  ];
  _mode6.scope = {2: r'title.class'};
  _mode6.keywords = {
    r'variable.constant': [r'__FILE__', r'__LINE__', r'__ENCODING__'],
    r'variable.language': [r'self', r'super'],
    r'keyword': [
      r'alias',
      r'and',
      r'begin',
      r'BEGIN',
      r'break',
      r'case',
      r'class',
      r'defined',
      r'do',
      r'else',
      r'elsif',
      r'end',
      r'END',
      r'ensure',
      r'for',
      r'if',
      r'in',
      r'module',
      r'next',
      r'not',
      r'or',
      r'redo',
      r'require',
      r'rescue',
      r'retry',
      r'return',
      r'then',
      r'undef',
      r'unless',
      r'until',
      r'when',
      r'while',
      r'yield',
      r'include',
      r'extend',
      r'prepend',
      r'public',
      r'private',
      r'protected',
      r'raise',
      r'throw',
    ],
    r'built_in': [
      r'proc',
      r'lambda',
      r'attr_accessor',
      r'attr_reader',
      r'attr_writer',
      r'define_method',
      r'private_constant',
      r'module_function',
    ],
    r'literal': [r'true', r'false', r'nil'],
  };
  _mode7.relevance = 0;
  _mode7.match = [
    r'(?:\b([A-Z]+[a-z0-9]+)+|\b([A-Z]+[a-z0-9]+)+[A-Z]+)(::\w+)*',
    r'\.new[. (]',
  ];
  _mode7.scope = {1: r'title.class'};
  _mode8.relevance = 0;
  _mode8.match = r'\b[A-Z][A-Z_0-9]+\b';
  _mode8.scope = r'variable.constant';
  _mode9.relevance = 0;
  _mode9.match = r'(?:\b([A-Z]+[a-z0-9]+)+|\b([A-Z]+[a-z0-9]+)+[A-Z]+)';
  _mode9.scope = r'title.class';
  _mode10.match = [
    r'def',
    r'\s+',
    r'([a-zA-Z_]\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\*\*|[-/+%^&*~`|]|\[\]=?)',
  ];
  _mode10.scope = {1: r'keyword', 3: r'title.function'};
  _mode10.contains = [_mode11];
  _mode11.variants = [_mode12, _mode13];
  _mode11.contains = [
    _mode0,
    _mode3,
    _mode6,
    _mode7,
    _mode8,
    _mode9,
    _mode10,
    _mode14,
    _mode15,
    _mode16,
    _mode18,
    _mode25,
    _mode26,
    _mode27,
    _mode34,
    _mode35,
    _mode39,
    _mode42,
  ];
  _mode12.match = r'\(\)';
  _mode13.scope = r'params';
  _mode13.begin = r'\(';
  _mode13.end = r'(?=\))';
  _mode13.excludeBegin = true;
  _mode13.endsParent = true;
  _mode13.keywords = {
    r'variable.constant': [r'__FILE__', r'__LINE__', r'__ENCODING__'],
    r'variable.language': [r'self', r'super'],
    r'keyword': [
      r'alias',
      r'and',
      r'begin',
      r'BEGIN',
      r'break',
      r'case',
      r'class',
      r'defined',
      r'do',
      r'else',
      r'elsif',
      r'end',
      r'END',
      r'ensure',
      r'for',
      r'if',
      r'in',
      r'module',
      r'next',
      r'not',
      r'or',
      r'redo',
      r'require',
      r'rescue',
      r'retry',
      r'return',
      r'then',
      r'undef',
      r'unless',
      r'until',
      r'when',
      r'while',
      r'yield',
      r'include',
      r'extend',
      r'prepend',
      r'public',
      r'private',
      r'protected',
      r'raise',
      r'throw',
    ],
    r'built_in': [
      r'proc',
      r'lambda',
      r'attr_accessor',
      r'attr_reader',
      r'attr_writer',
      r'define_method',
      r'private_constant',
      r'module_function',
    ],
    r'literal': [r'true', r'false', r'nil'],
  };
  _mode14.begin = r'[a-zA-Z]\w*::';
  _mode15.scope = r'symbol';
  _mode15.begin = r'[a-zA-Z_]\w*(!|\?)?:';
  _mode15.relevance = 0;
  _mode16.scope = r'symbol';
  _mode16.begin = r':(?!\s)';
  _mode16.contains = [_mode0, _mode17];
  _mode16.relevance = 0;
  _mode17.begin =
      r'([a-zA-Z_]\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\*\*|[-/+%^&*~`|]|\[\]=?)';
  _mode18.scope = r'number';
  _mode18.relevance = 0;
  _mode18.variants = [_mode19, _mode20, _mode21, _mode22, _mode23, _mode24];
  _mode19.begin =
      r'\b([1-9](_?[0-9])*|0)(\.([0-9](_?[0-9])*))?([eE][+-]?([0-9](_?[0-9])*)|r)?i?\b';
  _mode20.begin = r'\b0[dD][0-9](_?[0-9])*r?i?\b';
  _mode21.begin = r'\b0[bB][0-1](_?[0-1])*r?i?\b';
  _mode22.begin = r'\b0[oO][0-7](_?[0-7])*r?i?\b';
  _mode23.begin = r'\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\b';
  _mode24.begin = r'\b0(_?[0-7])+r?i?\b';
  _mode25.scope = r'variable';
  _mode25.begin = r"(\$\W)|((\$|@@?)(\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])";
  _mode26.scope = r'params';
  _mode26.begin = r'\|(?!=)';
  _mode26.end = r'\|';
  _mode26.excludeBegin = true;
  _mode26.excludeEnd = true;
  _mode26.relevance = 0;
  _mode26.keywords = {
    r'variable.constant': [r'__FILE__', r'__LINE__', r'__ENCODING__'],
    r'variable.language': [r'self', r'super'],
    r'keyword': [
      r'alias',
      r'and',
      r'begin',
      r'BEGIN',
      r'break',
      r'case',
      r'class',
      r'defined',
      r'do',
      r'else',
      r'elsif',
      r'end',
      r'END',
      r'ensure',
      r'for',
      r'if',
      r'in',
      r'module',
      r'next',
      r'not',
      r'or',
      r'redo',
      r'require',
      r'rescue',
      r'retry',
      r'return',
      r'then',
      r'undef',
      r'unless',
      r'until',
      r'when',
      r'while',
      r'yield',
      r'include',
      r'extend',
      r'prepend',
      r'public',
      r'private',
      r'protected',
      r'raise',
      r'throw',
    ],
    r'built_in': [
      r'proc',
      r'lambda',
      r'attr_accessor',
      r'attr_reader',
      r'attr_writer',
      r'define_method',
      r'private_constant',
      r'module_function',
    ],
    r'literal': [r'true', r'false', r'nil'],
  };
  _mode27.begin =
      r'(!|!=|!==|%|%=|&|&&|&=|\*|\*=|\+|\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\?|\[|\{|\(|\^|\^=|\||\|=|\|\||~|unless)\s*';
  _mode27.keywords = r'unless';
  _mode27.contains = [_mode28, _mode34, _mode35, _mode39, _mode42];
  _mode27.relevance = 0;
  _mode28.scope = r'regexp';
  _mode28.contains = [_mode1, _mode2];
  _mode28.illegal = r'\n';
  _mode28.variants = [_mode29, _mode30, _mode31, _mode32, _mode33];
  _mode29.begin = r'/';
  _mode29.end = r'/[a-z]*';
  _mode30.begin = r'%r\{';
  _mode30.end = r'\}[a-z]*';
  _mode31.begin = r'%r\(';
  _mode31.end = r'\)[a-z]*';
  _mode32.begin = r'%r!';
  _mode32.end = r'![a-z]*';
  _mode33.begin = r'%r\[';
  _mode33.end = r'\][a-z]*';
  _mode34.begin = r'#<';
  _mode34.end = r'>';
  _mode35.scope = r'comment';
  _mode35.begin = r'#';
  _mode35.end = r'$';
  _mode35.contains = [_mode36, _mode37, _mode38];
  _mode36.scope = r'doctag';
  _mode36.begin = r'@[A-Za-z]+';
  _mode37.scope = r'doctag';
  _mode37.begin = r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)';
  _mode37.end = r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):';
  _mode37.excludeBegin = true;
  _mode37.relevance = 0;
  _mode38.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}";
  _mode39.scope = r'comment';
  _mode39.begin = r'^=begin';
  _mode39.end = r'^=end';
  _mode39.contains = [_mode36, _mode40, _mode41];
  _mode39.relevance = 10;
  _mode40.scope = r'doctag';
  _mode40.begin = r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)';
  _mode40.end = r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):';
  _mode40.excludeBegin = true;
  _mode40.relevance = 0;
  _mode41.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}";
  _mode42.scope = r'comment';
  _mode42.begin = r'^__END__';
  _mode42.end = r'\b\B';
  _mode42.contains = [_mode43, _mode44];
  _mode43.scope = r'doctag';
  _mode43.begin = r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)';
  _mode43.end = r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):';
  _mode43.excludeBegin = true;
  _mode43.relevance = 0;
  _mode44.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}";
  _mode45.begin = r"'";
  _mode45.end = r"'";
  _mode46.begin = r'"';
  _mode46.end = r'"';
  _mode47.begin = r'`';
  _mode47.end = r'`';
  _mode48.begin = r'%[qQwWx]?\(';
  _mode48.end = r'\)';
  _mode49.begin = r'%[qQwWx]?\[';
  _mode49.end = r'\]';
  _mode50.begin = r'%[qQwWx]?\{';
  _mode50.end = r'\}';
  _mode51.begin = r'%[qQwWx]?<';
  _mode51.end = r'>';
  _mode52.begin = r'%[qQwWx]?\/';
  _mode52.end = r'\/';
  _mode53.begin = r'%[qQwWx]?%';
  _mode53.end = r'%';
  _mode54.begin = r'%[qQwWx]?-';
  _mode54.end = r'-';
  _mode55.begin = r'%[qQwWx]?\|';
  _mode55.end = r'\|';
  _mode56.begin = r'\B\?(\\\d{1,3})';
  _mode57.begin = r'\B\?(\\x[A-Fa-f0-9]{1,2})';
  _mode58.begin = r'\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)';
  _mode59.begin = r'\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]';
  _mode60.begin = r'\B\?\\(c|C-)[\x20-\x7e]';
  _mode61.begin = r'\B\?\\?\S';
  _mode62.begin = r"<<[-~]?'?(?=(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b)";
  _mode62.contains = [_mode63];
  _mode63.begin = r'(\w+)';
  _mode63.end = r'(\w+)';
  _mode63.onBegin = (RegExpMatch m, CallbackResponse resp) {
    resp.data['_beginMatch'] = m.group(1);
  };
  _mode63.onEnd = (RegExpMatch m, CallbackResponse resp) {
    if (resp.data['_beginMatch'] != m.group(1)) resp.ignoreMatch();
  };
  _mode63.contains = [_mode1, _mode2];
  return Mode(
    name: r'Ruby',
    aliases: [r'rb', r'gemspec', r'podspec', r'thor', r'irb'],
    keywords: {
      r'variable.constant': [r'__FILE__', r'__LINE__', r'__ENCODING__'],
      r'variable.language': [r'self', r'super'],
      r'keyword': [
        r'alias',
        r'and',
        r'begin',
        r'BEGIN',
        r'break',
        r'case',
        r'class',
        r'defined',
        r'do',
        r'else',
        r'elsif',
        r'end',
        r'END',
        r'ensure',
        r'for',
        r'if',
        r'in',
        r'module',
        r'next',
        r'not',
        r'or',
        r'redo',
        r'require',
        r'rescue',
        r'retry',
        r'return',
        r'then',
        r'undef',
        r'unless',
        r'until',
        r'when',
        r'while',
        r'yield',
        r'include',
        r'extend',
        r'prepend',
        r'public',
        r'private',
        r'protected',
        r'raise',
        r'throw',
      ],
      r'built_in': [
        r'proc',
        r'lambda',
        r'attr_accessor',
        r'attr_reader',
        r'attr_writer',
        r'define_method',
        r'private_constant',
        r'module_function',
      ],
      r'literal': [r'true', r'false', r'nil'],
    },
    illegal: r'\/\*',
    contains: [
      Mode(
        scope: r'meta',
        begin: r'^#![ ]*\/.*\bruby\b.*',
        end: r'$',
        relevance: 0,
        binary: r'ruby',
      ),
      Mode(
        begin: r'^\s*=>',
        starts: Mode(
          end: r'$',
          contains: [
            _mode0,
            _mode3,
            _mode6,
            _mode7,
            _mode8,
            _mode9,
            _mode10,
            _mode14,
            _mode15,
            _mode16,
            _mode18,
            _mode25,
            _mode26,
            _mode27,
            _mode34,
            _mode35,
            _mode39,
            _mode42,
          ],
        ),
      ),
      Mode(
        scope: r'meta.prompt',
        begin:
            r'^([>?]>|[\w#]+\(\w+\):\d+:\d+[>*]|(\w+-)?\d+\.\d+\.\d+(p\d+)?[^\d][^>]+>)(?=[ ])',
        starts: Mode(
          end: r'$',
          keywords: {
            r'variable.constant': [r'__FILE__', r'__LINE__', r'__ENCODING__'],
            r'variable.language': [r'self', r'super'],
            r'keyword': [
              r'alias',
              r'and',
              r'begin',
              r'BEGIN',
              r'break',
              r'case',
              r'class',
              r'defined',
              r'do',
              r'else',
              r'elsif',
              r'end',
              r'END',
              r'ensure',
              r'for',
              r'if',
              r'in',
              r'module',
              r'next',
              r'not',
              r'or',
              r'redo',
              r'require',
              r'rescue',
              r'retry',
              r'return',
              r'then',
              r'undef',
              r'unless',
              r'until',
              r'when',
              r'while',
              r'yield',
              r'include',
              r'extend',
              r'prepend',
              r'public',
              r'private',
              r'protected',
              r'raise',
              r'throw',
            ],
            r'built_in': [
              r'proc',
              r'lambda',
              r'attr_accessor',
              r'attr_reader',
              r'attr_writer',
              r'define_method',
              r'private_constant',
              r'module_function',
            ],
            r'literal': [r'true', r'false', r'nil'],
          },
          contains: [
            _mode0,
            _mode3,
            _mode6,
            _mode7,
            _mode8,
            _mode9,
            _mode10,
            _mode14,
            _mode15,
            _mode16,
            _mode18,
            _mode25,
            _mode26,
            _mode27,
            _mode34,
            _mode35,
            _mode39,
            _mode42,
          ],
        ),
      ),
      _mode34,
      _mode35,
      _mode39,
      _mode42,
      _mode0,
      _mode3,
      _mode6,
      _mode7,
      _mode8,
      _mode9,
      _mode10,
      _mode14,
      _mode15,
      _mode16,
      _mode18,
      _mode25,
      _mode26,
      _mode27,
      _mode34,
      _mode35,
      _mode39,
      _mode42,
    ],
  );
}