'module'      Keyword
' '           Text.Whitespace
'CodeRay'     Name.Namespace
'\n\t'        Text.Whitespace
'module'      Keyword
' '           Text.Whitespace
'Scanners'    Name.Namespace
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Ruby'        Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Scanner'     Name.Constant
'\n\n\t'      Text.Whitespace
'RESERVED_WORDS' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'\n\t\t'      Text.Whitespace
"'"           Literal.String.Single
'and'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'def'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'end'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'in'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'or'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'unless'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'begin'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text.Whitespace
"'"           Literal.String.Single
'defined?'    Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'ensure'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'module'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'redo'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'super'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'until'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text.Whitespace
"'"           Literal.String.Single
'BEGIN'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'break'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'do'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'next'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'rescue'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'then'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text.Whitespace
"'"           Literal.String.Single
'when'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'END'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'case'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'else'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'for'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'retry'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text.Whitespace
"'"           Literal.String.Single
'while'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'alias'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'class'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'elsif'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'if'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'not'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'return'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text.Whitespace
"'"           Literal.String.Single
'undef'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'yield'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t'        Text.Whitespace
']'           Operator
'\n\n\t'      Text.Whitespace
'DEF_KEYWORDS' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
"'"           Literal.String.Single
'def'         Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'\n\t'        Text.Whitespace
'MODULE_KEYWORDS' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
"'"           Literal.String.Single
'class'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'module'      Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'\n\t'        Text.Whitespace
'DEF_NEW_STATE' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'WordList'    Name.Constant
'.'           Operator
'new'         Name
'('           Punctuation
':initial'    Literal.String.Symbol
')'           Punctuation
'.'           Operator
'\n\t\t'      Text.Whitespace
'add'         Name
'('           Punctuation
'DEF_KEYWORDS' Name.Constant
','           Punctuation
' '           Text.Whitespace
':def_expected' Literal.String.Symbol
')'           Punctuation
'.'           Operator
'\n\t\t'      Text.Whitespace
'add'         Name
'('           Punctuation
'MODULE_KEYWORDS' Name.Constant
','           Punctuation
' '           Text.Whitespace
':module_expected' Literal.String.Symbol
')'           Punctuation
'\n\n\t'      Text.Whitespace
'WORDS_ALLOWING_REGEXP' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'\n\t\t'      Text.Whitespace
"'"           Literal.String.Single
'and'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'or'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'not'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'while'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'until'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'unless'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'if'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'elsif'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'when'        Literal.String.Single
"'"           Literal.String.Single
'\n\t'        Text.Whitespace
']'           Operator
'\n\t'        Text.Whitespace
'REGEXP_ALLOWED' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'WordList'    Name.Constant
'.'           Operator
'new'         Name
'('           Punctuation
'false'       Keyword.Pseudo
')'           Punctuation
'.'           Operator
'\n\t\t'      Text.Whitespace
'add'         Name
'('           Punctuation
'WORDS_ALLOWING_REGEXP' Name.Constant
','           Punctuation
' '           Text.Whitespace
':set'        Literal.String.Symbol
')'           Punctuation
'\n\n\t'      Text.Whitespace
'PREDEFINED_CONSTANTS' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'\n\t\t'      Text.Whitespace
"'"           Literal.String.Single
'nil'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'true'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'false'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'self'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text.Whitespace
"'"           Literal.String.Single
'DATA'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'ARGV'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'ARGF'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'__FILE__'    Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'__LINE__'    Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t'        Text.Whitespace
']'           Operator
'\n\n\t'      Text.Whitespace
'IDENT_KIND'  Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'WordList'    Name.Constant
'.'           Operator
'new'         Name
'('           Punctuation
':ident'      Literal.String.Symbol
')'           Punctuation
'.'           Operator
'\n\t\t'      Text.Whitespace
'add'         Name
'('           Punctuation
'RESERVED_WORDS' Name.Constant
','           Punctuation
' '           Text.Whitespace
':reserved'   Literal.String.Symbol
')'           Punctuation
'.'           Operator
'\n\t\t'      Text.Whitespace
'add'         Name
'('           Punctuation
'PREDEFINED_CONSTANTS' Name.Constant
','           Punctuation
' '           Text.Whitespace
':pre_constant' Literal.String.Symbol
')'           Punctuation
'\n\n\t'      Text.Whitespace
'METHOD_NAME' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
' '           Literal.String.Regex
'#{'          Literal.String.Interpol
'IDENT'       Name.Constant
'}'           Literal.String.Interpol
' [?!]? '     Literal.String.Regex
'/xo'         Literal.String.Regex
'\n\t'        Text.Whitespace
'METHOD_NAME_EX' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'\n\t '       Literal.String.Regex
'#{'          Literal.String.Interpol
'METHOD_NAME' Name.Constant
'}'           Literal.String.Interpol
'  '          Literal.String.Regex
'#'           Literal.String.Regex
' common methods: split, foo=, empty?, gsub!\n\t | ' Literal.String.Regex
'\\'          Literal.String.Regex
'*'           Literal.String.Regex
'\\'          Literal.String.Regex
'*?         ' Literal.String.Regex
'#'           Literal.String.Regex
' multiplication and power\n\t | [-+~]@?       ' Literal.String.Regex
'#'           Literal.String.Regex
' plus, minus\n\t | [' Literal.String.Regex
'\\/'         Literal.String.Regex
'%&|^`]     ' Literal.String.Regex
'#'           Literal.String.Regex
' division, modulo or format strings, &and, |or, ^xor, `system`\n\t | ' Literal.String.Regex
'\\'          Literal.String.Regex
'['           Literal.String.Regex
'\\'          Literal.String.Regex
']=?        ' Literal.String.Regex
'#'           Literal.String.Regex
' array getter and setter\n\t | <=?>? | >=?   ' Literal.String.Regex
'#'           Literal.String.Regex
' comparison, rocket operator\n\t | << | >>       ' Literal.String.Regex
'#'           Literal.String.Regex
' append or shift left, shift right\n\t | ===?          ' Literal.String.Regex
'#'           Literal.String.Regex
' simple equality and case equality\n\t' Literal.String.Regex
'/ox'         Literal.String.Regex
'\n\t'        Text.Whitespace
'GLOBAL_VARIABLE' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
' '           Literal.String.Regex
'\\'          Literal.String.Regex
'$ (?: '      Literal.String.Regex
'#{'          Literal.String.Interpol
'IDENT'       Name.Constant
'}'           Literal.String.Interpol
' | '         Literal.String.Regex
'\\'          Literal.String.Regex
"d+ | [~&+`'=" Literal.String.Regex
'\\/'         Literal.String.Regex
',;_.<>!@0$?*":F' Literal.String.Regex
'\\\\'        Literal.String.Regex
'] | -[a-zA-Z_0-9] ) ' Literal.String.Regex
'/ox'         Literal.String.Regex
'\n\n\t'      Text.Whitespace
'DOUBLEQ'     Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
' "  [^"'     Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
']*  (?: (?: ' Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'} | '        Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'(?:$")?  | ' Literal.String.Regex
'\\\\'        Literal.String.Regex
'. ) [^"'     Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
']*  )* "?  ' Literal.String.Regex
'/ox'         Literal.String.Regex
'\n\t'        Text.Whitespace
'SINGLEQ'     Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
" '  [^'"     Literal.String.Regex
'\\\\'        Literal.String.Regex
']*    (?:                              ' Literal.String.Regex
'\\\\'        Literal.String.Regex
".   [^'"     Literal.String.Regex
'\\\\'        Literal.String.Regex
"]*    )* '?  " Literal.String.Regex
'/ox'         Literal.String.Regex
'\n\t'        Text.Whitespace
'STRING'      Name.Constant
'  '          Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
' '           Literal.String.Regex
'#{'          Literal.String.Interpol
'SINGLEQ'     Name.Constant
'}'           Literal.String.Interpol
' | '         Literal.String.Regex
'#{'          Literal.String.Interpol
'DOUBLEQ'     Name.Constant
'}'           Literal.String.Interpol
' '           Literal.String.Regex
'/ox'         Literal.String.Regex
'\n\t'        Text.Whitespace
'SHELL'       Name.Constant
'   '         Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
' `  [^`'     Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
']*  (?: (?: ' Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'} | '        Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'(?:$`)?  | ' Literal.String.Regex
'\\\\'        Literal.String.Regex
'. ) [^`'     Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
']*  )* `?  ' Literal.String.Regex
'/ox'         Literal.String.Regex
'\n\t'        Text.Whitespace
'REGEXP'      Name.Constant
'  '          Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
' '           Literal.String.Regex
'\\/'         Literal.String.Regex
' [^'         Literal.String.Regex
'\\/'         Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
']* (?: (?: ' Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'} | '        Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'(?:$'        Literal.String.Regex
'\\/'         Literal.String.Regex
')? | '       Literal.String.Regex
'\\\\'        Literal.String.Regex
'. ) [^'      Literal.String.Regex
'\\/'         Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
']* )* '      Literal.String.Regex
'\\/'         Literal.String.Regex
'? '          Literal.String.Regex
'/ox'         Literal.String.Regex
'\n\n\t'      Text.Whitespace
'DECIMAL'     Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
'd+(?:_'      Literal.String.Regex
'\\'          Literal.String.Regex
'd+)*'        Literal.String.Regex
'/'           Literal.String.Regex
'  '          Text.Whitespace
"# doesn't recognize 09 as octal error" Comment.Single
'\n\t'        Text.Whitespace
'OCTAL'       Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'0_?[0-7]+(?:_[0-7]+)*' Literal.String.Regex
'/'           Literal.String.Regex
'\n\t'        Text.Whitespace
'HEXADECIMAL' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*' Literal.String.Regex
'/'           Literal.String.Regex
'\n\t'        Text.Whitespace
'BINARY'      Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'0b[01]+(?:_[01]+)*' Literal.String.Regex
'/'           Literal.String.Regex
'\n\n\t'      Text.Whitespace
'EXPONENT'    Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
' [eE] [+-]? ' Literal.String.Regex
'#{'          Literal.String.Interpol
'DECIMAL'     Name.Constant
'}'           Literal.String.Interpol
' '           Literal.String.Regex
'/ox'         Literal.String.Regex
'\n\t'        Text.Whitespace
'FLOAT'       Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
' '           Literal.String.Regex
'#{'          Literal.String.Interpol
'DECIMAL'     Name.Constant
'}'           Literal.String.Interpol
' (?: '       Literal.String.Regex
'#{'          Literal.String.Interpol
'EXPONENT'    Name.Constant
'}'           Literal.String.Interpol
' | '         Literal.String.Regex
'\\'          Literal.String.Regex
'. '          Literal.String.Regex
'#{'          Literal.String.Interpol
'DECIMAL'     Name.Constant
'}'           Literal.String.Interpol
' '           Literal.String.Regex
'#{'          Literal.String.Interpol
'EXPONENT'    Name.Constant
'}'           Literal.String.Interpol
'? ) '        Literal.String.Regex
'/'           Literal.String.Regex
'\n\t'        Text.Whitespace
'INTEGER'     Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'#{'          Literal.String.Interpol
'OCTAL'       Name.Constant
'}'           Literal.String.Interpol
'|'           Literal.String.Regex
'#{'          Literal.String.Interpol
'HEXADECIMAL' Name.Constant
'}'           Literal.String.Interpol
'|'           Literal.String.Regex
'#{'          Literal.String.Interpol
'BINARY'      Name.Constant
'}'           Literal.String.Interpol
'|'           Literal.String.Regex
'#{'          Literal.String.Interpol
'DECIMAL'     Name.Constant
'}'           Literal.String.Interpol
'/'           Literal.String.Regex
'\n\n\t'      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'reset'       Name.Function
'\n\t\t'      Text.Whitespace
'super'       Keyword
'\n\t\t'      Text.Whitespace
'@regexp_allowed' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'next_token'  Name.Function
'\n\t\t'      Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'eos?'        Name
'\n\n\t\t'    Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':error'      Literal.String.Symbol
'\n\t\t'      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
's+'          Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'  '          Text.Whitespace
'# in every state' Comment.Single
'\n\t\t\t'    Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':space'      Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'@regexp_allowed' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':set'        Literal.String.Symbol
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@regexp_allowed' Name.Variable.Instance
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'matched'     Name
'.'           Operator
'index'       Name
'('           Punctuation
'?\\n'        Literal.String.Char
')'           Punctuation
'  '          Text.Whitespace
'# delayed flag setting' Comment.Single
'\n\n\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@state'      Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
':def_expected' Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
' (?: (?:'    Literal.String.Regex
'#{'          Literal.String.Interpol
'IDENT'       Name.Constant
'}'           Literal.String.Interpol
'(?:'         Literal.String.Regex
'\\'          Literal.String.Regex
'.|::))* | (?:@@?|$)? ' Literal.String.Regex
'#{'          Literal.String.Interpol
'IDENT'       Name.Constant
'}'           Literal.String.Interpol
'(?:'         Literal.String.Regex
'\\'          Literal.String.Regex
'.|::) ) '    Literal.String.Regex
'#{'          Literal.String.Interpol
'METHOD_NAME_EX' Name.Constant
'}'           Literal.String.Interpol
' '           Literal.String.Regex
'/ox'         Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':method'     Literal.String.Symbol
'\n\t\t\t\t'  Text.Whitespace
'@state'      Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':initial'    Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'else'        Keyword
'\n\t\t\t\t'  Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'getch'       Name
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\t\t\t'    Text.Whitespace
'@state'      Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':initial'    Literal.String.Symbol
'\n\n\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@state'      Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
':module_expected' Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'<<'          Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':operator'   Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'else'        Keyword
'\n\t\t\t\t'  Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
' (?: '       Literal.String.Regex
'#{'          Literal.String.Interpol
'IDENT'       Name.Constant
'}'           Literal.String.Interpol
' (?:'        Literal.String.Regex
'\\'          Literal.String.Regex
'.|::))* '    Literal.String.Regex
'#{'          Literal.String.Interpol
'IDENT'       Name.Constant
'}'           Literal.String.Interpol
' '           Literal.String.Regex
'/ox'         Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t\t' Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':method'     Literal.String.Symbol
'\n\t\t\t\t'  Text.Whitespace
'else'        Keyword
'\n\t\t\t\t\t' Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'getch'       Name
'\n\t\t\t\t'  Text.Whitespace
'end'         Keyword
'\n\t\t\t\t'  Text.Whitespace
'@state'      Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':initial'    Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'# state == :initial' Comment.Single
'\n\t\t\t'    Text.Whitespace
'# IDENTIFIERS, KEYWORDS' Comment.Single
'\n\t\t\t'    Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'GLOBAL_VARIABLE' Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':global_variable' Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
' @@ '        Literal.String.Regex
'#{'          Literal.String.Interpol
'IDENT'       Name.Constant
'}'           Literal.String.Interpol
' '           Literal.String.Regex
'/ox'         Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':class_variable' Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
' @ '         Literal.String.Regex
'#{'          Literal.String.Interpol
'IDENT'       Name.Constant
'}'           Literal.String.Interpol
' '           Literal.String.Regex
'/ox'         Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':instance_variable' Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
' __END__'    Literal.String.Regex
'\\'          Literal.String.Regex
'n ( (?!'     Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'CODE'        Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
') .* )? | '  Literal.String.Regex
'\\'          Literal.String.Regex
'#'           Literal.String.Regex
'[^'          Literal.String.Regex
'\\'          Literal.String.Regex
'n]* | =begin(?=' Literal.String.Regex
'\\'          Literal.String.Regex
's).*? '      Literal.String.Regex
'\\'          Literal.String.Regex
'n=end(?='    Literal.String.Regex
'\\'          Literal.String.Regex
's|'          Literal.String.Regex
'\\'          Literal.String.Regex
'z)(?:[^'     Literal.String.Regex
'\\'          Literal.String.Regex
'n]*)? '      Literal.String.Regex
'/mx'         Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':comment'    Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'METHOD_NAME' Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@last_token_dot' Name.Variable.Instance
'\n\t\t\t\t\t' Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':ident'      Literal.String.Symbol
'\n\t\t\t\t'  Text.Whitespace
'else'        Keyword
'\n\t\t\t\t\t' Text.Whitespace
'matched'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'matched'     Name
'\n\t\t\t\t\t' Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'IDENT_KIND'  Name.Constant
'['           Operator
'matched'     Name
']'           Operator
'\n\t\t\t\t\t' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
':ident'      Literal.String.Symbol
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'matched'     Name
' '           Text.Whitespace
'=~'          Operator
' '           Text
'/'           Literal.String.Regex
'^[A-Z]'      Literal.String.Regex
'/'           Literal.String.Regex
'\n\t\t\t\t\t\t' Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':constant'   Literal.String.Symbol
'\n\t\t\t\t\t' Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
':reserved'   Literal.String.Symbol
'\n\t\t\t\t\t\t' Text.Whitespace
'@state'      Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'DEF_NEW_STATE' Name.Constant
'['           Operator
'matched'     Name
']'           Operator
'\n\t\t\t\t\t\t' Text.Whitespace
'@regexp_allowed' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'REGEXP_ALLOWED' Name.Constant
'['           Operator
'matched'     Name
']'           Operator
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t'  Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'STRING'      Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':string'     Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'SHELL'       Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':shell'      Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'<<\n\t\t\t\t(?:\n\t\t\t\t\t([a-zA-Z_0-9]+)\n\t\t\t\t\t\t(?: .*? ^' Literal.String.Regex
'\\'          Literal.String.Regex
'1$ | .* )\n\t\t\t\t|\n\t\t\t\t\t-([a-zA-Z_0-9]+)\n\t\t\t\t\t\t(?: .*? ^' Literal.String.Regex
'\\'          Literal.String.Regex
's*'          Literal.String.Regex
'\\'          Literal.String.Regex
'2$ | .* )\n\t\t\t\t|\n\t\t\t\t\t(["' Literal.String.Regex
'\\'          Literal.String.Regex
"'`]) (.+?) " Literal.String.Regex
'\\'          Literal.String.Regex
'3\n\t\t\t\t\t\t(?: .*? ^' Literal.String.Regex
'\\'          Literal.String.Regex
'4$ | .* )\n\t\t\t\t|\n\t\t\t\t\t- (["' Literal.String.Regex
'\\'          Literal.String.Regex
"'`]) (.+?) " Literal.String.Regex
'\\'          Literal.String.Regex
'5\n\t\t\t\t\t\t(?: .*? ^' Literal.String.Regex
'\\'          Literal.String.Regex
's*'          Literal.String.Regex
'\\'          Literal.String.Regex
'6$ | .* )\n\t\t\t\t)\n\t\t\t' Literal.String.Regex
'/mxo'        Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':string'     Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'\\/'         Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'@regexp_allowed' Name.Variable.Instance
'\n\t\t\t\t'  Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'unscan'      Name
'\n\t\t\t\t'  Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'REGEXP'      Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':regexp'     Literal.String.Symbol
'\n'          Text.Whitespace

'/'           Literal.String.Regex
'%(?:[Qqxrw](?:' Literal.String.Regex
'\\'          Literal.String.Regex
'([^)'        Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:(?:'    Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)[^)'       Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*'        Literal.String.Regex
'\\'          Literal.String.Regex
')?|'         Literal.String.Regex
'\\'          Literal.String.Regex
'[[^'         Literal.String.Regex
'\\'          Literal.String.Regex
']'           Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:(?:'    Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)[^'        Literal.String.Regex
'\\'          Literal.String.Regex
']'           Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*'        Literal.String.Regex
'\\'          Literal.String.Regex
']?|'         Literal.String.Regex
'\\'          Literal.String.Regex
'{[^}'        Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:(?:'    Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)[^}'       Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*'        Literal.String.Regex
'\\'          Literal.String.Regex
'}?|<[^>'     Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:(?:'    Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)[^>'       Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*>?|([^a-zA-Z' Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'])(?:(?!'    Literal.String.Regex
'\\'          Literal.String.Regex
'1)[^'        Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'])*(?:(?:'   Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)(?:(?!'    Literal.String.Regex
'\\'          Literal.String.Regex
'1)[^'        Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'])*)*'       Literal.String.Regex
'\\'          Literal.String.Regex
'1?)|'        Literal.String.Regex
'\\'          Literal.String.Regex
'([^)'        Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:(?:'    Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)[^)'       Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*'        Literal.String.Regex
'\\'          Literal.String.Regex
')?|'         Literal.String.Regex
'\\'          Literal.String.Regex
'[[^'         Literal.String.Regex
'\\'          Literal.String.Regex
']'           Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:(?:'    Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)[^'        Literal.String.Regex
'\\'          Literal.String.Regex
']'           Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*'        Literal.String.Regex
'\\'          Literal.String.Regex
']?|'         Literal.String.Regex
'\\'          Literal.String.Regex
'{[^}'        Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:(?:'    Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)[^}'       Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*'        Literal.String.Regex
'\\'          Literal.String.Regex
'}?|<[^>'     Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:(?:'    Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)[^>'       Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*>?|([^a-zA-Z' Literal.String.Regex
'\\'          Literal.String.Regex
's'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'])(?:(?!'    Literal.String.Regex
'\\'          Literal.String.Regex
'2)[^'        Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'])*(?:(?:'   Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
'|'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'.)(?:(?!'    Literal.String.Regex
'\\'          Literal.String.Regex
'2)[^'        Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'])*)*'       Literal.String.Regex
'\\'          Literal.String.Regex
'2?|'         Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'[^'          Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:(?:'    Literal.String.Regex
'#'           Literal.String.Regex
'\\'          Literal.String.Regex
'{.*?'        Literal.String.Regex
'\\'          Literal.String.Regex
'}|'          Literal.String.Regex
'#'           Literal.String.Regex
')[^'         Literal.String.Regex
'#'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'\\\\'        Literal.String.Regex
'?)'          Literal.String.Regex
'/'           Literal.String.Regex
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
':(?:'        Literal.String.Regex
'#{'          Literal.String.Interpol
'GLOBAL_VARIABLE' Name.Constant
'}'           Literal.String.Interpol
'|'           Literal.String.Regex
'#{'          Literal.String.Interpol
'METHOD_NAME_EX' Name.Constant
'}'           Literal.String.Interpol
'|'           Literal.String.Regex
'#{'          Literal.String.Interpol
'STRING'      Name.Constant
'}'           Literal.String.Interpol
')'           Literal.String.Regex
'/ox'         Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':symbol'     Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'\n\t\t\t\t'  Literal.String.Regex
'\\'          Literal.String.Regex
'? (?:\n\t\t\t\t\t[^' Literal.String.Regex
'\\'          Literal.String.Regex
's'           Literal.String.Regex
'\\\\'        Literal.String.Regex
']\n\t\t\t\t|\n\t\t\t\t\t' Literal.String.Regex
'\\\\'        Literal.String.Regex
' (?:M-'      Literal.String.Regex
'\\\\'        Literal.String.Regex
'C-|C-'       Literal.String.Regex
'\\\\'        Literal.String.Regex
'M-|M-'       Literal.String.Regex
'\\\\'        Literal.String.Regex
'c|c'         Literal.String.Regex
'\\\\'        Literal.String.Regex
'M-|c|C-|M-))? (?: ' Literal.String.Regex
'\\\\'        Literal.String.Regex
' (?: . | [0-7]{3} | x[0-9A-Fa-f][0-9A-Fa-f] )\n\t\t\t\t)\n\t\t\t' Literal.String.Regex
'/mox'        Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':integer'    Literal.String.Symbol
'\n\n\t\t\t'  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
' [-+*'       Literal.String.Regex
'\\/'         Literal.String.Regex
'%=<>;,|&!()' Literal.String.Regex
'\\'          Literal.String.Regex
'['           Literal.String.Regex
'\\'          Literal.String.Regex
']{}~?] | '   Literal.String.Regex
'\\'          Literal.String.Regex
'.'           Literal.String.Regex
'\\'          Literal.String.Regex
'.?'          Literal.String.Regex
'\\'          Literal.String.Regex
'.? | ::? '   Literal.String.Regex
'/x'          Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':operator'   Literal.String.Symbol
'\n\t\t\t\t'  Text.Whitespace
'@regexp_allowed' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':set'        Literal.String.Symbol
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'matched'     Name
'['           Operator
'-'           Operator
'1'           Literal.Number.Integer
','           Punctuation
'1'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'=~'          Operator
' '           Text
'/'           Literal.String.Regex
'[~=!<>|&^,'  Literal.String.Regex
'\\'          Literal.String.Regex
'('           Literal.String.Regex
'\\'          Literal.String.Regex
'[+'          Literal.String.Regex
'\\'          Literal.String.Regex
'-'           Literal.String.Regex
'\\/'         Literal.String.Regex
'\\'          Literal.String.Regex
'*%]'         Literal.String.Regex
'\\'          Literal.String.Regex
'z'           Literal.String.Regex
'/'           Literal.String.Regex
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'FLOAT'       Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':float'      Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'INTEGER'     Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':integer'    Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'else'        Keyword
'\n\t\t\t\t'  Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'getch'       Name
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\n\t\t'    Text.Whitespace
'token'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Token'       Name.Constant
'.'           Operator
'new'         Name
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'matched'     Name
','           Punctuation
' '           Text.Whitespace
'kind'        Name
'\n\n\t\t'    Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'kind'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
':regexp'     Literal.String.Symbol
'\n\t\t\t'    Text.Whitespace
'token'       Name
'.'           Operator
'text'        Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'[eimnosux]*' Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\n\t\t'    Text.Whitespace
'@regexp_allowed' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'('           Punctuation
'@regexp_allowed' Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
':set'        Literal.String.Symbol
')'           Punctuation
'  '          Text.Whitespace
'# delayed flag setting' Comment.Single
'\n\n\t\t'    Text.Whitespace
'token'       Name
'\n\t'        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'register'    Name
' '           Text.Whitespace
'Ruby'        Name.Constant
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'ruby'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'rb'          Literal.String.Single
"'"           Literal.String.Single
'\n\n\t'      Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Set'         Name.Class
'\n  '        Text.Whitespace
'include'     Keyword.Pseudo
' '           Text.Whitespace
'Enumerable'  Name.Constant
'\n\n  '      Text.Whitespace
'# Creates a new set containing the given objects.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'[]'          Name.Function
'('           Punctuation
'*'           Operator
'ary'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'new'         Keyword.Pseudo
'('           Punctuation
'ary'         Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Creates a new set containing the elements of the given enumerable' Comment.Single
'\n  '        Text.Whitespace
'# object.'   Comment.Single
'\n  '        Text.Whitespace
'#'           Comment.Single
'\n  '        Text.Whitespace
'# If a block is given, the elements of enum are preprocessed by the' Comment.Single
'\n  '        Text.Whitespace
'# given block.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'enum'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
','           Punctuation
' '           Text.Whitespace
'&'           Operator
'block'       Name
')'           Punctuation
' '           Text.Whitespace
'# :yields: o' Comment.Single
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
' '           Text.Whitespace
'||'          Operator
'='           Operator
' '           Text.Whitespace
'Hash'        Name.Constant
'.'           Operator
'new'         Name
'\n\n    '    Text.Whitespace
'enum'        Name
'.'           Operator
'nil?'        Name
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'return'      Keyword
'\n\n    '    Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'block'       Name
'\n      '    Text.Whitespace
'enum'        Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'add'         Name
'('           Punctuation
'block'       Name
'['           Operator
'o'           Name
']'           Operator
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'merge'       Name
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Copy internal hash.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize_copy' Name.Function
'('           Punctuation
'orig'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'orig'        Name
'.'           Operator
'instance_eval' Name
'{'           Punctuation
'@hash'       Name.Variable.Instance
'}'           Punctuation
'.'           Operator
'dup'         Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Returns the number of elements.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'size'        Name.Function
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'size'        Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'length'      Name
' '           Text.Whitespace
'size'        Name
'\n\n  '      Text.Whitespace
'# Returns true if the set contains no elements.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'empty?'      Name.Function
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'empty?'      Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Removes all elements and returns self.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'clear'       Name.Function
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'clear'       Name
'\n    '      Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Replaces the contents of the set with the contents of the given' Comment.Single
'\n  '        Text.Whitespace
'# enumerable object and returns self.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'replace'     Name.Function
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'enum'        Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'class'       Name
'\n      '    Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'replace'     Name
'('           Punctuation
'enum'        Name
'.'           Operator
'instance_eval' Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'@hash'       Name.Variable.Instance
' '           Text.Whitespace
'}'           Punctuation
')'           Punctuation
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'enum'        Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Enumerable'  Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be enumerable' Literal.String.Double
'"'           Literal.String.Double
'\n      '    Text.Whitespace
'clear'       Name
'\n      '    Text.Whitespace
'enum'        Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'add'         Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Converts the set to an array.  The order of elements is uncertain.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'to_a'        Name.Function
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'keys'        Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'flatten_merge' Name.Function
'('           Punctuation
'set'         Name
','           Punctuation
' '           Text.Whitespace
'seen'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Set'         Name.Constant
'.'           Operator
'new'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'set'         Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'e'           Name
'|'           Operator
'\n      '    Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'e'           Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Set'         Name.Constant
')'           Punctuation
'\n\t'        Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'seen'        Name
'.'           Operator
'include?'    Name
'('           Punctuation
'e_id'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'e'           Name
'.'           Operator
'object_id'   Name
')'           Punctuation
'\n\t  '      Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'tried to flatten recursive Set' Literal.String.Double
'"'           Literal.String.Double
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
'seen'        Name
'.'           Operator
'add'         Name
'('           Punctuation
'e_id'        Name
')'           Punctuation
'\n\t'        Text.Whitespace
'flatten_merge' Name
'('           Punctuation
'e'           Name
','           Punctuation
' '           Text.Whitespace
'seen'        Name
')'           Punctuation
'\n\t'        Text.Whitespace
'seen'        Name
'.'           Operator
'delete'      Name
'('           Punctuation
'e_id'        Name
')'           Punctuation
'\n      '    Text.Whitespace
'else'        Keyword
'\n\t'        Text.Whitespace
'add'         Name
'('           Punctuation
'e'           Name
')'           Punctuation
'\n      '    Text.Whitespace
'end'         Keyword
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'protected'   Keyword.Pseudo
' '           Text.Whitespace
':flatten_merge' Literal.String.Symbol
'\n\n  '      Text.Whitespace
'# Returns a new set that is a copy of the set, flattening each' Comment.Single
'\n  '        Text.Whitespace
'# containing set recursively.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'flatten'     Name.Function
'\n    '      Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'class'       Name
'.'           Operator
'new'         Name
'.'           Operator
'flatten_merge' Name
'('           Punctuation
'self'        Name.Builtin
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Equivalent to Set#flatten, but replaces the receiver with the' Comment.Single
'\n  '        Text.Whitespace
'# result in place.  Returns nil if no modifications were made.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'flatten!'    Name.Function
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'detect'      Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'e'           Name
'|'           Operator
' '           Text.Whitespace
'e'           Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Set'         Name.Constant
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n      '    Text.Whitespace
'replace'     Name
'('           Punctuation
'flatten'     Name
'('           Punctuation
')'           Punctuation
')'           Punctuation
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'nil'         Keyword.Pseudo
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Returns true if the set contains the given object.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'include?'    Name.Function
'('           Punctuation
'o'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'include?'    Name
'('           Punctuation
'o'           Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'member?'     Name
' '           Text.Whitespace
'include'     Keyword.Pseudo
'?'           Punctuation
'\n\n  '      Text.Whitespace
'# Returns true if the set is a superset of the given set.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'superset?'   Name.Function
'('           Punctuation
'set'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'set'         Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Set'         Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be a set' Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'false'       Keyword.Pseudo
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'size'        Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'set'         Name
'.'           Operator
'size'        Name
'\n    '      Text.Whitespace
'set'         Name
'.'           Operator
'all?'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'include'     Keyword.Pseudo
'?'           Punctuation
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Returns true if the set is a proper superset of the given set.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'proper_superset?' Name.Function
'('           Punctuation
'set'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'set'         Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Set'         Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be a set' Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'false'       Keyword.Pseudo
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'size'        Name
' '           Text.Whitespace
'<'           Operator
'='           Operator
' '           Text.Whitespace
'set'         Name
'.'           Operator
'size'        Name
'\n    '      Text.Whitespace
'set'         Name
'.'           Operator
'all?'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'include'     Keyword.Pseudo
'?'           Punctuation
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Returns true if the set is a subset of the given set.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'subset?'     Name.Function
'('           Punctuation
'set'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'set'         Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Set'         Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be a set' Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'false'       Keyword.Pseudo
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'set'         Name
'.'           Operator
'size'        Name
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'size'        Name
'\n    '      Text.Whitespace
'all?'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'set'         Name
'.'           Operator
'include?'    Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Returns true if the set is a proper subset of the given set.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'proper_subset?' Name.Function
'('           Punctuation
'set'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'set'         Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Set'         Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be a set' Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'false'       Keyword.Pseudo
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'set'         Name
'.'           Operator
'size'        Name
' '           Text.Whitespace
'<'           Operator
'='           Operator
' '           Text.Whitespace
'size'        Name
'\n    '      Text.Whitespace
'all?'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'set'         Name
'.'           Operator
'include?'    Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Calls the given block once for each element in the set, passing' Comment.Single
'\n  '        Text.Whitespace
'# the element as parameter.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'each'        Name.Function
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'each_key'    Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'yield'       Keyword
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Adds the given object to the set and returns self.  Use +merge+ to' Comment.Single
'\n  '        Text.Whitespace
'# add several elements at once.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'add'         Name.Function
'('           Punctuation
'o'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'['           Operator
'o'           Name
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n    '      Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'add'         Name
'\n\n  '      Text.Whitespace
'# Adds the given object to the set and returns self.  If the' Comment.Single
'\n  '        Text.Whitespace
'# object is already in the set, returns nil.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'add?'        Name.Function
'('           Punctuation
'o'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'include'     Keyword.Pseudo
'?'           Punctuation
'('           Punctuation
'o'           Name
')'           Punctuation
'\n      '    Text.Whitespace
'nil'         Keyword.Pseudo
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'add'         Name
'('           Punctuation
'o'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Deletes the given object from the set and returns self.  Use +subtract+ to' Comment.Single
'\n  '        Text.Whitespace
'# delete several items at once.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'delete'      Name.Function
'('           Punctuation
'o'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'delete'      Name
'('           Punctuation
'o'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Deletes the given object from the set and returns self.  If the' Comment.Single
'\n  '        Text.Whitespace
'# object is not in the set, returns nil.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'delete?'     Name.Function
'('           Punctuation
'o'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'include'     Keyword.Pseudo
'?'           Punctuation
'('           Punctuation
'o'           Name
')'           Punctuation
'\n      '    Text.Whitespace
'delete'      Name
'('           Punctuation
'o'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'nil'         Keyword.Pseudo
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Deletes every element of the set for which block evaluates to' Comment.Single
'\n  '        Text.Whitespace
'# true, and returns self.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'delete_if'   Name.Function
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'delete_if'   Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
','           Punctuation
'|'           Operator
' '           Text.Whitespace
'yield'       Keyword
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Do collect() destructively.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'collect!'    Name.Function
'\n    '      Text.Whitespace
'set'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'class'       Name
'.'           Operator
'new'         Name
'\n    '      Text.Whitespace
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'set'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'yield'       Keyword
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'replace'     Name
'('           Punctuation
'set'         Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'map!'        Name
' '           Text.Whitespace
'collect!'    Name
'\n\n  '      Text.Whitespace
'# Equivalent to Set#delete_if, but returns nil if no changes were' Comment.Single
'\n  '        Text.Whitespace
'# made.'     Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'reject!'     Name.Function
'\n    '      Text.Whitespace
'n'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'size'        Name
'\n    '      Text.Whitespace
'delete_if'   Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'yield'       Keyword
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'size'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'n'           Name
' '           Text.Whitespace
'?'           Punctuation
' '           Text.Whitespace
'nil'         Keyword.Pseudo
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Merges the elements of the given enumerable object to the set and' Comment.Single
'\n  '        Text.Whitespace
'# returns self.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'merge'       Name.Function
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'enum'        Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Set'         Name.Constant
')'           Punctuation
'\n      '    Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'update'      Name
'('           Punctuation
'enum'        Name
'.'           Operator
'instance_eval' Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'@hash'       Name.Variable.Instance
' '           Text.Whitespace
'}'           Punctuation
')'           Punctuation
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'enum'        Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Enumerable'  Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be enumerable' Literal.String.Double
'"'           Literal.String.Double
'\n      '    Text.Whitespace
'enum'        Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'add'         Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Deletes every element that appears in the given enumerable object' Comment.Single
'\n  '        Text.Whitespace
'# and returns self.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'subtract'    Name.Function
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'enum'        Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Enumerable'  Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be enumerable' Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'enum'        Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'delete'      Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'self'        Name.Builtin
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Returns a new set built by merging the set and the elements of the' Comment.Single
'\n  '        Text.Whitespace
'# given enumerable object.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'|'           Name.Function
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'enum'        Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Enumerable'  Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be enumerable' Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'dup'         Name.Builtin
'.'           Operator
'merge'       Name
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'|'           Operator
'\t\t'        Text.Whitespace
'##'          Comment.Single
'\n  '        Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'union'       Name
' '           Text.Whitespace
'|'           Operator
'\t\t'        Text.Whitespace
'##'          Comment.Single
'\n\n  '      Text.Whitespace
'# Returns a new set built by duplicating the set, removing every' Comment.Single
'\n  '        Text.Whitespace
'# element that appears in the given enumerable object.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'-'           Name.Function
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'enum'        Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Enumerable'  Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be enumerable' Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'dup'         Name.Builtin
'.'           Operator
'subtract'    Name
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'difference'  Name
' '           Text.Whitespace
'-'           Operator
'\t'          Text.Whitespace
'##'          Comment.Single
'\n\n  '      Text.Whitespace
'# Returns a new array containing elements common to the set and the' Comment.Single
'\n  '        Text.Whitespace
'# given enumerable object.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'&'           Name.Function
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'enum'        Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Enumerable'  Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be enumerable' Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'n'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'class'       Name
'.'           Operator
'new'         Name
'\n    '      Text.Whitespace
'enum'        Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'n'           Name
'.'           Operator
'add'         Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'include'     Keyword.Pseudo
'?'           Punctuation
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'n'           Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'intersection' Name
' '           Text.Whitespace
'&'           Operator
'\t'          Text.Whitespace
'##'          Comment.Single
'\n\n  '      Text.Whitespace
'# Returns a new array containing elements exclusive between the set' Comment.Single
'\n  '        Text.Whitespace
'# and the given enumerable object.  (set ^ enum) is equivalent to' Comment.Single
'\n  '        Text.Whitespace
'# ((set | enum) - (set & enum)).' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'^'           Name.Function
'('           Punctuation
'enum'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'enum'        Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Enumerable'  Name.Constant
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'value must be enumerable' Literal.String.Double
'"'           Literal.String.Double
'\n    '      Text.Whitespace
'n'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'dup'         Name.Builtin
'\n    '      Text.Whitespace
'enum'        Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'n'           Name
'.'           Operator
'include?'    Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'then'        Keyword
' '           Text.Whitespace
'n'           Name
'.'           Operator
'delete'      Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'n'           Name
'.'           Operator
'add'         Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'end'         Keyword
' '           Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'n'           Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Returns true if two sets are equal.  The equality of each couple' Comment.Single
'\n  '        Text.Whitespace
'# of elements is defined according to Object#eql?.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'=='          Name.Function
'('           Punctuation
'set'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'equal?'      Name.Builtin
'('           Punctuation
'set'         Name
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n\n    '    Text.Whitespace
'set'         Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Set'         Name.Constant
')'           Punctuation
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'size'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'set'         Name
'.'           Operator
'size'        Name
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'false'       Keyword.Pseudo
'\n\n    '    Text.Whitespace
'hash'        Name.Builtin
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'dup'         Name
'\n    '      Text.Whitespace
'set'         Name
'.'           Operator
'all?'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
' '           Text.Whitespace
'hash'        Name.Builtin
'.'           Operator
'include?'    Name
'('           Punctuation
'o'           Name
')'           Punctuation
' '           Text.Whitespace
'}'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'hash'        Name.Function
'\t'          Text.Whitespace
'# :nodoc:'   Comment.Single
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'hash'        Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'eql?'        Name.Function
'('           Punctuation
'o'           Name
')'           Punctuation
'\t'          Text.Whitespace
'# :nodoc:'   Comment.Single
'\n    '      Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'false'       Keyword.Pseudo
' '           Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'o'           Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Set'         Name.Constant
')'           Punctuation
'\n    '      Text.Whitespace
'@hash'       Name.Variable.Instance
'.'           Operator
'eql?'        Name
'('           Punctuation
'o'           Name
'.'           Operator
'instance_eval' Name
'{'           Punctuation
'@hash'       Name.Variable.Instance
'}'           Punctuation
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Classifies the set by the return value of the given block and' Comment.Single
'\n  '        Text.Whitespace
'# returns a hash of {value => set of elements} pairs.  The block is' Comment.Single
'\n  '        Text.Whitespace
'# called once for each element of the set, passing the element as' Comment.Single
'\n  '        Text.Whitespace
'# parameter.' Comment.Single
'\n  '        Text.Whitespace
'#'           Comment.Single
'\n  '        Text.Whitespace
'# e.g.:'     Comment.Single
'\n  '        Text.Whitespace
'#'           Comment.Single
'\n  '        Text.Whitespace
"#   require 'set'" Comment.Single
'\n  '        Text.Whitespace
'#   files = Set.new(Dir.glob("*.rb"))' Comment.Single
'\n  '        Text.Whitespace
'#   hash = files.classify { |f| File.mtime(f).year }' Comment.Single
'\n  '        Text.Whitespace
'#   p hash    # => {2000=>#<Set: {"a.rb", "b.rb"}>,' Comment.Single
'\n  '        Text.Whitespace
'#             #     2001=>#<Set: {"c.rb", "d.rb", "e.rb"}>,' Comment.Single
'\n  '        Text.Whitespace
'#             #     2002=>#<Set: {"f.rb"}>}' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'classify'    Name.Function
' '           Text.Whitespace
'# :yields: o' Comment.Single
'\n    '      Text.Whitespace
'h'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n\n    '    Text.Whitespace
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'i'           Name
'|'           Operator
'\n      '    Text.Whitespace
'x'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'yield'       Keyword
'('           Punctuation
'i'           Name
')'           Punctuation
'\n      '    Text.Whitespace
'('           Punctuation
'h'           Name
'['           Operator
'x'           Name
']'           Operator
' '           Text.Whitespace
'||'          Operator
'='           Operator
' '           Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'class'       Name
'.'           Operator
'new'         Name
')'           Punctuation
'.'           Operator
'add'         Name
'('           Punctuation
'i'           Name
')'           Punctuation
'\n    '      Text.Whitespace
'}'           Punctuation
'\n\n    '    Text.Whitespace
'h'           Name
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'# Divides the set into a set of subsets according to the commonality' Comment.Single
'\n  '        Text.Whitespace
'# defined by the given block.' Comment.Single
'\n  '        Text.Whitespace
'#'           Comment.Single
'\n  '        Text.Whitespace
'# If the arity of the block is 2, elements o1 and o2 are in common' Comment.Single
'\n  '        Text.Whitespace
'# if block.call(o1, o2) is true.  Otherwise, elements o1 and o2 are' Comment.Single
'\n  '        Text.Whitespace
'# in common if block.call(o1) == block.call(o2).' Comment.Single
'\n  '        Text.Whitespace
'#'           Comment.Single
'\n  '        Text.Whitespace
'# e.g.:'     Comment.Single
'\n  '        Text.Whitespace
'#'           Comment.Single
'\n  '        Text.Whitespace
"#   require 'set'" Comment.Single
'\n  '        Text.Whitespace
'#   numbers = Set[1, 3, 4, 6, 9, 10, 11]' Comment.Single
'\n  '        Text.Whitespace
'#   set = numbers.divide { |i,j| (i - j).abs == 1 }' Comment.Single
'\n  '        Text.Whitespace
'#   p set     # => #<Set: {#<Set: {1}>,' Comment.Single
'\n  '        Text.Whitespace
'#             #            #<Set: {11, 9, 10}>,' Comment.Single
'\n  '        Text.Whitespace
'#             #            #<Set: {3, 4}>,' Comment.Single
'\n  '        Text.Whitespace
'#             #            #<Set: {6}>}>' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'divide'      Name.Function
'('           Punctuation
'&'           Operator
'func'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'func'        Name
'.'           Operator
'arity'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'2'           Literal.Number.Integer
'\n      '    Text.Whitespace
'require'     Name.Builtin
' '           Text.Whitespace
"'"           Literal.String.Single
'tsort'       Literal.String.Single
"'"           Literal.String.Single
'\n\n      '  Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'dig'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\t\t'        Text.Whitespace
'# :nodoc:'   Comment.Single
'\n\t'        Text.Whitespace
'include'     Keyword.Pseudo
' '           Text.Whitespace
'TSort'       Name.Constant
'\n\n\t'      Text.Whitespace
'alias'       Keyword
' '           Text.Whitespace
'tsort_each_node' Name
' '           Text.Whitespace
'each_key'    Name
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'tsort_each_child' Name.Function
'('           Punctuation
'node'        Name
','           Punctuation
' '           Text.Whitespace
'&'           Operator
'block'       Name
')'           Punctuation
'\n\t  '      Text.Whitespace
'fetch'       Name
'('           Punctuation
'node'        Name
')'           Punctuation
'.'           Operator
'each'        Name
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n\t'        Text.Whitespace
'end'         Keyword
'\n      '    Text.Whitespace
'end'         Keyword
'\n\n      '  Text.Whitespace
'each'        Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'u'           Name
'|'           Operator
'\n\t'        Text.Whitespace
'dig'         Name
'['           Operator
'u'           Name
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
'\n\t'        Text.Whitespace
'each'        Name
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'v'           Name
'|'           Operator
' '           Text.Whitespace
'func'        Name
'.'           Operator
'call'        Name
'('           Punctuation
'u'           Name
','           Punctuation
' '           Text.Whitespace
'v'           Name
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'a'           Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'v'           Name
' '           Text.Whitespace
'}'           Punctuation
'\n      '    Text.Whitespace
'}'           Punctuation
'\n\n      '  Text.Whitespace
'set'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Set'         Name.Constant
'.'           Operator
'new'         Name
'('           Punctuation
')'           Punctuation
'\n      '    Text.Whitespace
'dig'         Name
'.'           Operator
'each_strongly_connected_component' Name
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'css'         Name
'|'           Operator
'\n\t'        Text.Whitespace
'set'         Name
'.'           Operator
'add'         Name
'('           Punctuation
'self'        Name.Builtin
'.'           Operator
'class'       Name
'.'           Operator
'new'         Name
'('           Punctuation
'css'         Name
')'           Punctuation
')'           Punctuation
'\n      '    Text.Whitespace
'}'           Punctuation
'\n      '    Text.Whitespace
'set'         Name
'\n    '      Text.Whitespace
'else'        Keyword
'\n      '    Text.Whitespace
'Set'         Name.Constant
'.'           Operator
'new'         Name
'('           Punctuation
'classify'    Name
'('           Punctuation
'&'           Operator
'func'        Name
')'           Punctuation
'.'           Operator
'values'      Name
')'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'InspectKey'  Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
':__inspect_key__' Literal.String.Symbol
'         '   Text.Whitespace
'# :nodoc:'   Comment.Single
'\n\n  '      Text.Whitespace
'# Returns a string containing a human-readable representation of the' Comment.Single
'\n  '        Text.Whitespace
'# set. ("#<Set: {element1, element2, ...}>")' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'inspect'     Name.Function
'\n    '      Text.Whitespace
'ids'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'('           Punctuation
'Thread'      Name.Constant
'.'           Operator
'current'     Name
'['           Operator
'InspectKey'  Name.Constant
']'           Operator
' '           Text.Whitespace
'||'          Operator
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
')'           Punctuation
'\n\n    '    Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'ids'         Name
'.'           Operator
'include?'    Name
'('           Punctuation
'object_id'   Name.Builtin
')'           Punctuation
'\n      '    Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'sprintf'     Name.Builtin
'('           Punctuation
"'"           Literal.String.Single
'#'           Literal.String.Single
'<%s: {...}>' Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'class'       Name
'.'           Operator
'name'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'begin'       Keyword
'\n      '    Text.Whitespace
'ids'         Name
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'object_id'   Name.Builtin
'\n      '    Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'sprintf'     Name.Builtin
'('           Punctuation
"'"           Literal.String.Single
'#'           Literal.String.Single
'<%s: {%s}>'  Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'class'       Name
','           Punctuation
' '           Text.Whitespace
'to_a'        Name.Builtin
'.'           Operator
'inspect'     Name
'['           Operator
'1'           Literal.Number.Integer
'..'          Operator
'-'           Operator
'2'           Literal.Number.Integer
']'           Operator
')'           Punctuation
'\n    '      Text.Whitespace
'ensure'      Keyword
'\n      '    Text.Whitespace
'ids'         Name
'.'           Operator
'pop'         Name
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'pretty_print' Name.Function
'('           Punctuation
'pp'          Name
')'           Punctuation
'\t'          Text.Whitespace
'# :nodoc:'   Comment.Single
'\n    '      Text.Whitespace
'pp'          Name
'.'           Operator
'text'        Name
' '           Text.Whitespace
'sprintf'     Name.Builtin
'('           Punctuation
"'"           Literal.String.Single
'#'           Literal.String.Single
'<%s: {'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'class'       Name
'.'           Operator
'name'        Name
')'           Punctuation
'\n    '      Text.Whitespace
'pp'          Name
'.'           Operator
'nest'        Name
'('           Punctuation
'1'           Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n      '    Text.Whitespace
'pp'          Name
'.'           Operator
'seplist'     Name
'('           Punctuation
'self'        Name.Builtin
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'o'           Name
'|'           Operator
'\n\t'        Text.Whitespace
'pp'          Name
'.'           Operator
'pp'          Name
' '           Text.Whitespace
'o'           Name
'\n      '    Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'}'           Punctuation
'\n    '      Text.Whitespace
'pp'          Name
'.'           Operator
'text'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'}>'          Literal.String.Double
'"'           Literal.String.Double
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'pretty_print_cycle' Name.Function
'('           Punctuation
'pp'          Name
')'           Punctuation
'\t'          Text.Whitespace
'# :nodoc:'   Comment.Single
'\n    '      Text.Whitespace
'pp'          Name
'.'           Operator
'text'        Name
' '           Text.Whitespace
'sprintf'     Name.Builtin
'('           Punctuation
"'"           Literal.String.Single
'#'           Literal.String.Single
'<%s: {%s}>'  Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'class'       Name
'.'           Operator
'name'        Name
','           Punctuation
' '           Text.Whitespace
'empty?'      Name
' '           Text.Whitespace
'?'           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
"'"           Literal.String.Single
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'...'         Literal.String.Single
"'"           Literal.String.Single
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# SortedSet implements a set which elements are sorted in order.  See Set.' Comment.Single
'\n'          Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'SortedSet'   Name.Class
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'Set'         Name.Constant
'\n  '        Text.Whitespace
'@@setup'     Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
'\n\n  '      Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'self'        Name.Builtin
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'[]'          Name.Function
'('           Punctuation
'*'           Operator
'ary'         Name
')'           Punctuation
'\t'          Text.Whitespace
'# :nodoc:'   Comment.Single
'\n      '    Text.Whitespace
'new'         Keyword.Pseudo
'('           Punctuation
'ary'         Name
')'           Punctuation
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'setup'       Name.Function
'\t'          Text.Whitespace
'# :nodoc:'   Comment.Single
'\n      '    Text.Whitespace
'@@setup'     Name.Variable.Class
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'return'      Keyword
'\n\n      '  Text.Whitespace
'begin'       Keyword
'\n\t'        Text.Whitespace
'require'     Name.Builtin
' '           Text.Whitespace
"'"           Literal.String.Single
'rbtree'      Literal.String.Single
"'"           Literal.String.Single
'\n\n\t'      Text.Whitespace
'module_eval' Name.Builtin
' '           Text.Whitespace
'%{'          Literal.String.Other
'\n\t  def initialize(*args, &block)\n\t    @hash = RBTree.new\n\t    super\n\t  end\n\t' Literal.String.Other
'}'           Literal.String.Other
'\n      '    Text.Whitespace
'rescue'      Keyword
' '           Text.Whitespace
'LoadError'   Name.Constant
'\n\t'        Text.Whitespace
'module_eval' Name.Builtin
' '           Text.Whitespace
'%{'          Literal.String.Other
'\n\t  def initialize(*args, &block)\n\t    @keys = nil\n\t    super\n\t  end\n\n\t  def clear\n\t    @keys = nil\n\t    super\n\t  end\n\n\t  def replace(enum)\n\t    @keys = nil\n\t    super\n\t  end\n\n\t  def add(o)\n\t    @keys = nil\n\t    @hash[o] = true\n\t    self\n\t  end\n\t  alias << add\n\n\t  def delete(o)\n\t    @keys = nil\n\t    @hash.delete(o)\n\t    self\n\t  end\n\n\t  def delete_if\n\t    n = @hash.size\n\t    @hash.delete_if ' Literal.String.Other
'{'           Literal.String.Other
' |o,| yield(o) ' Literal.String.Other
'}'           Literal.String.Other
'\n\t    @keys = nil if @hash.size != n\n\t    self\n\t  end\n\n\t  def merge(enum)\n\t    @keys = nil\n\t    super\n\t  end\n\n\t  def each\n\t    to_a.each ' Literal.String.Other
'{'           Literal.String.Other
' |o| yield(o) ' Literal.String.Other
'}'           Literal.String.Other
'\n\t  end\n\n\t  def to_a\n\t    (@keys = @hash.keys).sort! unless @keys\n\t    @keys\n\t  end\n\t' Literal.String.Other
'}'           Literal.String.Other
'\n      '    Text.Whitespace
'end'         Keyword
'\n\n      '  Text.Whitespace
'@@setup'     Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n    '      Text.Whitespace
'end'         Keyword
'\n  '        Text.Whitespace
'end'         Keyword
'\n\n  '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
'('           Punctuation
'*'           Operator
'args'        Name
','           Punctuation
' '           Text.Whitespace
'&'           Operator
'block'       Name
')'           Punctuation
'\t'          Text.Whitespace
'# :nodoc:'   Comment.Single
'\n    '      Text.Whitespace
'SortedSet'   Name.Constant
'.'           Operator
'setup'       Name
'\n    '      Text.Whitespace
'initialize'  Keyword.Pseudo
'('           Punctuation
'*'           Operator
'args'        Name
','           Punctuation
' '           Text.Whitespace
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'Enumerable'  Name.Namespace
'\n  '        Text.Whitespace
'# Makes a set from the enumerable object with given arguments.' Comment.Single
'\n  '        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'to_set'      Name.Function
'('           Punctuation
'klass'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Set'         Name.Constant
','           Punctuation
' '           Text.Whitespace
'*'           Operator
'args'        Name
','           Punctuation
' '           Text.Whitespace
'&'           Operator
'block'       Name
')'           Punctuation
'\n    '      Text.Whitespace
'klass'       Name
'.'           Operator
'new'         Name
'('           Punctuation
'self'        Name.Builtin
','           Punctuation
' '           Text.Whitespace
'*'           Operator
'args'        Name
','           Punctuation
' '           Text.Whitespace
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# =begin'    Comment.Single
'\n'          Text.Whitespace

'# == RestricedSet class' Comment.Single
'\n'          Text.Whitespace

'# RestricedSet implements a set with restrictions defined by a given' Comment.Single
'\n'          Text.Whitespace

'# block.'    Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# === Super class' Comment.Single
'\n'          Text.Whitespace

'#     Set'   Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# === Class Methods' Comment.Single
'\n'          Text.Whitespace

'# --- RestricedSet::new(enum = nil) { |o| ... }' Comment.Single
'\n'          Text.Whitespace

'# --- RestricedSet::new(enum = nil) { |rset, o| ... }' Comment.Single
'\n'          Text.Whitespace

'#     Creates a new restricted set containing the elements of the given' Comment.Single
'\n'          Text.Whitespace

'#     enumerable object.  Restrictions are defined by the given block.' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

"#     If the block's arity is 2, it is called with the RestrictedSet" Comment.Single
'\n'          Text.Whitespace

'#     itself and an object to see if the object is allowed to be put in' Comment.Single
'\n'          Text.Whitespace

'#     the set.' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'#     Otherwise, the block is called with an object to see if the object' Comment.Single
'\n'          Text.Whitespace

'#     is allowed to be put in the set.' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# === Instance Methods' Comment.Single
'\n'          Text.Whitespace

'# --- restriction_proc' Comment.Single
'\n'          Text.Whitespace

'#     Returns the restriction procedure of the set.' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# =end'      Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# class RestricedSet < Set' Comment.Single
'\n'          Text.Whitespace

'#   def initialize(*args, &block)' Comment.Single
'\n'          Text.Whitespace

'#     @proc = block or raise ArgumentError, "missing a block"' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'#     if @proc.arity == 2' Comment.Single
'\n'          Text.Whitespace

'#       instance_eval %{' Comment.Single
'\n'          Text.Whitespace

'# \tdef add(o)' Comment.Single
'\n'          Text.Whitespace

'# \t  @hash[o] = true if @proc.call(self, o)' Comment.Single
'\n'          Text.Whitespace

'# \t  self'  Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'# \talias << add' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \tdef add?(o)' Comment.Single
'\n'          Text.Whitespace

'# \t  if include?(o) || !@proc.call(self, o)' Comment.Single
'\n'          Text.Whitespace

'# \t    nil' Comment.Single
'\n'          Text.Whitespace

'# \t  else'  Comment.Single
'\n'          Text.Whitespace

'# \t    @hash[o] = true' Comment.Single
'\n'          Text.Whitespace

'# \t    self' Comment.Single
'\n'          Text.Whitespace

'# \t  end'   Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \tdef replace(enum)' Comment.Single
'\n'          Text.Whitespace

'# \t  enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"' Comment.Single
'\n'          Text.Whitespace

'# \t  clear' Comment.Single
'\n'          Text.Whitespace

'# \t  enum.each { |o| add(o) }' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \t  self'  Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \tdef merge(enum)' Comment.Single
'\n'          Text.Whitespace

'# \t  enum.is_a?(Enumerable) or raise ArgumentError, "value must be enumerable"' Comment.Single
'\n'          Text.Whitespace

'# \t  enum.each { |o| add(o) }' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \t  self'  Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'#       }'   Comment.Single
'\n'          Text.Whitespace

'#     else'  Comment.Single
'\n'          Text.Whitespace

'#       instance_eval %{' Comment.Single
'\n'          Text.Whitespace

'# \tdef add(o)' Comment.Single
'\n'          Text.Whitespace

'#         if @proc.call(o)' Comment.Single
'\n'          Text.Whitespace

'# \t    @hash[o] = true' Comment.Single
'\n'          Text.Whitespace

'#         end' Comment.Single
'\n'          Text.Whitespace

'# \t  self'  Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'# \talias << add' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \tdef add?(o)' Comment.Single
'\n'          Text.Whitespace

'# \t  if include?(o) || !@proc.call(o)' Comment.Single
'\n'          Text.Whitespace

'# \t    nil' Comment.Single
'\n'          Text.Whitespace

'# \t  else'  Comment.Single
'\n'          Text.Whitespace

'# \t    @hash[o] = true' Comment.Single
'\n'          Text.Whitespace

'# \t    self' Comment.Single
'\n'          Text.Whitespace

'# \t  end'   Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'#       }'   Comment.Single
'\n'          Text.Whitespace

'#     end'   Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'#     super(*args)' Comment.Single
'\n'          Text.Whitespace

'#   end'     Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'#   def restriction_proc' Comment.Single
'\n'          Text.Whitespace

'#     @proc' Comment.Single
'\n'          Text.Whitespace

'#   end'     Comment.Single
'\n'          Text.Whitespace

'# end'       Comment.Single
'\n\n'        Text.Whitespace

'if'          Keyword
' '           Text.Whitespace
'$0'          Name.Variable.Global
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'__FILE__'    Name.Builtin.Pseudo
'\n  '        Text.Whitespace
'eval'        Name.Builtin
' '           Text.Whitespace
'DATA'        Name.Constant
'.'           Operator
'read'        Name
','           Punctuation
' '           Text.Whitespace
'nil'         Keyword.Pseudo
','           Punctuation
' '           Text.Whitespace
'$0'          Name.Variable.Global
','           Punctuation
' '           Text.Whitespace
'__LINE__'    Name.Builtin.Pseudo
'+'           Operator
'4'           Literal.Number.Integer
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'# = rweb - CGI Support Library' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# Author:: Johannes Barre (mailto:rweb@igels.net)' Comment.Single
'\n'          Text.Whitespace

'# Copyright:: Copyright (c) 2003, 04 by Johannes Barre' Comment.Single
'\n'          Text.Whitespace

'# License:: GNU Lesser General Public License (COPYING, http://www.gnu.org/copyleft/lesser.html)' Comment.Single
'\n'          Text.Whitespace

'# Version:: 0.1.0' Comment.Single
'\n'          Text.Whitespace

'# CVS-ID:: $Id: example.rb 39 2005-11-05 03:33:55Z murphy $' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# == What is Rweb?' Comment.Single
'\n'          Text.Whitespace

'# Rweb is a replacement for the cgi class included in the ruby distribution.' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# == How to use' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# === Basics' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# This class is made to be as easy as possible to use. An example:' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \trequire "rweb"' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \tweb = Rweb.new' Comment.Single
'\n'          Text.Whitespace

'# \tweb.out do' Comment.Single
'\n'          Text.Whitespace

'# \t\tweb.puts "Hello world!"' Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# The visitor will get a simple "Hello World!" in his browser. Please notice,' Comment.Single
'\n'          Text.Whitespace

"# that won't set html-tags for you, so you should better do something like this:" Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \trequire "rweb"' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \tweb = Rweb.new' Comment.Single
'\n'          Text.Whitespace

'# \tweb.out do' Comment.Single
'\n'          Text.Whitespace

'# \t\tweb.puts "<html><body>Hello world!</body></html>"' Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# === Set headers' Comment.Single
'\n'          Text.Whitespace

"# Of course, it's also possible to tell the browser, that the content of this" Comment.Single
'\n'          Text.Whitespace

'# page is plain text instead of html code:' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \trequire "rweb"' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \tweb = Rweb.new' Comment.Single
'\n'          Text.Whitespace

'# \tweb.out do' Comment.Single
'\n'          Text.Whitespace

'# \t\tweb.header("content-type: text/plain")' Comment.Single
'\n'          Text.Whitespace

'# \t\tweb.puts "Hello plain world!"' Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

"# Please remember, headers can't be set after the page content has been send." Comment.Single
'\n'          Text.Whitespace

"# You have to set all nessessary headers before the first puts oder print. It's" Comment.Single
'\n'          Text.Whitespace

'# possible to cache the content until everything is complete. Doing it this' Comment.Single
'\n'          Text.Whitespace

'# way, you can set headers everywhere.' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# If you set a header twice, the second header will replace the first one. The' Comment.Single
'\n'          Text.Whitespace

'# header name is not casesensitive, it will allways converted in to the' Comment.Single
'\n'          Text.Whitespace

'# capitalised form suggested by the w3c (http://w3.org)' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# === Set cookies' Comment.Single
'\n'          Text.Whitespace

'# Setting cookies is quite easy:' Comment.Single
'\n'          Text.Whitespace

"# \tinclude 'rweb'" Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \tweb = Rweb.new' Comment.Single
'\n'          Text.Whitespace

'# \tCookie.new("Visits", web.cookies[\'visits\'].to_i +1)' Comment.Single
'\n'          Text.Whitespace

'# \tweb.out do' Comment.Single
'\n'          Text.Whitespace

'# \t\tweb.puts "Welcome back! You visited this page #{web.cookies[\'visits\'].to_i +1} times"' Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# See the class Cookie for more details.' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# === Get form and cookie values' Comment.Single
'\n'          Text.Whitespace

'# There are four ways to submit data from the browser to the server and your' Comment.Single
'\n'          Text.Whitespace

"# ruby script: via GET, POST, cookies and file upload. Rweb doesn't support" Comment.Single
'\n'          Text.Whitespace

'# file upload by now.' Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

"# \tinclude 'rweb'" Comment.Single
'\n'          Text.Whitespace

'#'           Comment.Single
'\n'          Text.Whitespace

'# \tweb = Rweb.new' Comment.Single
'\n'          Text.Whitespace

'# \tweb.out do' Comment.Single
'\n'          Text.Whitespace

'# \t\tweb.print "action: #{web.get[\'action\']} "' Comment.Single
'\n'          Text.Whitespace

'# \t\tweb.puts "The value of the cookie \'visits\' is #{web.cookies[\'visits\']}"' Comment.Single
'\n'          Text.Whitespace

'# \t\tweb.puts "The post parameter \'test[\'x\']\' is #{web.post[\'test\'][\'x\']}"' Comment.Single
'\n'          Text.Whitespace

'# \tend'     Comment.Single
'\n\n'        Text.Whitespace

'RWEB_VERSION' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'0.1.0'       Literal.String.Double
'"'           Literal.String.Double
'\n'          Text.Whitespace

'RWEB'        Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'rweb/'       Literal.String.Double
'#{'          Literal.String.Interpol
'RWEB_VERSION' Name.Constant
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n\n'        Text.Whitespace

"#require 'rwebcookie' -> edit by bunny :-)" Comment.Single
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Rweb'        Name.Class
'\n    '      Text.Whitespace
'# All parameter submitted via the GET method are available in attribute' Comment.Single
'\n\t\t'      Text.Whitespace
'# get. This is Hash, where every parameter is available as a key-value' Comment.Single
'\n\t\t'      Text.Whitespace
'# pair.'     Comment.Single
'\n\t\t'      Text.Whitespace
'#'           Comment.Single
'\n\t\t'      Text.Whitespace
"# If your input tag has a name like this one, it's value will be available" Comment.Single
'\n\t\t'      Text.Whitespace
'# as web.get["fieldname"]' Comment.Single
'\n\t\t'      Text.Whitespace
'#  <input name="fieldname">' Comment.Single
'\n\t\t'      Text.Whitespace
'# You can submit values as a Hash' Comment.Single
'\n\t\t'      Text.Whitespace
'#  <input name="text[\'index\']">' Comment.Single
'\n\t\t'      Text.Whitespace
'#  <input name="text[\'index2\']">' Comment.Single
'\n\t\t'      Text.Whitespace
'# will be available as' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.get["text"]["index"]' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.get["text"]["index2"]' Comment.Single
'\n\t\t'      Text.Whitespace
'# Integers are also possible' Comment.Single
'\n\t\t'      Text.Whitespace
'#  <input name="int[2]">' Comment.Single
'\n\t\t'      Text.Whitespace
'#  <input name="int[3][\'hi\']>' Comment.Single
'\n\t\t'      Text.Whitespace
'# will be available as' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.get["int"][2]' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.get["int"][3]["hi"]' Comment.Single
'\n\t\t'      Text.Whitespace
'# If you specify no index, the lowest unused index will be used:' Comment.Single
'\n\t\t'      Text.Whitespace
'#  <input name="int[]"><!-- First Field -->' Comment.Single
'\n\t\t'      Text.Whitespace
'#  <input name="int[]"><!-- Second one -->' Comment.Single
'\n\t\t'      Text.Whitespace
'# will be available as' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.get["int"][0] # First Field' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.get["int"][1] # Second one' Comment.Single
'\n\t\t'      Text.Whitespace
"# Please notice, this doesn'd work like you might expect:" Comment.Single
'\n\t\t'      Text.Whitespace
'#  <input name="text[index]">' Comment.Single
'\n\t\t'      Text.Whitespace
'# It will not be available as web.get["text"]["index"] but' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.get["text[index]"]' Comment.Single
'\n    '      Text.Whitespace
'attr_reader' Keyword.Pseudo
' '           Text.Whitespace
':get'        Literal.String.Symbol
'\n\n    '    Text.Whitespace
'# All parameters submitted via POST are available in the attribute post. It' Comment.Single
'\n\t\t'      Text.Whitespace
'# works like the get attribute.' Comment.Single
'\n\t\t'      Text.Whitespace
'#  <input name="text[0]">' Comment.Single
'\n\t\t'      Text.Whitespace
'# will be available as' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.post["text"][0]' Comment.Single
'\n\t\t'      Text.Whitespace
'attr_reader' Keyword.Pseudo
' '           Text.Whitespace
':post'       Literal.String.Symbol
'\n\n    '    Text.Whitespace
'# All cookies submitted by the browser are available in cookies. This is a' Comment.Single
'\n\t\t'      Text.Whitespace
'# Hash, where every cookie is a key-value pair.' Comment.Single
'\n\t\t'      Text.Whitespace
'attr_reader' Keyword.Pseudo
' '           Text.Whitespace
':cookies'    Literal.String.Symbol
'\n\n    '    Text.Whitespace
'# The name of the browser identification is submitted as USER_AGENT and' Comment.Single
'\n\t\t'      Text.Whitespace
'# available in this attribute.' Comment.Single
'\n\t\t'      Text.Whitespace
'attr_reader' Keyword.Pseudo
' '           Text.Whitespace
':user_agent' Literal.String.Symbol
'\n\n    '    Text.Whitespace
'# The IP address of the client.' Comment.Single
'\n\t\t'      Text.Whitespace
'attr_reader' Keyword.Pseudo
' '           Text.Whitespace
':remote_addr' Literal.String.Symbol
'\n\n    '    Text.Whitespace
'# Creates a new Rweb object. This should only done once. You can set various' Comment.Single
'\n    '      Text.Whitespace
'# options via the settings hash.' Comment.Single
'\n    '      Text.Whitespace
'#'           Comment.Single
'\n    '      Text.Whitespace
'# "cache" => true: Everything you script send to the client will be cached' Comment.Single
'\n    '      Text.Whitespace
'# until the end of the out block or until flush is called. This way, you' Comment.Single
'\n    '      Text.Whitespace
'# can modify headers and cookies even after printing something to the client.' Comment.Single
'\n    '      Text.Whitespace
'#'           Comment.Single
'\n    '      Text.Whitespace
'# "safe" => level: Changes the $SAFE attribute. By default, $SAFE will be set' Comment.Single
'\n    '      Text.Whitespace
"# to 1. If $SAFE is already higher than this value, it won't be changed." Comment.Single
'\n    '      Text.Whitespace
'#'           Comment.Single
'\n    '      Text.Whitespace
'# "silend" => true: Normaly, Rweb adds automaticly a header like this' Comment.Single
'\n    '      Text.Whitespace
'# "X-Powered-By: Rweb/x.x.x (Ruby/y.y.y)". With the silend option you can' Comment.Single
'\n    '      Text.Whitespace
'# suppress this.' Comment.Single
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
' '           Text.Whitespace
'('           Punctuation
'settings'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
')'           Punctuation
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'@header'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n        '  Text.Whitespace
'@cookies'    Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n        '  Text.Whitespace
'@get'        Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n        '  Text.Whitespace
'@post'       Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n\n        ' Text.Whitespace
'# Internal attributes' Comment.Single
'\n        '  Text.Whitespace
'@status'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n        '  Text.Whitespace
'@reasonPhrase' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n        '  Text.Whitespace
'@setcookies' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
'\n        '  Text.Whitespace
'@output_started' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
';'           Punctuation
'\n        '  Text.Whitespace
'@output_allowed' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
';'           Punctuation
'\n\n        ' Text.Whitespace
'@mod_ruby'   Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
'\n        '  Text.Whitespace
'@env'        Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'ENV'         Name.Constant
'.'           Operator
'to_hash'     Name
'\n\n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'defined?'    Name
'('           Punctuation
'MOD_RUBY'    Name.Constant
')'           Punctuation
'\n            ' Text.Whitespace
'@output_method' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'mod_ruby'    Literal.String.Double
'"'           Literal.String.Double
'\n            ' Text.Whitespace
'@mod_ruby'   Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'SERVER_SOFTWARE' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
' '           Text.Whitespace
'=~'          Operator
' '           Text
'/'           Literal.String.Regex
'^Microsoft-IIS' Literal.String.Regex
'/i'          Literal.String.Regex
'\n            ' Text.Whitespace
'@output_method' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'nph'         Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'else'        Keyword
'\n            ' Text.Whitespace
'@output_method' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'ph'          Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'settings'    Name
'.'           Operator
'is_a?'       Name
'('           Punctuation
'Hash'        Name.Constant
')'           Punctuation
'\n            ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'settings must be a Hash' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'@settings'   Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'settings'    Name
'\n\n        ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'safe'        Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'@settings'   Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'safe'        Literal.String.Double
'"'           Literal.String.Double
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'$SAFE'       Name.Variable.Global
' '           Text.Whitespace
'<'           Operator
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'safe'        Literal.String.Double
'"'           Literal.String.Double
']'           Operator
'\n            ' Text.Whitespace
'$SAFE'       Name.Variable.Global
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'safe'        Literal.String.Double
'"'           Literal.String.Double
']'           Operator
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'cache'       Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'@settings'   Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'cache'       Literal.String.Double
'"'           Literal.String.Double
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'# mod_ruby sets no QUERY_STRING variable, if no GET-Parameters are given' Comment.Single
'\n        '  Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'QUERY_STRING' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'@env'        Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'QUERY_STRING' Literal.String.Double
'"'           Literal.String.Double
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'# Now we split the QUERY_STRING by the seperators & and ; or, if' Comment.Single
'\n        '  Text.Whitespace
"# specified, settings['get seperator']" Comment.Single
'\n        '  Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'get seperator' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'get_args'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'QUERY_STRING' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'.'           Operator
'split'       Name
'('           Punctuation
'/'           Literal.String.Regex
'[&;]'        Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'\n        '  Text.Whitespace
'else'        Keyword
'\n            ' Text.Whitespace
'get_args'    Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'QUERY_STRING' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'.'           Operator
'split'       Name
'('           Punctuation
'@settings'   Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'get seperator' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
')'           Punctuation
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'get_args'    Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'arg'         Name
' '           Text.Whitespace
'|'           Operator
'\n            ' Text.Whitespace
'arg_key'     Name
','           Punctuation
' '           Text.Whitespace
'arg_val'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'arg'         Name
'.'           Operator
'split'       Name
'('           Punctuation
'/'           Literal.String.Regex
'='           Literal.String.Regex
'/'           Literal.String.Regex
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n            ' Text.Whitespace
'arg_key'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Rweb'        Name.Constant
'::'          Operator
'unescape'    Name
'('           Punctuation
'arg_key'     Name
')'           Punctuation
'\n            ' Text.Whitespace
'arg_val'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Rweb'        Name.Constant
'::'          Operator
'unescape'    Name
'('           Punctuation
'arg_val'     Name
')'           Punctuation
'\n\n            ' Text.Whitespace
"# Parse names like name[0], name['text'] or name[]" Comment.Single
'\n            ' Text.Whitespace
'pattern'     Name
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'^(.+)'       Literal.String.Regex
'\\'          Literal.String.Regex
'[("[^'       Literal.String.Regex
'\\'          Literal.String.Regex
']]*"|\'[^'   Literal.String.Regex
'\\'          Literal.String.Regex
"]]*'|[0-9]*)" Literal.String.Regex
'\\'          Literal.String.Regex
']$'          Literal.String.Regex
'/'           Literal.String.Regex
'\n            ' Text.Whitespace
'keys'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
'\n            ' Text.Whitespace
'while'       Keyword
' '           Text.Whitespace
'match'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'pattern'     Name
'.'           Operator
'match'       Name
'('           Punctuation
'arg_key'     Name
')'           Punctuation
'\n                ' Text.Whitespace
'arg_key'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'match'       Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
'\n                ' Text.Whitespace
'keys'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'match'       Name
'['           Operator
'2'           Literal.Number.Integer
']'           Operator
']'           Operator
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'keys'        Name
'\n            ' Text.Whitespace
'end'         Keyword
'\n            ' Text.Whitespace
'keys'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'arg_key'     Name
']'           Operator
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'keys'        Name
'\n\n            ' Text.Whitespace
'akt'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@get'        Name.Variable.Instance
'\n            ' Text.Whitespace
'last'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n            ' Text.Whitespace
'lastkey'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n            ' Text.Whitespace
'keys'        Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'key'         Name
'|'           Operator
'\n                ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'key'         Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'# No key specified (like in "test[]"), so we use the' Comment.Single
'\n                    ' Text.Whitespace
'# lowerst unused Integer as key' Comment.Single
'\n                    ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n                    ' Text.Whitespace
'while'       Keyword
' '           Text.Whitespace
'akt'         Name
'.'           Operator
'has_key?'    Name
'('           Punctuation
'key'         Name
')'           Punctuation
'\n                        ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n                    ' Text.Whitespace
'end'         Keyword
'\n                ' Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'/'           Literal.String.Regex
'^[0-9]*$'    Literal.String.Regex
'/'           Literal.String.Regex
' '           Text.Whitespace
'=~'          Operator
' '           Text.Whitespace
'key'         Name
'\n                    ' Text.Whitespace
'# If the index is numerical convert it to an Integer' Comment.Single
'\n                    ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'.'           Operator
'to_i'        Name
'\n                ' Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'key'         Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
'.'           Operator
'chr'         Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
"'"           Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'key'         Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
'.'           Operator
'chr'         Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
"'"           Literal.String.Single
'"'           Literal.String.Single
"'"           Literal.String.Single
'\n                    ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'key'         Name
'.'           Operator
'length'      Name
'('           Punctuation
')'           Punctuation
' '           Text.Whitespace
'-'           Operator
'2'           Literal.Number.Integer
']'           Operator
'\n                ' Text.Whitespace
'end'         Keyword
'\n                ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'!'           Operator
'akt'         Name
'.'           Operator
'has_key?'    Name
'('           Punctuation
'key'         Name
')'           Punctuation
' '           Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'!'           Operator
'akt'         Name
'['           Operator
'key'         Name
']'           Operator
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Hash'        Name.Constant
'\n                    ' Text.Whitespace
"# create an empty Hash if there isn't already one" Comment.Single
'\n                    ' Text.Whitespace
'akt'         Name
'['           Operator
'key'         Name
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n                ' Text.Whitespace
'end'         Keyword
'\n                ' Text.Whitespace
'last'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'akt'         Name
'\n                ' Text.Whitespace
'lastkey'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'\n                ' Text.Whitespace
'akt'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'akt'         Name
'['           Operator
'key'         Name
']'           Operator
'\n            ' Text.Whitespace
'end'         Keyword
'\n            ' Text.Whitespace
'last'        Name
'['           Operator
'lastkey'     Name
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'arg_val'     Name
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'REQUEST_METHOD' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'POST'        Literal.String.Double
'"'           Literal.String.Double
'\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'CONTENT_TYPE' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'CONTENT_TYPE' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'application/x-www-form-urlencoded' Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
"'"           Literal.String.Single
'CONTENT_LENGTH' Literal.String.Single
"'"           Literal.String.Single
')'           Punctuation
'\n                ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'post seperator' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n                    ' Text.Whitespace
'post_args'   Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'$stdin'      Name.Variable.Global
'.'           Operator
'read'        Name
'('           Punctuation
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'CONTENT_LENGTH' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'.'           Operator
'to_i'        Name
')'           Punctuation
'.'           Operator
'split'       Name
'('           Punctuation
'/'           Literal.String.Regex
'[&;]'        Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'\n                ' Text.Whitespace
'else'        Keyword
'\n                    ' Text.Whitespace
'post_args'   Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'$stdin'      Name.Variable.Global
'.'           Operator
'read'        Name
'('           Punctuation
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'CONTENT_LENGTH' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'.'           Operator
'to_i'        Name
')'           Punctuation
'.'           Operator
'split'       Name
'('           Punctuation
'@settings'   Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'post seperator' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
')'           Punctuation
'\n                ' Text.Whitespace
'end'         Keyword
'\n                ' Text.Whitespace
'post_args'   Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'arg'         Name
' '           Text.Whitespace
'|'           Operator
'\n                    ' Text.Whitespace
'arg_key'     Name
','           Punctuation
' '           Text.Whitespace
'arg_val'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'arg'         Name
'.'           Operator
'split'       Name
'('           Punctuation
'/'           Literal.String.Regex
'='           Literal.String.Regex
'/'           Literal.String.Regex
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n                    ' Text.Whitespace
'arg_key'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Rweb'        Name.Constant
'::'          Operator
'unescape'    Name
'('           Punctuation
'arg_key'     Name
')'           Punctuation
'\n                    ' Text.Whitespace
'arg_val'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Rweb'        Name.Constant
'::'          Operator
'unescape'    Name
'('           Punctuation
'arg_val'     Name
')'           Punctuation
'\n\n                    ' Text.Whitespace
"# Parse names like name[0], name['text'] or name[]" Comment.Single
'\n                    ' Text.Whitespace
'pattern'     Name
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'^(.+)'       Literal.String.Regex
'\\'          Literal.String.Regex
'[("[^'       Literal.String.Regex
'\\'          Literal.String.Regex
']]*"|\'[^'   Literal.String.Regex
'\\'          Literal.String.Regex
"]]*'|[0-9]*)" Literal.String.Regex
'\\'          Literal.String.Regex
']$'          Literal.String.Regex
'/'           Literal.String.Regex
'\n                    ' Text.Whitespace
'keys'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
'\n                    ' Text.Whitespace
'while'       Keyword
' '           Text.Whitespace
'match'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'pattern'     Name
'.'           Operator
'match'       Name
'('           Punctuation
'arg_key'     Name
')'           Punctuation
'\n                        ' Text.Whitespace
'arg_key'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'match'       Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
'\n                        ' Text.Whitespace
'keys'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'match'       Name
'['           Operator
'2'           Literal.Number.Integer
']'           Operator
']'           Operator
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'keys'        Name
'\n                    ' Text.Whitespace
'end'         Keyword
'\n                    ' Text.Whitespace
'keys'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
'arg_key'     Name
']'           Operator
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'keys'        Name
'\n\n                    ' Text.Whitespace
'akt'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@post'       Name.Variable.Instance
'\n                    ' Text.Whitespace
'last'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n                    ' Text.Whitespace
'lastkey'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n                    ' Text.Whitespace
'keys'        Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'key'         Name
'|'           Operator
'\n                        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'key'         Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
'\n                            ' Text.Whitespace
'# No key specified (like in "test[]"), so we use' Comment.Single
'\n                            ' Text.Whitespace
'# the lowerst unused Integer as key' Comment.Single
'\n                            ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n                            ' Text.Whitespace
'while'       Keyword
' '           Text.Whitespace
'akt'         Name
'.'           Operator
'has_key?'    Name
'('           Punctuation
'key'         Name
')'           Punctuation
'\n                                ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n                            ' Text.Whitespace
'end'         Keyword
'\n                        ' Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'/'           Literal.String.Regex
'^[0-9]*$'    Literal.String.Regex
'/'           Literal.String.Regex
' '           Text.Whitespace
'=~'          Operator
' '           Text.Whitespace
'key'         Name
'\n                            ' Text.Whitespace
'# If the index is numerical convert it to an Integer' Comment.Single
'\n                            ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'.'           Operator
'to_i'        Name
'\n                        ' Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'key'         Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
'.'           Operator
'chr'         Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
"'"           Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'key'         Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
'.'           Operator
'chr'         Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
"'"           Literal.String.Single
'"'           Literal.String.Single
"'"           Literal.String.Single
'\n                            ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
' '           Text.Whitespace
'key'         Name
'.'           Operator
'length'      Name
'('           Punctuation
')'           Punctuation
' '           Text.Whitespace
'-'           Operator
'2'           Literal.Number.Integer
']'           Operator
'\n                        ' Text.Whitespace
'end'         Keyword
'\n                        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'!'           Operator
'akt'         Name
'.'           Operator
'has_key?'    Name
'('           Punctuation
'key'         Name
')'           Punctuation
' '           Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'!'           Operator
'akt'         Name
'['           Operator
'key'         Name
']'           Operator
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Hash'        Name.Constant
'\n                            ' Text.Whitespace
"# create an empty Hash if there isn't already one" Comment.Single
'\n                            ' Text.Whitespace
'akt'         Name
'['           Operator
'key'         Name
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n                        ' Text.Whitespace
'end'         Keyword
'\n                        ' Text.Whitespace
'last'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'akt'         Name
'\n                        ' Text.Whitespace
'lastkey'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'\n                        ' Text.Whitespace
'akt'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'akt'         Name
'['           Operator
'key'         Name
']'           Operator
'\n                    ' Text.Whitespace
'end'         Keyword
'\n                    ' Text.Whitespace
'last'        Name
'['           Operator
'lastkey'     Name
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'arg_val'     Name
'\n                ' Text.Whitespace
'end'         Keyword
'\n            ' Text.Whitespace
'else'        Keyword
'\n                ' Text.Whitespace
'# Maybe we should print a warning here?' Comment.Single
'\n                ' Text.Whitespace
'$stderr'     Name.Variable.Global
'.'           Operator
'print'       Name
'('           Punctuation
'"'           Literal.String.Double
'Unidentified form data recived and discarded.' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'HTTP_COOKIE' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'cookie'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'HTTP_COOKIE' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'.'           Operator
'split'       Name
'('           Punctuation
'/'           Literal.String.Regex
'; ?'         Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'\n            ' Text.Whitespace
'cookie'      Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'c'           Name
' '           Text.Whitespace
'|'           Operator
'\n                ' Text.Whitespace
'cookie_key'  Name
','           Punctuation
' '           Text.Whitespace
'cookie_val'  Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'c'           Name
'.'           Operator
'split'       Name
'('           Punctuation
'/'           Literal.String.Regex
'='           Literal.String.Regex
'/'           Literal.String.Regex
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n\n                ' Text.Whitespace
'@cookies'    Name.Variable.Instance
' '           Text.Whitespace
'['           Operator
'Rweb'        Name.Constant
'::'          Operator
'unescape'    Name
'('           Punctuation
'cookie_key'  Name
')'           Punctuation
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Rweb'        Name.Constant
'::'          Operator
'unescape'    Name
'('           Punctuation
'cookie_val'  Name
')'           Punctuation
'\n            ' Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'defined?'    Name
'('           Punctuation
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'HTTP_USER_AGENT' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
')'           Punctuation
'\n            ' Text.Whitespace
'@user_agent' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'HTTP_USER_AGENT' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'\n        '  Text.Whitespace
'else'        Keyword
'\n            ' Text.Whitespace
'@user_agent' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
';'           Punctuation
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'defined?'    Name
'('           Punctuation
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'REMOTE_ADDR' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
')'           Punctuation
'\n            ' Text.Whitespace
'@remote_addr' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@env'        Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
'REMOTE_ADDR' Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'\n        '  Text.Whitespace
'else'        Keyword
'\n            ' Text.Whitespace
'@remote_addr' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'# Prints a String to the client. If caching is enabled, the String will' Comment.Single
'\n    '      Text.Whitespace
'# buffered until the end of the out block ends.' Comment.Single
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'print'       Name.Function
'('           Punctuation
'str'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@output_allowed' Name.Variable.Instance
'\n            ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
'You just can write to output inside of a Rweb::out-block' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'cache'       Literal.String.Double
'"'           Literal.String.Double
']'           Operator
'\n            ' Text.Whitespace
'@buffer'     Name.Variable.Instance
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'['           Operator
'str'         Name
'.'           Operator
'to_s'        Name
']'           Operator
'\n        '  Text.Whitespace
'else'        Keyword
'\n            ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@output_started' Name.Variable.Instance
'\n                ' Text.Whitespace
'sendHeaders' Name
'\n            ' Text.Whitespace
'end'         Keyword
'\n            ' Text.Whitespace
'$stdout'     Name.Variable.Global
'.'           Operator
'print'       Name
'('           Punctuation
'str'         Name
')'           Punctuation
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'nil'         Keyword.Pseudo
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'# Prints a String to the client and adds a line break at the end. Please' Comment.Single
'\n\t\t'      Text.Whitespace
'# remember, that a line break is not visible in HTML, use the <br> HTML-Tag' Comment.Single
'\n\t\t'      Text.Whitespace
'# for this. If caching is enabled, the String will buffered until the end' Comment.Single
'\n\t\t'      Text.Whitespace
'# of the out block ends.' Comment.Single
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'puts'        Name.Function
'('           Punctuation
'str'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'print'       Name
'('           Punctuation
'str'         Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
')'           Punctuation
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n\t\t'    Text.Whitespace
'# Alias to print.' Comment.Single
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'write'       Name.Function
'('           Punctuation
'str'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'print'       Name
'('           Punctuation
'str'         Name
')'           Punctuation
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'# If caching is enabled, all cached data are send to the cliend and the' Comment.Single
'\n\t\t'      Text.Whitespace
'# cache emptied.' Comment.Single
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'flush'       Name.Function
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@output_allowed' Name.Variable.Instance
'\n            ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
"You can't use flush outside of a Rweb::out-block" Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'buffer'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@buffer'     Name.Variable.Instance
'.'           Operator
'join'        Name
'\n\n        ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@output_started' Name.Variable.Instance
'\n            ' Text.Whitespace
'sendHeaders' Name
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'$stdout'     Name.Variable.Global
'.'           Operator
'print'       Name
'('           Punctuation
'buffer'      Name
')'           Punctuation
'\n\n        ' Text.Whitespace
'@buffer'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'# Sends one or more header to the client. All headers are cached just' Comment.Single
'\n\t\t'      Text.Whitespace
'# before body data are send to the client. If the same header are set' Comment.Single
'\n\t\t'      Text.Whitespace
'# twice, only the last value is send.' Comment.Single
'\n\t\t'      Text.Whitespace
'#'           Comment.Single
'\n\t\t'      Text.Whitespace
'# Example:'  Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.header("Last-Modified: Mon, 16 Feb 2004 20:15:41 GMT")' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.header("Location: http://www.ruby-lang.org")' Comment.Single
'\n\t\t'      Text.Whitespace
'#'           Comment.Single
'\n\t\t'      Text.Whitespace
'# You can specify more than one header at the time by doing something like' Comment.Single
'\n\t\t'      Text.Whitespace
'# this:'     Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.header("Content-Type: text/plain\\nContent-Length: 383")' Comment.Single
'\n\t\t'      Text.Whitespace
'# or'        Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.header(["Content-Type: text/plain", "Content-Length: 383"])' Comment.Single
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'header'      Name.Function
'('           Punctuation
'str'         Name
')'           Punctuation
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@output_started' Name.Variable.Instance
'\n            ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
"HTTP-Headers are already send. You can't change them after output has started!" Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@output_allowed' Name.Variable.Instance
'\n            ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
'You just can set headers inside of a Rweb::out-block' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'str'         Name
'.'           Operator
'is_a?'       Name
'Array'       Name.Builtin
'\n            ' Text.Whitespace
'str'         Name
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'value'       Name
' '           Text.Whitespace
'|'           Operator
'\n                ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'header'      Name
'('           Punctuation
'value'       Name
')'           Punctuation
'\n            ' Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'str'         Name
'.'           Operator
'split'       Name
'('           Punctuation
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
'n'           Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'.'           Operator
'length'      Name
' '           Text.Whitespace
'>'           Operator
' '           Text.Whitespace
'1'           Literal.Number.Integer
'\n            ' Text.Whitespace
'str'         Name
'.'           Operator
'split'       Name
'('           Punctuation
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
'n'           Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
'value'       Name
' '           Text.Whitespace
'|'           Operator
'\n                ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'header'      Name
'('           Punctuation
'value'       Name
')'           Punctuation
'\n            ' Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'str'         Name
'.'           Operator
'is_a?'       Name
' '           Text.Whitespace
'String'      Name.Builtin
'\n            ' Text.Whitespace
'str'         Name
'.'           Operator
'gsub!'       Name
'('           Punctuation
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
'r'           Literal.String.Regex
'/'           Literal.String.Regex
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'str'         Name
' '           Text.Whitespace
'=~'          Operator
' '           Text
'/'           Literal.String.Regex
'^HTTP'       Literal.String.Regex
'\\/'         Literal.String.Regex
'1'           Literal.String.Regex
'\\'          Literal.String.Regex
'.[01] [0-9]{3} ?.*$' Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n                ' Text.Whitespace
'pattern'     Name
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'^HTTP'       Literal.String.Regex
'\\/'         Literal.String.Regex
'1.[01] ([0-9]{3}) ?(.*)$' Literal.String.Regex
'/'           Literal.String.Regex
'\n\n                ' Text.Whitespace
'result'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'pattern'     Name
'.'           Operator
'match'       Name
'('           Punctuation
'str'         Name
')'           Punctuation
'\n                ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'setstatus'   Name
'('           Punctuation
'result'      Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
','           Punctuation
' '           Text.Whitespace
'result'      Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
')'           Punctuation
'\n            ' Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'('           Punctuation
'str'         Name
' '           Text.Whitespace
'=~'          Operator
' '           Text
'/'           Literal.String.Regex
'^status: [0-9]{3} ?.*$' Literal.String.Regex
'/i'          Literal.String.Regex
')'           Punctuation
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n                ' Text.Whitespace
'pattern'     Name
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'^status: ([0-9]{3}) ?(.*)$' Literal.String.Regex
'/i'          Literal.String.Regex
'\n\n                ' Text.Whitespace
'result'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'pattern'     Name
'.'           Operator
'match'       Name
'('           Punctuation
'str'         Name
')'           Punctuation
'\n                ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'setstatus'   Name
'('           Punctuation
'result'      Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
','           Punctuation
' '           Text.Whitespace
'result'      Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
')'           Punctuation
'\n            ' Text.Whitespace
'else'        Keyword
'\n                ' Text.Whitespace
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'str'         Name
'.'           Operator
'split'       Name
'('           Punctuation
'/'           Literal.String.Regex
': ?'         Literal.String.Regex
'/'           Literal.String.Regex
','           Punctuation
' '           Text.Whitespace
'2'           Literal.Number.Integer
')'           Punctuation
'\n\n                ' Text.Whitespace
'@header'     Name.Variable.Instance
'['           Operator
'a'           Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
'.'           Operator
'downcase'    Name
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
'\n            ' Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'# Changes the status of this page. There are several codes like "200 OK",' Comment.Single
'\n\t\t'      Text.Whitespace
'# "302 Found", "404 Not Found" or "500 Internal Server Error". A list of' Comment.Single
'\n\t\t'      Text.Whitespace
'# all codes is available at' Comment.Single
'\n\t\t'      Text.Whitespace
'# http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10' Comment.Single
'\n\t\t'      Text.Whitespace
'#'           Comment.Single
'\n\t\t'      Text.Whitespace
'# You can just send the code number, the reason phrase will be added' Comment.Single
'\n\t\t'      Text.Whitespace
'# automaticly with the recommendations from the w3c if not specified. If' Comment.Single
'\n\t\t'      Text.Whitespace
'# you set the status twice or more, only the last status will be send.' Comment.Single
'\n\t\t'      Text.Whitespace
'# Examples:' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.status("401 Unauthorized")' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.status("410 Sad but true, this lonely page is gone :(")' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.status(206)' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.status("400")' Comment.Single
'\n\t\t'      Text.Whitespace
'#'           Comment.Single
'\n\t\t'      Text.Whitespace
'# The default status is "200 OK". If a "Location" header is set, the' Comment.Single
'\n\t\t'      Text.Whitespace
'# default status is "302 Found".' Comment.Single
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'status'      Name.Function
'('           Punctuation
'str'         Name
')'           Punctuation
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@output_started' Name.Variable.Instance
'\n            ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
"HTTP-Headers are already send. You can't change them after output has started!" Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@output_allowed' Name.Variable.Instance
'\n            ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
'You just can set headers inside of a Rweb::out-block' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'str'         Name
'.'           Operator
'is_a?'       Name
'Integer'     Name.Builtin
'\n            ' Text.Whitespace
'@status'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'str'         Name
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'str'         Name
'.'           Operator
'is_a?'       Name
'String'      Name.Builtin
'\n            ' Text.Whitespace
'p1'          Name
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'^([0-9]{3}) ?(.*)$' Literal.String.Regex
'/'           Literal.String.Regex
'\n            ' Text.Whitespace
'p2'          Name
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'^HTTP'       Literal.String.Regex
'\\/'         Literal.String.Regex
'1'           Literal.String.Regex
'\\'          Literal.String.Regex
'.[01] ([0-9]{3}) ?(.*)$' Literal.String.Regex
'/'           Literal.String.Regex
'\n            ' Text.Whitespace
'p3'          Name
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'^status: ([0-9]{3}) ?(.*)$' Literal.String.Regex
'/i'          Literal.String.Regex
'\n\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'p1'          Name
'.'           Operator
'match'       Name
'('           Punctuation
'str'         Name
')'           Punctuation
')'           Punctuation
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n                ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'p2'          Name
'.'           Operator
'match'       Name
'('           Punctuation
'str'         Name
')'           Punctuation
')'           Punctuation
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n                    ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'a'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'p3'          Name
'.'           Operator
'match'       Name
'('           Punctuation
'str'         Name
')'           Punctuation
')'           Punctuation
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n                        ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'Invalid argument' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n                    ' Text.Whitespace
'end'         Keyword
'\n                ' Text.Whitespace
'end'         Keyword
'\n            ' Text.Whitespace
'end'         Keyword
'\n            ' Text.Whitespace
'@status'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
'.'           Operator
'to_i'        Name
'\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'a'           Name
'['           Operator
'2'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'!='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
'\n                ' Text.Whitespace
'@reasonPhrase' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'a'           Name
'['           Operator
'2'           Literal.Number.Integer
']'           Operator
'\n            ' Text.Whitespace
'else'        Keyword
'\n                ' Text.Whitespace
'@reasonPhrase' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'getReasonPhrase' Name
'('           Punctuation
'@status'     Name.Variable.Instance
')'           Punctuation
'\n            ' Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'else'        Keyword
'\n            ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'ArgumentError' Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'Argument of setstatus must be integer or string' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'# Handles the output of your content and rescues all exceptions. Send all' Comment.Single
'\n\t\t'      Text.Whitespace
'# data in the block to this method. For example:' Comment.Single
'\n\t\t'      Text.Whitespace
'#  web.out do' Comment.Single
'\n\t\t'      Text.Whitespace
'#      web.header("Content-Type: text/plain")' Comment.Single
'\n\t\t'      Text.Whitespace
'#      web.puts("Hello, plain world!")' Comment.Single
'\n\t\t'      Text.Whitespace
'#  end'      Comment.Single
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'out'         Name.Function
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'@output_allowed' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n        '  Text.Whitespace
'@buffer'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
';'           Punctuation
' '           Text.Whitespace
"# We use an array as buffer, because it's more performant :)" Comment.Single
'\n\n        ' Text.Whitespace
'begin'       Keyword
'\n            ' Text.Whitespace
'yield'       Keyword
'\n        '  Text.Whitespace
'rescue'      Keyword
' '           Text.Whitespace
'Exception'   Name.Constant
' '           Text.Whitespace
'='           Operator
'>'           Operator
' '           Text.Whitespace
'exception'   Name
'\n            ' Text.Whitespace
'$stderr'     Name.Variable.Global
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'Ruby exception rescued (' Literal.String.Double
'#{'          Literal.String.Interpol
'exception'   Name
'.'           Operator
'class'       Name
'}'           Literal.String.Interpol
'): '         Literal.String.Double
'#{'          Literal.String.Interpol
'exception'   Name
'.'           Operator
'message'     Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n            ' Text.Whitespace
'$stderr'     Name.Variable.Global
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'exception'   Name
'.'           Operator
'backtrace'   Name
'.'           Operator
'join'        Name
'('           Punctuation
'"'           Literal.String.Double
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
')'           Punctuation
'\n\n            ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@output_started' Name.Variable.Instance
'\n                ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'setstatus'   Name
'('           Punctuation
'500'         Literal.Number.Integer
')'           Punctuation
'\n                ' Text.Whitespace
'@header'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'{'           Punctuation
'}'           Punctuation
'\n            ' Text.Whitespace
'end'         Keyword
'\n\n            ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'('           Punctuation
'@settings'   Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'hide errors' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'hide errors' Literal.String.Double
'"'           Literal.String.Double
']'           Operator
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
')'           Punctuation
'\n                ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@output_started' Name.Variable.Instance
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'header'      Name
'('           Punctuation
'"'           Literal.String.Double
'Content-Type: text/html' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'<!DOCTYPE HTML PUBLIC ' Literal.String.Double
'\\"'         Literal.String.Escape
'-//W3C//DTD HTML 4.01 Strict//EN' Literal.String.Double
'\\"'         Literal.String.Escape
' '           Literal.String.Double
'\\"'         Literal.String.Escape
'http://www.w3.org/TR/html4/strict.dtd' Literal.String.Double
'\\"'         Literal.String.Escape
'>'           Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'<html>'      Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'<head>'      Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'<title>500 Internal Server Error</title>' Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'</head>'     Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'<body>'      Literal.String.Double
'"'           Literal.String.Double
'\n                ' Text.Whitespace
'end'         Keyword
'\n                ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@header'     Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'content-type' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'('           Punctuation
'@header'     Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'content-type' Literal.String.Double
'"'           Literal.String.Double
']'           Operator
' '           Text.Whitespace
'=~'          Operator
' '           Text
'/'           Literal.String.Regex
'^text'       Literal.String.Regex
'\\/'         Literal.String.Regex
'html'        Literal.String.Regex
'/i'          Literal.String.Regex
')'           Punctuation
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'<h1>Internal Server Error</h1>' Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'<p>The server encountered an exception and was unable to complete your request.</p>' Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'<p>The exception has provided the following information:</p>' Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'<pre style=' Literal.String.Double
'\\"'         Literal.String.Escape
'background: ' Literal.String.Double
'#'           Literal.String.Double
'FFCCCC; border: black solid 2px; margin-left: 2cm; margin-right: 2cm; padding: 2mm;' Literal.String.Double
'\\"'         Literal.String.Escape
'><b>'        Literal.String.Double
'#{'          Literal.String.Interpol
'exception'   Name
'.'           Operator
'class'       Name
'}'           Literal.String.Interpol
'</b>: '      Literal.String.Double
'#{'          Literal.String.Interpol
'exception'   Name
'.'           Operator
'message'     Name
'}'           Literal.String.Interpol
' <b>on</b>'  Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'#{'          Literal.String.Interpol
'exception'   Name
'.'           Operator
'backtrace'   Name
'.'           Operator
'join'        Name
'('           Punctuation
'"'           Literal.String.Double
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
')'           Punctuation
'}'           Literal.String.Interpol
'</pre>'      Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'</body>'     Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'</html>'     Literal.String.Double
'"'           Literal.String.Double
'\n                ' Text.Whitespace
'else'        Keyword
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'The server encountered an exception and was unable to complete your request' Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'The exception has provided the following information:' Literal.String.Double
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'"'           Literal.String.Double
'#{'          Literal.String.Interpol
'exception'   Name
'.'           Operator
'class'       Name
'}'           Literal.String.Interpol
': '          Literal.String.Double
'#{'          Literal.String.Interpol
'exception'   Name
'.'           Operator
'message'     Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'puts'        Name
' '           Text.Whitespace
'exception'   Name
'.'           Operator
'backtrace'   Name
'.'           Operator
'join'        Name
'('           Punctuation
'"'           Literal.String.Double
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
')'           Punctuation
'\n                ' Text.Whitespace
'end'         Keyword
'\n            ' Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'cache'       Literal.String.Double
'"'           Literal.String.Double
']'           Operator
'\n            ' Text.Whitespace
'buffer'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@buffer'     Name.Variable.Instance
'.'           Operator
'join'        Name
'\n\n            ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@output_started' Name.Variable.Instance
'\n                ' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@header'     Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'content-length' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n                    ' Text.Whitespace
'self'        Name.Builtin
'.'           Operator
'header'      Name
'('           Punctuation
'"'           Literal.String.Double
'content-length: ' Literal.String.Double
'#{'          Literal.String.Interpol
'buffer'      Name
'.'           Operator
'length'      Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
')'           Punctuation
'\n                ' Text.Whitespace
'end'         Keyword
'\n\n                ' Text.Whitespace
'sendHeaders' Name
'\n            ' Text.Whitespace
'end'         Keyword
'\n            ' Text.Whitespace
'$stdout'     Name.Variable.Global
'.'           Operator
'print'       Name
'('           Punctuation
'buffer'      Name
')'           Punctuation
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'!'           Operator
'@output_started' Name.Variable.Instance
'\n            ' Text.Whitespace
'sendHeaders' Name
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'@output_allowed' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
';'           Punctuation
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'# Decodes URL encoded data, %20 for example stands for a space.' Comment.Single
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'Rweb'        Name.Class
'.'           Operator
'unescape'    Name.Function
'('           Punctuation
'str'         Name
')'           Punctuation
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'defined?'    Name
' '           Text.Whitespace
'str'         Name
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'str'         Name
'.'           Operator
'is_a?'       Name
' '           Text.Whitespace
'String'      Name.Builtin
'\n            ' Text.Whitespace
'str'         Name
'.'           Operator
'gsub!'       Name
'('           Punctuation
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
'+'           Literal.String.Regex
'/'           Literal.String.Regex
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
' '           Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'str'         Name
'.'           Operator
'gsub'        Name
'('           Punctuation
'/'           Literal.String.Regex
'%.{2}'       Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
' '           Text.Whitespace
's'           Name
' '           Text.Whitespace
'|'           Operator
'\n                ' Text.Whitespace
's'           Name
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
'2'           Literal.Number.Integer
']'           Operator
'.'           Operator
'hex'         Name
'.'           Operator
'chr'         Name
'\n            ' Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'protected'   Keyword.Pseudo
'\n    '      Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'sendHeaders' Name.Function
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n\n        ' Text.Whitespace
'Cookie'      Name.Constant
'.'           Operator
'disallow'    Name
' '           Text.Whitespace
'# no more cookies can be set or modified' Comment.Single
'\n        '  Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'!'           Operator
'('           Punctuation
'@settings'   Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'silent'      Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'@settings'   Name.Variable.Instance
'['           Operator
'"'           Literal.String.Double
'silent'      Literal.String.Double
'"'           Literal.String.Double
']'           Operator
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'!'           Operator
'@header'     Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'x-powered-by' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@mod_ruby'   Name.Variable.Instance
'\n                ' Text.Whitespace
'header'      Name
'('           Punctuation
'"'           Literal.String.Double
'x-powered-by: ' Literal.String.Double
'#{'          Literal.String.Interpol
'RWEB'        Name.Constant
'}'           Literal.String.Interpol
' (Ruby/'     Literal.String.Double
'#{'          Literal.String.Interpol
'RUBY_VERSION' Name.Constant
'}'           Literal.String.Interpol
', '          Literal.String.Double
'#{'          Literal.String.Interpol
'MOD_RUBY'    Name.Constant
'}'           Literal.String.Interpol
')'           Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
';'           Punctuation
'\n            ' Text.Whitespace
'else'        Keyword
'\n                ' Text.Whitespace
'header'      Name
'('           Punctuation
'"'           Literal.String.Double
'x-powered-by: ' Literal.String.Double
'#{'          Literal.String.Interpol
'RWEB'        Name.Constant
'}'           Literal.String.Interpol
' (Ruby/'     Literal.String.Double
'#{'          Literal.String.Interpol
'RUBY_VERSION' Name.Constant
'}'           Literal.String.Interpol
')'           Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
';'           Punctuation
'\n            ' Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'end'         Keyword
'\n\n        ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@output_method' Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'ph'          Literal.String.Double
'"'           Literal.String.Double
'\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'('           Punctuation
'@status'     Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'@status'     Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'200'         Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'!'           Operator
'@header'     Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'content-type' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'!'           Operator
'@header'     Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'location'    Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
')'           Punctuation
'\n                ' Text.Whitespace
'header'      Name
'('           Punctuation
'"'           Literal.String.Double
'content-type: text/html' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'end'         Keyword
'\n\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@status'     Name.Variable.Instance
' '           Text.Whitespace
'!='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n                ' Text.Whitespace
'$stdout'     Name.Variable.Global
'.'           Operator
'print'       Name
' '           Text.Whitespace
'"'           Literal.String.Double
'Status: '    Literal.String.Double
'#{'          Literal.String.Interpol
'@status'     Name.Variable.Instance
'}'           Literal.String.Interpol
' '           Literal.String.Double
'#{'          Literal.String.Interpol
'@reasonPhrase' Name.Variable.Instance
'}'           Literal.String.Interpol
'\\r'         Literal.String.Escape
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
'\n            ' Text.Whitespace
'end'         Keyword
'\n\n            ' Text.Whitespace
'@header'     Name.Variable.Instance
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'key'         Name
','           Punctuation
' '           Text.Whitespace
'value'       Name
'|'           Operator
'\n                ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
' '           Text.Whitespace
'*'           Operator
'1'           Literal.Number.Integer
' '           Text.Whitespace
'# "unfreeze" key :)' Comment.Single
'\n                ' Text.Whitespace
'key'         Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'['           Operator
'0'           Literal.Number.Integer
','           Punctuation
'1'           Literal.Number.Integer
']'           Operator
'.'           Operator
'upcase!'     Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
'\n\n                ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'.'           Operator
'gsub'        Name
'('           Punctuation
'/'           Literal.String.Regex
'-[a-z]'      Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'char'        Name
'|'           Operator
'\n                    ' Text.Whitespace
'"'           Literal.String.Double
'-'           Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'char'        Name
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
'1'           Literal.Number.Integer
']'           Operator
'.'           Operator
'upcase'      Name
'\n                ' Text.Whitespace
'end'         Keyword
'\n\n                ' Text.Whitespace
'$stdout'     Name.Variable.Global
'.'           Operator
'print'       Name
' '           Text.Whitespace
'"'           Literal.String.Double
'#{'          Literal.String.Interpol
'key'         Name
'}'           Literal.String.Interpol
': '          Literal.String.Double
'#{'          Literal.String.Interpol
'value'       Name
'}'           Literal.String.Interpol
'\\r'         Literal.String.Escape
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
'\n            ' Text.Whitespace
'end'         Keyword
'\n            ' Text.Whitespace
'cookies'     Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Cookie'      Name.Constant
'.'           Operator
'getHttpHeader' Name
' '           Text.Whitespace
'# Get all cookies as an HTTP Header' Comment.Single
'\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'cookies'     Name
'\n                ' Text.Whitespace
'$stdout'     Name.Variable.Global
'.'           Operator
'print'       Name
' '           Text.Whitespace
'cookies'     Name
'\n            ' Text.Whitespace
'end'         Keyword
'\n\n            ' Text.Whitespace
'$stdout'     Name.Variable.Global
'.'           Operator
'print'       Name
' '           Text.Whitespace
'"'           Literal.String.Double
'\\r'         Literal.String.Escape
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
'\n\n        ' Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@output_method' Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'nph'         Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'@output_method' Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'mod_ruby'    Literal.String.Double
'"'           Literal.String.Double
'\n            ' Text.Whitespace
'r'           Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Apache'      Name.Constant
'.'           Operator
'request'     Name
'\n\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'('           Punctuation
'('           Punctuation
'@status'     Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'@status'     Name.Variable.Instance
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'200'         Literal.Number.Integer
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'!'           Operator
'@header'     Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'content-type' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'!'           Operator
'@header'     Name.Variable.Instance
'.'           Operator
'has_key?'    Name
'('           Punctuation
'"'           Literal.String.Double
'location'    Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
')'           Punctuation
'\n                ' Text.Whitespace
'header'      Name
'('           Punctuation
'"'           Literal.String.Double
'text/html'   Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'\n            ' Text.Whitespace
'end'         Keyword
'\n\n            ' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@status'     Name.Variable.Instance
' '           Text.Whitespace
'!='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n                ' Text.Whitespace
'r'           Name
'.'           Operator
'status_line' Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'#{'          Literal.String.Interpol
'@status'     Name.Variable.Instance
'}'           Literal.String.Interpol
' '           Literal.String.Double
'#{'          Literal.String.Interpol
'@reasonPhrase' Name.Variable.Instance
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n            ' Text.Whitespace
'end'         Keyword
'\n\n            ' Text.Whitespace
'r'           Name
'.'           Operator
'send_http_header' Name
'\n            ' Text.Whitespace
'@header'     Name.Variable.Instance
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'key'         Name
','           Punctuation
' '           Text.Whitespace
'value'       Name
'|'           Operator
'\n                ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
' '           Text.Whitespace
'*'           Operator
'1'           Literal.Number.Integer
' '           Text.Whitespace
'# "unfreeze" key :)' Comment.Single
'\n\n                ' Text.Whitespace
'key'         Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'['           Operator
'0'           Literal.Number.Integer
','           Punctuation
'1'           Literal.Number.Integer
']'           Operator
'.'           Operator
'upcase!'     Name
'['           Operator
'0'           Literal.Number.Integer
']'           Operator
'\n                ' Text.Whitespace
'key'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'key'         Name
'.'           Operator
'gsub'        Name
'('           Punctuation
'/'           Literal.String.Regex
'-[a-z]'      Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'char'        Name
'|'           Operator
'\n                    ' Text.Whitespace
'"'           Literal.String.Double
'-'           Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'char'        Name
'['           Operator
'1'           Literal.Number.Integer
','           Punctuation
'1'           Literal.Number.Integer
']'           Operator
'.'           Operator
'upcase'      Name
'\n                ' Text.Whitespace
'end'         Keyword
'\n                ' Text.Whitespace
'puts'        Name.Builtin
' '           Text.Whitespace
'"'           Literal.String.Double
'#{'          Literal.String.Interpol
'key'         Name
'}'           Literal.String.Interpol
': '          Literal.String.Double
'#{'          Literal.String.Interpol
'value'       Name
'.'           Operator
'class'       Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n                ' Text.Whitespace
'#r.headers_out[key] = value' Comment.Single
'\n            ' Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'@output_started' Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n\n    '    Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'getReasonPhrase' Name.Function
' '           Text.Whitespace
'('           Punctuation
'status'      Name
')'           Punctuation
'\n        '  Text.Whitespace
'# {{{'       Comment.Single
'\n        '  Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'100'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Continue'    Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'101'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Switching Protocols' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'200'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'OK'          Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'201'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Created'     Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'202'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Accepted'    Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'203'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Non-Authoritative Information' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'204'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'No Content'  Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'205'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Reset Content' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'206'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Partial Content' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'300'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Multiple Choices' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'301'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Moved Permanently' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'302'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Found'       Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'303'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'See Other'   Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'304'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Not Modified' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'305'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Use Proxy'   Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'307'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Temporary Redirect' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'400'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Bad Request' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'401'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Unauthorized' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'402'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Payment Required' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'403'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Forbidden'   Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'404'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Not Found'   Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'405'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Method Not Allowed' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'406'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Not Acceptable' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'407'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Proxy Authentication Required' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'408'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Request Time-out' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'409'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Conflict'    Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'410'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Gone'        Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'411'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Length Required' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'412'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Precondition Failed' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'413'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Request Entity Too Large' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'414'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Request-URI Too Large' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'415'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Unsupported Media Type' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'416'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Requested range not satisfiable' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'417'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Expectation Failed' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'500'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Internal Server Error' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'501'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Not Implemented' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'502'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Bad Gateway' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'503'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Service Unavailable' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'504'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'Gateway Time-out' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'status'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'505'         Literal.Number.Integer
'\n            ' Text.Whitespace
'"'           Literal.String.Double
'HTTP Version not supported' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'else'        Keyword
'\n            ' Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
'Unknown Statuscode. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html' Literal.String.Double
'#'           Literal.String.Double
'sec6.1 for more information.' Literal.String.Double
'"'           Literal.String.Double
'\n        '  Text.Whitespace
'end'         Keyword
'\n        '  Text.Whitespace
'# }}}'       Comment.Single
'\n    '      Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'class'       Keyword
' '           Text.Whitespace
'Cookie'      Name.Class
'\n\t'        Text.Whitespace
'attr_reader' Keyword.Pseudo
' '           Text.Whitespace
':name'       Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
':value'      Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
':maxage'     Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
':path'       Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
':domain'     Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
':secure'     Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
':comment'    Literal.String.Symbol
'\n\n\t'      Text.Whitespace
'# Sets a cookie. Please see below for details of the attributes.' Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
' '           Text.Whitespace
'('           Punctuation
'name'        Name.Builtin
','           Punctuation
' '           Text.Whitespace
'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
','           Punctuation
' '           Text.Whitespace
'maxage'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
','           Punctuation
' '           Text.Whitespace
'path'        Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
','           Punctuation
' '           Text.Whitespace
'domain'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
','           Punctuation
' '           Text.Whitespace
'secure'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
')'           Punctuation
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'# HTTP headers (Cookies are a HTTP header) can only set, while no content' Comment.Single
'\n\t\t'      Text.Whitespace
'# is send. So an exception will be raised, when @@allowed is set to false' Comment.Single
'\n\t\t'      Text.Whitespace
'# and a new cookie has set.' Comment.Single
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'defined?'    Name
'('           Punctuation
'@@allowed'   Name.Variable.Class
')'           Punctuation
'\n\t\t\t'    Text.Whitespace
'@@allowed'   Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@@allowed'   Name.Variable.Class
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
"You can't set cookies after the HTTP headers are send." Literal.String.Double
'"'           Literal.String.Double
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\n\t\t'    Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'defined?'    Name
'('           Punctuation
'@@list'      Name.Variable.Class
')'           Punctuation
'\n\t\t\t'    Text.Whitespace
'@@list'      Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'@@list'      Name.Variable.Class
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'['           Operator
'self'        Name.Builtin
']'           Operator
'\n\n\t\t'    Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'defined?'    Name
'('           Punctuation
'@@type'      Name.Variable.Class
')'           Punctuation
'\n\t\t\t'    Text.Whitespace
'@@type'      Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'netscape'    Literal.String.Double
'"'           Literal.String.Double
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\n\t\t'    Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'name'        Name.Builtin
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'String'      Name.Builtin
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The name of a cookie must be a string' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'value'       Name
'.'           Operator
'class'       Name
'.'           Operator
'superclass'  Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Integer'     Name.Builtin
' '           Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'value'       Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Float'       Name.Builtin
'\n\t\t\t'    Text.Whitespace
'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'value'       Name
'.'           Operator
'to_s'        Name
'\n\t\t'      Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'value'       Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'!='          Operator
' '           Text.Whitespace
'String'      Name.Builtin
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'value'       Name
' '           Text.Whitespace
'!='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The value of a cookie must be a string, integer, float or nil' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'maxage'      Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Time'        Name.Constant
'\n\t\t\t'    Text.Whitespace
'maxage'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'maxage'      Name
' '           Text.Whitespace
'-'           Operator
' '           Text.Whitespace
'Time'        Name.Constant
'.'           Operator
'now'         Name
'\n\t\t'      Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'!'           Operator
'maxage'      Name
'.'           Operator
'class'       Name
'.'           Operator
'superclass'  Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Integer'     Name.Builtin
'  '          Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'!'           Operator
'maxage'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The maxage date of a cookie must be an Integer or Time object or nil.' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'path'        Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'String'      Name.Builtin
'  '          Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'path'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The path of a cookie must be nil or a string' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'domain'      Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'String'      Name.Builtin
'  '          Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'domain'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The value of a cookie must be nil or a string' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'secure'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'  '          Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'secure'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The secure field of a cookie must be true or false' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\n\t\t'    Text.Whitespace
'@name'       Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@value'      Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@maxage'     Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@path'       Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@domain'     Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@secure'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'name'        Name.Builtin
','           Punctuation
' '           Text.Whitespace
'value'       Name
','           Punctuation
' '           Text.Whitespace
'maxage'      Name
','           Punctuation
' '           Text.Whitespace
'path'        Name
','           Punctuation
' '           Text.Whitespace
'domain'      Name
','           Punctuation
' '           Text.Whitespace
'secure'      Name
'\n\t\t'      Text.Whitespace
'@comment'    Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
'# Modifies the value of this cookie. The information you want to store. If the' Comment.Single
'\n\t'        Text.Whitespace
'# value is nil, the cookie will be deleted by the client.' Comment.Single
'\n\t'        Text.Whitespace
'#'           Comment.Single
'\n\t'        Text.Whitespace
'# This attribute can be a String, Integer or Float object or nil.' Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'value='      Name.Function
'('           Punctuation
'value'       Name
')'           Punctuation
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'value'       Name
'.'           Operator
'class'       Name
'.'           Operator
'superclass'  Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Integer'     Name.Builtin
' '           Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'value'       Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Float'       Name.Builtin
'\n\t\t\t'    Text.Whitespace
'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'value'       Name
'.'           Operator
'to_s'        Name
'\n\t\t'      Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'value'       Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'!='          Operator
' '           Text.Whitespace
'String'      Name.Builtin
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'value'       Name
' '           Text.Whitespace
'!='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The value of a cookie must be a string, integer, float or nil' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'@value'      Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'value'       Name
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
'# Modifies the maxage of this cookie. This attribute defines the lifetime of' Comment.Single
'\n\t'        Text.Whitespace
'# the cookie, in seconds. A value of 0 means the cookie should be discarded' Comment.Single
'\n\t'        Text.Whitespace
'# imediatly. If it set to nil, the cookie will be deleted when the browser' Comment.Single
'\n\t'        Text.Whitespace
'# will be closed.' Comment.Single
'\n\t'        Text.Whitespace
'#'           Comment.Single
'\n\t'        Text.Whitespace
'# Attention: This is different from other implementations like PHP, where you' Comment.Single
'\n\t'        Text.Whitespace
'# gives the seconds since 1/1/1970 0:00:00 GMT.' Comment.Single
'\n\t'        Text.Whitespace
'#'           Comment.Single
'\n\t'        Text.Whitespace
'# This attribute must be an Integer or Time object or nil.' Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'maxage='     Name.Function
'('           Punctuation
'maxage'      Name
')'           Punctuation
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'maxage'      Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Time'        Name.Constant
'\n\t\t\t'    Text.Whitespace
'maxage'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'maxage'      Name
' '           Text.Whitespace
'-'           Operator
' '           Text.Whitespace
'Time'        Name.Constant
'.'           Operator
'now'         Name
'\n\t\t'      Text.Whitespace
'elsif'       Keyword
' '           Text.Whitespace
'maxage'      Name
'.'           Operator
'class'       Name
'.'           Operator
'superclass'  Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'Integer'     Name.Builtin
'  '          Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'!'           Operator
'maxage'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The maxage of a cookie must be an Interger or Time object or nil.' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'@maxage'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'maxage'      Name
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
'# Modifies the path value of this cookie. The client will send this cookie' Comment.Single
'\n\t'        Text.Whitespace
'# only, if the requested document is this directory or a subdirectory of it.' Comment.Single
'\n\t'        Text.Whitespace
'#'           Comment.Single
'\n\t'        Text.Whitespace
'# The value of the attribute must be a String object or nil.' Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'path='       Name.Function
'('           Punctuation
'path'        Name
')'           Punctuation
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'path'        Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'String'      Name.Builtin
'  '          Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'path'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The path of a cookie must be nil or a string' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'@path'       Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'path'        Name
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
'# Modifies the domain value of this cookie. The client will send this cookie' Comment.Single
'\n\t'        Text.Whitespace
"# only if it's connected with this domain (or a subdomain, if the first" Comment.Single
'\n\t'        Text.Whitespace
'# character is a dot like in ".ruby-lang.org")' Comment.Single
'\n\t'        Text.Whitespace
'#'           Comment.Single
'\n\t'        Text.Whitespace
'# The value of this attribute must be a String or nil.' Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'domain='     Name.Function
'('           Punctuation
'domain'      Name
')'           Punctuation
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'domain'      Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'String'      Name.Builtin
'  '          Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'domain'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The domain of a cookie must be a String or nil.' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'@domain'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'domain'      Name
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
"# Modifies the secure flag of this cookie. If it's true, the client will only" Comment.Single
'\n\t'        Text.Whitespace
'# send this cookie if it is secured connected with us.' Comment.Single
'\n\t'        Text.Whitespace
'#'           Comment.Single
'\n\t'        Text.Whitespace
'# The value od this attribute has to be true or false.' Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'secure='     Name.Function
'('           Punctuation
'secure'      Name
')'           Punctuation
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'secure'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'  '          Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'secure'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The secure field of a cookie must be true or false' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'@secure'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'secure'      Name
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
"# Modifies the comment value of this cookie. The comment won't be send, if" Comment.Single
'\n\t'        Text.Whitespace
'# type is "netscape".' Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'comment='    Name.Function
'('           Punctuation
'comment'     Name
')'           Punctuation
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'comment'     Name
'.'           Operator
'class'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'String'      Name.Builtin
' '           Text.Whitespace
'||'          Operator
' '           Text.Whitespace
'comment'     Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'TypeError'   Name.Constant
','           Punctuation
' '           Text.Whitespace
'"'           Literal.String.Double
'The comment of a cookie must be a string or nil' Literal.String.Double
'"'           Literal.String.Double
','           Punctuation
' '           Text.Whitespace
'caller'      Name.Builtin
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'@comment'    Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'comment'     Name
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
'# Changes the type of all cookies.' Comment.Single
'\n\t'        Text.Whitespace
'# Allowed values are RFC2109 and netscape (default).' Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'Cookie'      Name.Class
'.'           Operator
'type='       Name.Function
'('           Punctuation
'type'        Name
')'           Punctuation
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'@@allowed'   Name.Variable.Class
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
"The cookies are allready send, so you can't change the type anymore." Literal.String.Double
'"'           Literal.String.Double
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'type'        Name
'.'           Operator
'downcase'    Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'rfc2109'     Literal.String.Double
'"'           Literal.String.Double
' '           Text.Whitespace
'&&'          Operator
' '           Text.Whitespace
'type'        Name
'.'           Operator
'downcase'    Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'netscape'    Literal.String.Double
'"'           Literal.String.Double
'\n\t\t\t'    Text.Whitespace
'raise'       Keyword
' '           Text.Whitespace
'"'           Literal.String.Double
'The type of the cookies must be ' Literal.String.Double
'\\"'         Literal.String.Escape
'RFC2109'     Literal.String.Double
'\\"'         Literal.String.Escape
' or '        Literal.String.Double
'\\"'         Literal.String.Escape
'netscape'    Literal.String.Double
'\\"'         Literal.String.Escape
'.'           Literal.String.Double
'"'           Literal.String.Double
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'@@type'      Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'type'        Name
';'           Punctuation
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
'# After sending this message, no cookies can be set or modified. Use it, when' Comment.Single
'\n\t'        Text.Whitespace
'# HTTP-Headers are send. Rweb does this for you.' Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'Cookie'      Name.Class
'.'           Operator
'disallow'    Name.Function
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'@@allowed'   Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
'\n\t\t'      Text.Whitespace
'true'        Keyword.Pseudo
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n\n\t'      Text.Whitespace
'# Returns a HTTP header (type String) with all cookies. Rweb does this for' Comment.Single
'\n\t'        Text.Whitespace
'# you.'      Comment.Single
'\n\t'        Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'Cookie'      Name.Class
'.'           Operator
'getHttpHeader' Name.Function
'\n\t\t'      Text.Whitespace
'# {{{'       Comment.Single
'\n\t\t'      Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'defined?'    Name
'('           Punctuation
'@@list'      Name.Variable.Class
')'           Punctuation
'\n\t\t\t'    Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'@@type'      Name.Variable.Class
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'netscape'    Literal.String.Double
'"'           Literal.String.Double
'\n\t\t\t\t'  Text.Whitespace
'str'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
'\n\t\t\t\t'  Text.Whitespace
'@@list'      Name.Variable.Class
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'cookie'      Name
'|'           Operator
'\n\t\t\t\t\t' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'value'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t\t\t\t' Text.Whitespace
'cookie'      Name
'.'           Operator
'maxage'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n\t\t\t\t\t\t' Text.Whitespace
'cookie'      Name
'.'           Operator
'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'# TODO: Name and value should be escaped!' Comment.Single
'\n\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'Set-Cookie: ' Literal.String.Double
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'name'        Name
'}'           Literal.String.Interpol
'='           Literal.String.Double
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'value'       Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'maxage'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t\t\t\t' Text.Whitespace
'expire'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Time'        Name.Constant
'.'           Operator
'now'         Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'maxage'      Name
'\n\t\t\t\t\t\t' Text.Whitespace
'expire'      Name
'.'           Operator
'gmtime'      Name
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Expire='   Literal.String.Double
'#{'          Literal.String.Interpol
'expire'      Name
'.'           Operator
'strftime'    Name
'('           Punctuation
'"'           Literal.String.Double
'%a, %d-%b-%Y %H:%M:%S %Z' Literal.String.Double
'"'           Literal.String.Double
')'           Punctuation
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'domain'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Domain='   Literal.String.Double
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'domain'      Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'path'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Path='     Literal.String.Double
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'path'        Name
'}'           Literal.String.Interpol
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'secure'      Name
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Secure'    Literal.String.Double
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'\\r'         Literal.String.Escape
'\\n'         Literal.String.Escape
'"'           Literal.String.Double
'\n\t\t\t\t'  Text.Whitespace
'end'         Keyword
'\n\t\t\t\t'  Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'str'         Name
'\n\t\t\t'    Text.Whitespace
'else'        Keyword
' '           Text.Whitespace
'# type == "RFC2109"' Comment.Single
'\n\t\t\t\t'  Text.Whitespace
'str'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'Set-Cookie: ' Literal.String.Double
'"'           Literal.String.Double
'\n\t\t\t\t'  Text.Whitespace
'comma'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'false'       Keyword.Pseudo
';'           Punctuation
'\n\n\t\t\t\t' Text.Whitespace
'@@list'      Name.Variable.Class
'.'           Operator
'each'        Name
' '           Text.Whitespace
'do'          Keyword
' '           Text.Whitespace
'|'           Operator
'cookie'      Name
'|'           Operator
'\n\t\t\t\t\t' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'value'       Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t\t\t\t' Text.Whitespace
'cookie'      Name
'.'           Operator
'maxage'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'0'           Literal.Number.Integer
'\n\t\t\t\t\t\t' Text.Whitespace
'cookie'      Name
'.'           Operator
'value'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'comma'       Name
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
','           Literal.String.Double
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'comma'       Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n\n\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'name'        Name
'}'           Literal.String.Interpol
'='           Literal.String.Double
'\\"'         Literal.String.Escape
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'value'       Name
'}'           Literal.String.Interpol
'\\"'         Literal.String.Escape
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'maxage'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Max-Age='  Literal.String.Double
'\\"'         Literal.String.Escape
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'maxage'      Name
'}'           Literal.String.Interpol
'\\"'         Literal.String.Escape
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'domain'      Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Domain='   Literal.String.Double
'\\"'         Literal.String.Escape
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'domain'      Name
'}'           Literal.String.Interpol
'\\"'         Literal.String.Escape
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'path'        Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Path='     Literal.String.Double
'\\"'         Literal.String.Escape
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'path'        Name
'}'           Literal.String.Interpol
'\\"'         Literal.String.Escape
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'secure'      Name
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Secure'    Literal.String.Double
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'unless'      Keyword
' '           Text.Whitespace
'cookie'      Name
'.'           Operator
'comment'     Name
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'nil'         Keyword.Pseudo
'\n\t\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Comment='  Literal.String.Double
'\\"'         Literal.String.Escape
'#{'          Literal.String.Interpol
'cookie'      Name
'.'           Operator
'comment'     Name
'}'           Literal.String.Interpol
'\\"'         Literal.String.Escape
'"'           Literal.String.Double
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t\t' Text.Whitespace
'str'         Name
' '           Text.Whitespace
'+='          Operator
' '           Text.Whitespace
'"'           Literal.String.Double
'; Version='  Literal.String.Double
'\\"'         Literal.String.Escape
'1'           Literal.String.Double
'\\"'         Literal.String.Escape
'"'           Literal.String.Double
'\n\t\t\t\t'  Text.Whitespace
'end'         Keyword
'\n\t\t\t\t'  Text.Whitespace
'str'         Name
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'else'        Keyword
'\n\t\t\t'    Text.Whitespace
'false'       Keyword.Pseudo
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'# }}}'       Comment.Single
'\n\t'        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace

'end'         Keyword
'\n\n'        Text.Whitespace

'require'     Name.Builtin
' '           Text.Whitespace
"'"           Literal.String.Single
'strscan'     Literal.String.Single
"'"           Literal.String.Single
'\n\n'        Text.Whitespace

'module'      Keyword
' '           Text.Whitespace
'BBCode'      Name.Namespace
'\n\t'        Text.Whitespace
'DEBUG'       Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'true'        Keyword.Pseudo
'\n\n\t'      Text.Whitespace
'use'         Name
' '           Text.Whitespace
"'"           Literal.String.Single
'encoder'     Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'tags'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'tagstack'    Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'smileys'     Literal.String.Single
"'"           Literal.String.Single
'\n\n'        Text.Whitespace

'=begin\n\tThe Parser class takes care of the encoding.\n\tIt scans the given BBCode (as plain text), finds tags\n\tand smilies and also makes links of urls in text.\n\n\tNormal text is send directly to the encoder.\n\n\tIf a tag was found, an instance of a Tag subclass is created\n\tto handle the case.\n\n\tThe @tagstack manages tag nesting and ensures valid HTML.\n=end' Comment.Multiline
'\n\n\t'      Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Parser'      Name.Class
'\n\t\t'      Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Attribute'   Name.Class
'\n\t\t\t'    Text.Whitespace
'# flatten and use only one empty_arg' Comment.Single
'\n\t\t\t'    Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'create'      Name.Function
' '           Text.Whitespace
'attr'        Keyword.Pseudo
'\n\t\t\t\t'  Text.Whitespace
'attr'        Keyword.Pseudo
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'flatten'     Name
' '           Text.Whitespace
'attr'        Keyword.Pseudo
'\n\t\t\t\t'  Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'@@empty_attr' Name.Variable.Class
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'attr'        Keyword.Pseudo
'.'           Operator
'empty?'      Name
'\n\t\t\t\t'  Text.Whitespace
'new'         Keyword.Pseudo
' '           Text.Whitespace
'attr'        Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'private_class_method' Name.Builtin
' '           Text.Whitespace
':new'        Literal.String.Symbol
'\n\n\t\t\t'  Text.Whitespace
'# remove leading and trailing whitespace; concat lines' Comment.Single
'\n\t\t\t'    Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'flatten'     Name.Function
' '           Text.Whitespace
'attr'        Keyword.Pseudo
'\n\t\t\t\t'  Text.Whitespace
'attr'        Keyword.Pseudo
'.'           Operator
'strip'       Name
'.'           Operator
'gsub'        Name
'('           Punctuation
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
'n'           Literal.String.Regex
'/'           Literal.String.Regex
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
' '           Literal.String.Single
"'"           Literal.String.Single
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'# -> ^ and $ can only match at begin and end now' Comment.Single
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'ATTRIBUTE_SCAN' Name.Constant
' '           Text.Whitespace
'='           Operator
' '           Text
'/'           Literal.String.Regex
'\n\t\t\t\t(?!$)  ' Literal.String.Regex
'#'           Literal.String.Regex
" don't match at end\n\t\t\t\t" Literal.String.Regex
'\\'          Literal.String.Regex
's*\n\t\t\t\t( ' Literal.String.Regex
'#'           Literal.String.Regex
' $1 = key\n\t\t\t\t\t[^=' Literal.String.Regex
'\\'          Literal.String.Regex
's'           Literal.String.Regex
'\\'          Literal.String.Regex
']"'          Literal.String.Regex
'\\\\'        Literal.String.Regex
']*\n\t\t\t\t\t(?:\n\t\t\t\t\t\t(?: ' Literal.String.Regex
'\\\\'        Literal.String.Regex
'. | "[^"'    Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:'       Literal.String.Regex
'\\\\'        Literal.String.Regex
'.[^"'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*"? )\n\t\t\t\t\t\t[^=' Literal.String.Regex
'\\'          Literal.String.Regex
's'           Literal.String.Regex
'\\'          Literal.String.Regex
']"'          Literal.String.Regex
'\\\\'        Literal.String.Regex
']*\n\t\t\t\t\t)*\n\t\t\t\t)\n\t\t\t\t(?:\n\t\t\t\t\t=\n\t\t\t\t\t( ' Literal.String.Regex
'#'           Literal.String.Regex
' $2 = value\n\t\t\t\t\t\t[^' Literal.String.Regex
'\\'          Literal.String.Regex
's'           Literal.String.Regex
'\\'          Literal.String.Regex
']"'          Literal.String.Regex
'\\\\'        Literal.String.Regex
']*\n\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t(?: ' Literal.String.Regex
'\\\\'        Literal.String.Regex
'. | "[^"'    Literal.String.Regex
'\\\\'        Literal.String.Regex
']*(?:'       Literal.String.Regex
'\\\\'        Literal.String.Regex
'.[^"'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)*"? )\n\t\t\t\t\t\t\t[^' Literal.String.Regex
'\\'          Literal.String.Regex
's'           Literal.String.Regex
'\\'          Literal.String.Regex
']"'          Literal.String.Regex
'\\\\'        Literal.String.Regex
']*\n\t\t\t\t\t\t)*\n\t\t\t\t\t)?\n\t\t\t\t)?\n\t\t\t\t' Literal.String.Regex
'\\'          Literal.String.Regex
's*\n\t\t\t'  Literal.String.Regex
'/x'          Literal.String.Regex
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'parse'       Name.Function
' '           Text.Whitespace
'source'      Name
'\n\t\t\t\t'  Text.Whitespace
'source'      Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'source'      Name
'.'           Operator
'dup'         Name
'\n\t\t\t\t'  Text.Whitespace
'# empty_tag: the tag looks like [... /]' Comment.Single
'\n\t\t\t\t'  Text.Whitespace
'# slice!: this deletes the \\s*/] at the end' Comment.Single
'\n\t\t\t\t'  Text.Whitespace
'# \\s+ because [url=http://rubybb.org/forum/] is NOT an empty tag.' Comment.Single
'\n\t\t\t\t'  Text.Whitespace
'# In RubyBBCode, you can use [url=http://rubybb.org/forum/ /], and this has to be' Comment.Single
'\n\t\t\t\t'  Text.Whitespace
'# interpreted correctly.' Comment.Single
'\n\t\t\t\t'  Text.Whitespace
'empty_tag'   Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'source'      Name
'.'           Operator
'sub!'        Name
'('           Punctuation
'/'           Literal.String.Regex
'^:'          Literal.String.Regex
'/'           Literal.String.Regex
','           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
'='           Literal.String.Single
"'"           Literal.String.Single
')'           Punctuation
' '           Text.Whitespace
'or'          Operator.Word
' '           Text.Whitespace
'source'      Name
'.'           Operator
'slice!'      Name
'('           Punctuation
'/'           Literal.String.Regex
'\\/'         Literal.String.Regex
'$'           Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'debug'       Name
' '           Text.Whitespace
"'"           Literal.String.Single
'PARSE: '     Literal.String.Single
"'"           Literal.String.Single
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'source'      Name
'.'           Operator
'inspect'     Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
"'"           Literal.String.Single
' => '        Literal.String.Single
"'"           Literal.String.Single
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'empty_tag'   Name
'.'           Operator
'inspect'     Name
'\n\t\t\t\t'  Text.Whitespace
"#-> we have now an attr that's EITHER empty OR begins and ends with non-whitespace." Comment.Single
'\n\n\t\t\t\t' Text.Whitespace
'attr'        Keyword.Pseudo
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Hash'        Name.Constant
'.'           Operator
'new'         Name
'\n\t\t\t\t'  Text.Whitespace
'attr'        Keyword.Pseudo
'['           Operator
':flags'      Literal.String.Symbol
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'['           Operator
']'           Operator
'\n\t\t\t\t'  Text.Whitespace
'source'      Name
'.'           Operator
'scan'        Name
'('           Punctuation
'ATTRIBUTE_SCAN' Name.Constant
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'key'         Name
','           Punctuation
' '           Text.Whitespace
'value'       Name
'|'           Operator
'\n\t\t\t\t\t' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'not'         Operator.Word
' '           Text.Whitespace
'value'       Name
'\n\t\t\t\t\t\t' Text.Whitespace
'attr'        Keyword.Pseudo
'['           Operator
':flags'      Literal.String.Symbol
']'           Operator
' '           Text.Whitespace
'<<'          Operator
' '           Text.Whitespace
'unescape'    Name
'('           Punctuation
'key'         Name
')'           Punctuation
'\n\t\t\t\t\t' Text.Whitespace
'else'        Keyword
'\n\t\t\t\t\t\t' Text.Whitespace
'next'        Keyword
' '           Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'value'       Name
'.'           Operator
'empty?'      Name
' '           Text.Whitespace
'and'         Operator.Word
' '           Text.Whitespace
'key'         Name
'.'           Operator
'empty?'      Name
'\n\t\t\t\t\t\t' Text.Whitespace
'attr'        Keyword.Pseudo
'['           Operator
'unescape'    Name
'('           Punctuation
'key'         Name
')'           Punctuation
']'           Operator
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'unescape'    Name
'('           Punctuation
'value'       Name
')'           Punctuation
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t'  Text.Whitespace
'}'           Punctuation
'\n\t\t\t\t'  Text.Whitespace
'debug'       Name
' '           Text.Whitespace
'attr'        Keyword.Pseudo
'.'           Operator
'inspect'     Name
'\n\n\t\t\t\t' Text.Whitespace
'return'      Keyword
' '           Text.Whitespace
'empty_tag'   Name
','           Punctuation
' '           Text.Whitespace
'attr'        Keyword.Pseudo
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'unescape_char' Name.Function
' '           Text.Whitespace
'esc'         Name
'\n\t\t\t\t'  Text.Whitespace
'esc'         Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'unquote'     Name.Function
' '           Text.Whitespace
'qt'          Name
'\n\t\t\t\t'  Text.Whitespace
'qt'          Name
'['           Operator
'1'           Literal.Number.Integer
'..'          Operator
'-'           Operator
'1'           Literal.Number.Integer
']'           Operator
'.'           Operator
'chomp'       Name
'('           Punctuation
"'"           Literal.String.Single
'"'           Literal.String.Single
"'"           Literal.String.Single
')'           Punctuation
'.'           Operator
'gsub'        Name
'('           Punctuation
'/'           Literal.String.Regex
'\\\\'        Literal.String.Regex
'.'           Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
' '           Text.Whitespace
'|'           Operator
'esc'         Name
'|'           Operator
' '           Text.Whitespace
'unescape_char' Name
' '           Text.Whitespace
'esc'         Name
' '           Text.Whitespace
'}'           Punctuation
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'self'        Name.Class
'.'           Operator
'unescape'    Name.Function
' '           Text.Whitespace
'str'         Name
'\n\t\t\t\t'  Text.Whitespace
'str'         Name
'.'           Operator
'gsub'        Name
'('           Punctuation
'/'           Literal.String.Regex
' ('          Literal.String.Regex
'\\\\'        Literal.String.Regex
'.) | (" [^"' Literal.String.Regex
'\\\\'        Literal.String.Regex
']* (?:'      Literal.String.Regex
'\\\\'        Literal.String.Regex
'.[^"'        Literal.String.Regex
'\\\\'        Literal.String.Regex
']*)* "?) '   Literal.String.Regex
'/x'          Literal.String.Regex
')'           Punctuation
' '           Text.Whitespace
'{'           Punctuation
'\n\t\t\t\t\t' Text.Whitespace
'if'          Keyword
' '           Text.Whitespace
'$1'          Name.Variable.Global
'\n\t\t\t\t\t\t' Text.Whitespace
'unescape_char' Name
' '           Text.Whitespace
'$1'          Name.Variable.Global
'\n\t\t\t\t\t' Text.Whitespace
'else'        Keyword
'\n\t\t\t\t\t\t' Text.Whitespace
'unquote'     Name
' '           Text.Whitespace
'$2'          Name.Variable.Global
'\n\t\t\t\t\t' Text.Whitespace
'end'         Keyword
'\n\t\t\t\t'  Text.Whitespace
'}'           Punctuation
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'include'     Keyword.Pseudo
' '           Text.Whitespace
'Enumerable'  Name.Constant
'\n\t\t\t'    Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'each'        Name.Function
' '           Text.Whitespace
'&'           Operator
'block'       Name
'\n\t\t\t\t'  Text.Whitespace
'@args'       Name.Variable.Instance
'.'           Operator
'each'        Name
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'attr_reader' Keyword.Pseudo
' '           Text.Whitespace
':source'     Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
':args'       Literal.String.Symbol
','           Punctuation
' '           Text.Whitespace
':value'      Literal.String.Symbol
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'initialize'  Name.Function
' '           Text.Whitespace
'source'      Name
'\n\t\t\t\t'  Text.Whitespace
'@source'     Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'source'      Name
'\n\t\t\t\t'  Text.Whitespace
'debug'       Name
' '           Text.Whitespace
"'"           Literal.String.Single
'Attribute'   Literal.String.Single
'#'           Literal.String.Single
'new(%p)'     Literal.String.Single
"'"           Literal.String.Single
' '           Text.Whitespace
'%'           Operator
' '           Text.Whitespace
'source'      Name
'\n\t\t\t\t'  Text.Whitespace
'@empty_tag'  Name.Variable.Instance
','           Punctuation
' '           Text.Whitespace
'@attr'       Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'Attribute'   Name.Constant
'.'           Operator
'parse'       Name
' '           Text.Whitespace
'source'      Name
'\n\t\t\t\t'  Text.Whitespace
'@value'      Name.Variable.Instance
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@attr'       Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'.'           Operator
'to_s'        Name
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'empty?'      Name.Function
'\n\t\t\t\t'  Text.Whitespace
'self'        Name.Builtin
' '           Text.Whitespace
'=='          Operator
' '           Text.Whitespace
'@@empty_attr' Name.Variable.Class
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'empty_tag?'  Name.Function
'\n\t\t\t\t'  Text.Whitespace
'@empty_tag'  Name.Variable.Instance
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'[]'          Name.Function
' '           Text.Whitespace
'*'           Operator
'keys'        Name
'\n\t\t\t\t'  Text.Whitespace
'res'         Name
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'@attr'       Name.Variable.Instance
'['           Operator
'*'           Operator
'keys'        Name
']'           Operator
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'flags'       Name.Function
'\n\t\t\t\t'  Text.Whitespace
'attr'        Keyword.Pseudo
'['           Operator
':flags'      Literal.String.Symbol
']'           Operator
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'to_s'        Name.Function
'\n\t\t\t\t'  Text.Whitespace
'@attr'       Name.Variable.Instance
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\n\t\t\t'  Text.Whitespace
'def'         Keyword
' '           Text.Whitespace
'inspect'     Name.Function
'\n\t\t\t\t'  Text.Whitespace
"'"           Literal.String.Single
'ATTR['       Literal.String.Single
"'"           Literal.String.Single
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'@attr'       Name.Variable.Instance
'.'           Operator
'inspect'     Name
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
'('           Punctuation
'@empty_tag'  Name.Variable.Instance
' '           Text.Whitespace
'?'           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
' | empty tag' Literal.String.Single
"'"           Literal.String.Single
' '           Text.Whitespace
':'           Punctuation
' '           Text.Whitespace
"'"           Literal.String.Single
"'"           Literal.String.Single
')'           Punctuation
' '           Text.Whitespace
'+'           Operator
' '           Text.Whitespace
"'"           Literal.String.Single
']'           Literal.String.Single
"'"           Literal.String.Single
'\n\t\t\t'    Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t\t'      Text.Whitespace
'class'       Keyword
' '           Text.Whitespace
'Attribute'   Name.Class
'\n\t\t\t'    Text.Whitespace
'@@empty_attr' Name.Variable.Class
' '           Text.Whitespace
'='           Operator
' '           Text.Whitespace
'new'         Keyword.Pseudo
' '           Text.Whitespace
"'"           Literal.String.Single
"'"           Literal.String.Single
'\n\t\t'      Text.Whitespace
'end'         Keyword
'\n\t'        Text.Whitespace
'end'         Keyword
'\n'          Text.Whitespace
