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

'class'       Keyword
' '           Text
'Ruby'        Name.Class
' '           Text
'<'           Operator
' '           Text
'Scanner'     Name.Constant
'\n\n\t'      Text
'RESERVED_WORDS' Name.Constant
' '           Text
'='           Operator
' '           Text
'['           Operator
'\n\t\t'      Text
"'"           Literal.String.Single
'and'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'def'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'end'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'in'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'or'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'unless'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'begin'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text
"'"           Literal.String.Single
'defined?'    Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'ensure'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'module'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'redo'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'super'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'until'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text
"'"           Literal.String.Single
'BEGIN'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'break'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'do'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'next'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'rescue'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'then'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text
"'"           Literal.String.Single
'when'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'END'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'case'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'else'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'for'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'retry'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text
"'"           Literal.String.Single
'while'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'alias'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'class'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'elsif'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'if'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'not'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'return'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text
"'"           Literal.String.Single
'undef'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'yield'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t'        Text
']'           Operator
'\n\n\t'      Text
'DEF_KEYWORDS' Name.Constant
' '           Text
'='           Operator
' '           Text
'['           Operator
"'"           Literal.String.Single
'def'         Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'\n\t'        Text
'MODULE_KEYWORDS' Name.Constant
' '           Text
'='           Operator
' '           Text
'['           Operator
"'"           Literal.String.Single
'class'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'module'      Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'\n\t'        Text
'DEF_NEW_STATE' Name.Constant
' '           Text
'='           Operator
' '           Text
'WordList'    Name.Constant
'.'           Operator
'new'         Name
'('           Punctuation
':initial'    Literal.String.Symbol
')'           Punctuation
'.'           Operator
'\n\t\t'      Text
'add'         Name
'('           Punctuation
'DEF_KEYWORDS' Name.Constant
','           Punctuation
' '           Text
':def_expected' Literal.String.Symbol
')'           Punctuation
'.'           Operator
'\n\t\t'      Text
'add'         Name
'('           Punctuation
'MODULE_KEYWORDS' Name.Constant
','           Punctuation
' '           Text
':module_expected' Literal.String.Symbol
')'           Punctuation
'\n\n\t'      Text
'WORDS_ALLOWING_REGEXP' Name.Constant
' '           Text
'='           Operator
' '           Text
'['           Operator
'\n\t\t'      Text
"'"           Literal.String.Single
'and'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'or'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'not'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'while'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'until'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'unless'      Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'if'          Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'elsif'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'when'        Literal.String.Single
"'"           Literal.String.Single
'\n\t'        Text
']'           Operator
'\n\t'        Text
'REGEXP_ALLOWED' Name.Constant
' '           Text
'='           Operator
' '           Text
'WordList'    Name.Constant
'.'           Operator
'new'         Name
'('           Punctuation
'false'       Keyword.Pseudo
')'           Punctuation
'.'           Operator
'\n\t\t'      Text
'add'         Name
'('           Punctuation
'WORDS_ALLOWING_REGEXP' Name.Constant
','           Punctuation
' '           Text
':set'        Literal.String.Symbol
')'           Punctuation
'\n\n\t'      Text
'PREDEFINED_CONSTANTS' Name.Constant
' '           Text
'='           Operator
' '           Text
'['           Operator
'\n\t\t'      Text
"'"           Literal.String.Single
'nil'         Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'true'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'false'       Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'self'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t\t'      Text
"'"           Literal.String.Single
'DATA'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'ARGV'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'ARGF'        Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'__FILE__'    Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
' '           Text
"'"           Literal.String.Single
'__LINE__'    Literal.String.Single
"'"           Literal.String.Single
','           Punctuation
'\n\t'        Text
']'           Operator
'\n\n\t'      Text
'IDENT_KIND'  Name.Constant
' '           Text
'='           Operator
' '           Text
'WordList'    Name.Constant
'.'           Operator
'new'         Name
'('           Punctuation
':ident'      Literal.String.Symbol
')'           Punctuation
'.'           Operator
'\n\t\t'      Text
'add'         Name
'('           Punctuation
'RESERVED_WORDS' Name.Constant
','           Punctuation
' '           Text
':reserved'   Literal.String.Symbol
')'           Punctuation
'.'           Operator
'\n\t\t'      Text
'add'         Name
'('           Punctuation
'PREDEFINED_CONSTANTS' Name.Constant
','           Punctuation
' '           Text
':pre_constant' Literal.String.Symbol
')'           Punctuation
'\n\n\t'      Text
'METHOD_NAME' Name.Constant
' '           Text
'='           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
'METHOD_NAME_EX' Name.Constant
' '           Text
'='           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
'GLOBAL_VARIABLE' Name.Constant
' '           Text
'='           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
'DOUBLEQ'     Name.Constant
' '           Text
'='           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
'SINGLEQ'     Name.Constant
' '           Text
'='           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
'STRING'      Name.Constant
'  '          Text
'='           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
'SHELL'       Name.Constant
'   '         Text
'='           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
'REGEXP'      Name.Constant
'  '          Text
'='           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
'DECIMAL'     Name.Constant
' '           Text
'='           Operator
' '           Text
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
'd+(?:_'      Literal.String.Regex
'\\'          Literal.String.Regex
'd+)*'        Literal.String.Regex
'/'           Literal.String.Regex
'  '          Text
"# doesn't recognize 09 as octal error" Comment.Single
'\n\t'        Text
'OCTAL'       Name.Constant
' '           Text
'='           Operator
' '           Text
'/'           Literal.String.Regex
'0_?[0-7]+(?:_[0-7]+)*' Literal.String.Regex
'/'           Literal.String.Regex
'\n\t'        Text
'HEXADECIMAL' Name.Constant
' '           Text
'='           Operator
' '           Text
'/'           Literal.String.Regex
'0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*' Literal.String.Regex
'/'           Literal.String.Regex
'\n\t'        Text
'BINARY'      Name.Constant
' '           Text
'='           Operator
' '           Text
'/'           Literal.String.Regex
'0b[01]+(?:_[01]+)*' Literal.String.Regex
'/'           Literal.String.Regex
'\n\n\t'      Text
'EXPONENT'    Name.Constant
' '           Text
'='           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
'FLOAT'       Name.Constant
' '           Text
'='           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
'INTEGER'     Name.Constant
' '           Text
'='           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
'def'         Keyword
' '           Text
'reset'       Name.Function
'\n\t\t'      Text
'super'       Keyword
'\n\t\t'      Text
'@regexp_allowed' Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
'false'       Keyword.Pseudo
'\n\t'        Text
'end'         Keyword
'\n\n\t'      Text
'def'         Keyword
' '           Text
'next_token'  Name.Function
'\n\t\t'      Text
'return'      Keyword
' '           Text
'if'          Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'eos?'        Name
'\n\n\t\t'    Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':error'      Literal.String.Symbol
'\n\t\t'      Text
'if'          Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'\\'          Literal.String.Regex
's+'          Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'  '          Text
'# in every state' Comment.Single
'\n\t\t\t'    Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':space'      Literal.String.Symbol
'\n\t\t\t'    Text
'@regexp_allowed' Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
':set'        Literal.String.Symbol
' '           Text
'if'          Keyword
' '           Text
'@regexp_allowed' Name.Variable.Instance
' '           Text
'or'          Operator.Word
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'matched'     Name
'.'           Operator
'index'       Name
'('           Punctuation
'?\\n'        Literal.String.Char
')'           Punctuation
'  '          Text
'# delayed flag setting' Comment.Single
'\n\n\t\t'    Text
'elsif'       Keyword
' '           Text
'@state'      Name.Variable.Instance
' '           Text
'=='          Operator
' '           Text
':def_expected' Literal.String.Symbol
'\n\t\t\t'    Text
'if'          Keyword
' '           Text
'@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
'kind'        Name
' '           Text
'='           Operator
' '           Text
':method'     Literal.String.Symbol
'\n\t\t\t\t'  Text
'@state'      Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
':initial'    Literal.String.Symbol
'\n\t\t\t'    Text
'else'        Keyword
'\n\t\t\t\t'  Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'getch'       Name
'\n\t\t\t'    Text
'end'         Keyword
'\n\t\t\t'    Text
'@state'      Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
':initial'    Literal.String.Symbol
'\n\n\t\t'    Text
'elsif'       Keyword
' '           Text
'@state'      Name.Variable.Instance
' '           Text
'=='          Operator
' '           Text
':module_expected' Literal.String.Symbol
'\n\t\t\t'    Text
'if'          Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'<<'          Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'\n\t\t\t\t'  Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':operator'   Literal.String.Symbol
'\n\t\t\t'    Text
'else'        Keyword
'\n\t\t\t\t'  Text
'if'          Keyword
' '           Text
'@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
'kind'        Name
' '           Text
'='           Operator
' '           Text
':method'     Literal.String.Symbol
'\n\t\t\t\t'  Text
'else'        Keyword
'\n\t\t\t\t\t' Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'getch'       Name
'\n\t\t\t\t'  Text
'end'         Keyword
'\n\t\t\t\t'  Text
'@state'      Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
':initial'    Literal.String.Symbol
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t'    Text
'elsif'       Keyword
' '           Text
'# state == :initial' Comment.Single
'\n\t\t\t'    Text
'# IDENTIFIERS, KEYWORDS' Comment.Single
'\n\t\t\t'    Text
'if'          Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'GLOBAL_VARIABLE' Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':global_variable' Literal.String.Symbol
'\n\t\t\t'    Text
'elsif'       Keyword
' '           Text
'@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
'kind'        Name
' '           Text
'='           Operator
' '           Text
':class_variable' Literal.String.Symbol
'\n\t\t\t'    Text
'elsif'       Keyword
' '           Text
'@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
'kind'        Name
' '           Text
'='           Operator
' '           Text
':instance_variable' Literal.String.Symbol
'\n\t\t\t'    Text
'elsif'       Keyword
' '           Text
'@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
'kind'        Name
' '           Text
'='           Operator
' '           Text
':comment'    Literal.String.Symbol
'\n\t\t\t'    Text
'elsif'       Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'METHOD_NAME' Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text
'if'          Keyword
' '           Text
'@last_token_dot' Name.Variable.Instance
'\n\t\t\t\t\t' Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':ident'      Literal.String.Symbol
'\n\t\t\t\t'  Text
'else'        Keyword
'\n\t\t\t\t\t' Text
'matched'     Name
' '           Text
'='           Operator
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'matched'     Name
'\n\t\t\t\t\t' Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
'IDENT_KIND'  Name.Constant
'['           Operator
'matched'     Name
']'           Operator
'\n\t\t\t\t\t' Text
'if'          Keyword
' '           Text
'kind'        Name
' '           Text
'=='          Operator
' '           Text
':ident'      Literal.String.Symbol
' '           Text
'and'         Operator.Word
' '           Text
'matched'     Name
' '           Text
'=~'          Operator
' '           Text
'/'           Literal.String.Regex
'^[A-Z]'      Literal.String.Regex
'/'           Literal.String.Regex
'\n\t\t\t\t\t\t' Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':constant'   Literal.String.Symbol
'\n\t\t\t\t\t' Text
'elsif'       Keyword
' '           Text
'kind'        Name
' '           Text
'=='          Operator
' '           Text
':reserved'   Literal.String.Symbol
'\n\t\t\t\t\t\t' Text
'@state'      Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
'DEF_NEW_STATE' Name.Constant
'['           Operator
'matched'     Name
']'           Operator
'\n\t\t\t\t\t\t' Text
'@regexp_allowed' Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
'REGEXP_ALLOWED' Name.Constant
'['           Operator
'matched'     Name
']'           Operator
'\n\t\t\t\t\t' Text
'end'         Keyword
'\n\t\t\t\t'  Text
'end'         Keyword
'\n\n\t\t\t'  Text
'elsif'       Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'STRING'      Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':string'     Literal.String.Symbol
'\n\t\t\t'    Text
'elsif'       Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'SHELL'       Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':shell'      Literal.String.Symbol
'\n\t\t\t'    Text
'elsif'       Keyword
' '           Text
'@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
'kind'        Name
' '           Text
'='           Operator
' '           Text
':string'     Literal.String.Symbol
'\n\t\t\t'    Text
'elsif'       Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'\\/'         Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
' '           Text
'and'         Operator.Word
' '           Text
'@regexp_allowed' Name.Variable.Instance
'\n\t\t\t\t'  Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'unscan'      Name
'\n\t\t\t\t'  Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'REGEXP'      Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':regexp'     Literal.String.Symbol
'\n'          Text

'/'           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
'elsif'       Keyword
' '           Text
'@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
'kind'        Name
' '           Text
'='           Operator
' '           Text
':symbol'     Literal.String.Symbol
'\n\t\t\t'    Text
'elsif'       Keyword
' '           Text
'@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
'kind'        Name
' '           Text
'='           Operator
' '           Text
':integer'    Literal.String.Symbol
'\n\n\t\t\t'  Text
'elsif'       Keyword
' '           Text
'@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
'kind'        Name
' '           Text
'='           Operator
' '           Text
':operator'   Literal.String.Symbol
'\n\t\t\t\t'  Text
'@regexp_allowed' Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
':set'        Literal.String.Symbol
' '           Text
'if'          Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'matched'     Name
'['           Operator
'-'           Operator
'1'           Literal.Number.Integer
','           Punctuation
'1'           Literal.Number.Integer
']'           Operator
' '           Text
'=~'          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
'elsif'       Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'FLOAT'       Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':float'      Literal.String.Symbol
'\n\t\t\t'    Text
'elsif'       Keyword
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'INTEGER'     Name.Constant
')'           Punctuation
'\n\t\t\t\t'  Text
'kind'        Name
' '           Text
'='           Operator
' '           Text
':integer'    Literal.String.Symbol
'\n\t\t\t'    Text
'else'        Keyword
'\n\t\t\t\t'  Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'getch'       Name
'\n\t\t\t'    Text
'end'         Keyword
'\n\t\t'      Text
'end'         Keyword
'\n\n\t\t'    Text
'token'       Name
' '           Text
'='           Operator
' '           Text
'Token'       Name.Constant
'.'           Operator
'new'         Name
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'matched'     Name
','           Punctuation
' '           Text
'kind'        Name
'\n\n\t\t'    Text
'if'          Keyword
' '           Text
'kind'        Name
' '           Text
'=='          Operator
' '           Text
':regexp'     Literal.String.Symbol
'\n\t\t\t'    Text
'token'       Name
'.'           Operator
'text'        Name
' '           Text
'<<'          Operator
' '           Text
'@scanner'    Name.Variable.Instance
'.'           Operator
'scan'        Name
'('           Punctuation
'/'           Literal.String.Regex
'[eimnosux]*' Literal.String.Regex
'/'           Literal.String.Regex
')'           Punctuation
'\n\t\t'      Text
'end'         Keyword
'\n\n\t\t'    Text
'@regexp_allowed' Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
'('           Punctuation
'@regexp_allowed' Name.Variable.Instance
' '           Text
'=='          Operator
' '           Text
':set'        Literal.String.Symbol
')'           Punctuation
'  '          Text
'# delayed flag setting' Comment.Single
'\n\n\t\t'    Text
'token'       Name
'\n\t'        Text
'end'         Keyword
'\n'          Text

'end'         Keyword
'\n\n'        Text

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

'end'         Keyword
'\n'          Text

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

'end'         Keyword
'\n\n'        Text

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

'class'       Keyword
' '           Text
'SortedSet'   Name.Class
' '           Text
'<'           Operator
' '           Text
'Set'         Name.Constant
'\n  '        Text
'@@setup'     Name.Variable.Class
' '           Text
'='           Operator
' '           Text
'false'       Keyword.Pseudo
'\n\n  '      Text
'class'       Keyword
' '           Text
'<<'          Operator
' '           Text
'self'        Name.Builtin
'\n    '      Text
'def'         Keyword
' '           Text
'[]'          Name.Function
'('           Punctuation
'*'           Operator
'ary'         Name
')'           Punctuation
'\t'          Text
'# :nodoc:'   Comment.Single
'\n      '    Text
'new'         Keyword.Pseudo
'('           Punctuation
'ary'         Name
')'           Punctuation
'\n    '      Text
'end'         Keyword
'\n\n    '    Text
'def'         Keyword
' '           Text
'setup'       Name.Function
'\t'          Text
'# :nodoc:'   Comment.Single
'\n      '    Text
'@@setup'     Name.Variable.Class
' '           Text
'and'         Operator.Word
' '           Text
'return'      Keyword
'\n\n      '  Text
'begin'       Keyword
'\n\t'        Text
'require'     Name.Builtin
' '           Text
"'"           Literal.String.Single
'rbtree'      Literal.String.Single
"'"           Literal.String.Single
'\n\n\t'      Text
'module_eval' Name.Builtin
' '           Text
'%{'          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
'rescue'      Keyword
' '           Text
'LoadError'   Name.Constant
'\n\t'        Text
'module_eval' Name.Builtin
' '           Text
'%{'          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
'end'         Keyword
'\n\n      '  Text
'@@setup'     Name.Variable.Class
' '           Text
'='           Operator
' '           Text
'true'        Keyword.Pseudo
'\n    '      Text
'end'         Keyword
'\n  '        Text
'end'         Keyword
'\n\n  '      Text
'def'         Keyword
' '           Text
'initialize'  Name.Function
'('           Punctuation
'*'           Operator
'args'        Name
','           Punctuation
' '           Text
'&'           Operator
'block'       Name
')'           Punctuation
'\t'          Text
'# :nodoc:'   Comment.Single
'\n    '      Text
'SortedSet'   Name.Constant
'.'           Operator
'setup'       Name
'\n    '      Text
'initialize'  Keyword.Pseudo
'('           Punctuation
'*'           Operator
'args'        Name
','           Punctuation
' '           Text
'&'           Operator
'block'       Name
')'           Punctuation
'\n  '        Text
'end'         Keyword
'\n'          Text

'end'         Keyword
'\n\n'        Text

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

'end'         Keyword
'\n\n'        Text

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

'#'           Comment.Single
'\n'          Text

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

'#'           Comment.Single
'\n'          Text

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

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

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

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

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

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

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

'end'         Keyword
'\n\n'        Text

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

'#'           Comment.Single
'\n'          Text

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

'#'           Comment.Single
'\n'          Text

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

'#'           Comment.Single
'\n'          Text

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

'#'           Comment.Single
'\n'          Text

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

'#'           Comment.Single
'\n'          Text

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

'#'           Comment.Single
'\n'          Text

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

'#'           Comment.Single
'\n'          Text

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

'#'           Comment.Single
'\n'          Text

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

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

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

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

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

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

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

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

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

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

'end'         Keyword
'\n\n'        Text

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

'end'         Keyword
'\n\n'        Text

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

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

'=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
'class'       Keyword
' '           Text
'Parser'      Name.Class
'\n\t\t'      Text
'class'       Keyword
' '           Text
'Attribute'   Name.Class
'\n\t\t\t'    Text
'# flatten and use only one empty_arg' Comment.Single
'\n\t\t\t'    Text
'def'         Keyword
' '           Text
'self'        Name.Class
'.'           Operator
'create'      Name.Function
' '           Text
'attr'        Keyword.Pseudo
'\n\t\t\t\t'  Text
'attr'        Keyword.Pseudo
' '           Text
'='           Operator
' '           Text
'flatten'     Name
' '           Text
'attr'        Keyword.Pseudo
'\n\t\t\t\t'  Text
'return'      Keyword
' '           Text
'@@empty_attr' Name.Variable.Class
' '           Text
'if'          Keyword
' '           Text
'attr'        Keyword.Pseudo
'.'           Operator
'empty?'      Name
'\n\t\t\t\t'  Text
'new'         Keyword.Pseudo
' '           Text
'attr'        Keyword.Pseudo
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'private_class_method' Name.Builtin
' '           Text
':new'        Literal.String.Symbol
'\n\n\t\t\t'  Text
'# remove leading and trailing whitespace; concat lines' Comment.Single
'\n\t\t\t'    Text
'def'         Keyword
' '           Text
'self'        Name.Class
'.'           Operator
'flatten'     Name.Function
' '           Text
'attr'        Keyword.Pseudo
'\n\t\t\t\t'  Text
'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
"'"           Literal.String.Single
' '           Literal.String.Single
"'"           Literal.String.Single
')'           Punctuation
'\n\t\t\t\t'  Text
'# -> ^ and $ can only match at begin and end now' Comment.Single
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'ATTRIBUTE_SCAN' Name.Constant
' '           Text
'='           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
'def'         Keyword
' '           Text
'self'        Name.Class
'.'           Operator
'parse'       Name.Function
' '           Text
'source'      Name
'\n\t\t\t\t'  Text
'source'      Name
' '           Text
'='           Operator
' '           Text
'source'      Name
'.'           Operator
'dup'         Name
'\n\t\t\t\t'  Text
'# empty_tag: the tag looks like [... /]' Comment.Single
'\n\t\t\t\t'  Text
'# slice!: this deletes the \\s*/] at the end' Comment.Single
'\n\t\t\t\t'  Text
'# \\s+ because [url=http://rubybb.org/forum/] is NOT an empty tag.' Comment.Single
'\n\t\t\t\t'  Text
'# In RubyBBCode, you can use [url=http://rubybb.org/forum/ /], and this has to be' Comment.Single
'\n\t\t\t\t'  Text
'# interpreted correctly.' Comment.Single
'\n\t\t\t\t'  Text
'empty_tag'   Name
' '           Text
'='           Operator
' '           Text
'source'      Name
'.'           Operator
'sub!'        Name
'('           Punctuation
'/'           Literal.String.Regex
'^:'          Literal.String.Regex
'/'           Literal.String.Regex
','           Punctuation
' '           Text
"'"           Literal.String.Single
'='           Literal.String.Single
"'"           Literal.String.Single
')'           Punctuation
' '           Text
'or'          Operator.Word
' '           Text
'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
'debug'       Name
' '           Text
"'"           Literal.String.Single
'PARSE: '     Literal.String.Single
"'"           Literal.String.Single
' '           Text
'+'           Operator
' '           Text
'source'      Name
'.'           Operator
'inspect'     Name
' '           Text
'+'           Operator
' '           Text
"'"           Literal.String.Single
' => '        Literal.String.Single
"'"           Literal.String.Single
' '           Text
'+'           Operator
' '           Text
'empty_tag'   Name
'.'           Operator
'inspect'     Name
'\n\t\t\t\t'  Text
"#-> 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
'attr'        Keyword.Pseudo
' '           Text
'='           Operator
' '           Text
'Hash'        Name.Constant
'.'           Operator
'new'         Name
'\n\t\t\t\t'  Text
'attr'        Keyword.Pseudo
'['           Operator
':flags'      Literal.String.Symbol
']'           Operator
' '           Text
'='           Operator
' '           Text
'['           Operator
']'           Operator
'\n\t\t\t\t'  Text
'source'      Name
'.'           Operator
'scan'        Name
'('           Punctuation
'ATTRIBUTE_SCAN' Name.Constant
')'           Punctuation
' '           Text
'{'           Punctuation
' '           Text
'|'           Operator
'key'         Name
','           Punctuation
' '           Text
'value'       Name
'|'           Operator
'\n\t\t\t\t\t' Text
'if'          Keyword
' '           Text
'not'         Operator.Word
' '           Text
'value'       Name
'\n\t\t\t\t\t\t' Text
'attr'        Keyword.Pseudo
'['           Operator
':flags'      Literal.String.Symbol
']'           Operator
' '           Text
'<<'          Operator
' '           Text
'unescape'    Name
'('           Punctuation
'key'         Name
')'           Punctuation
'\n\t\t\t\t\t' Text
'else'        Keyword
'\n\t\t\t\t\t\t' Text
'next'        Keyword
' '           Text
'if'          Keyword
' '           Text
'value'       Name
'.'           Operator
'empty?'      Name
' '           Text
'and'         Operator.Word
' '           Text
'key'         Name
'.'           Operator
'empty?'      Name
'\n\t\t\t\t\t\t' Text
'attr'        Keyword.Pseudo
'['           Operator
'unescape'    Name
'('           Punctuation
'key'         Name
')'           Punctuation
']'           Operator
' '           Text
'='           Operator
' '           Text
'unescape'    Name
'('           Punctuation
'value'       Name
')'           Punctuation
'\n\t\t\t\t\t' Text
'end'         Keyword
'\n\t\t\t\t'  Text
'}'           Punctuation
'\n\t\t\t\t'  Text
'debug'       Name
' '           Text
'attr'        Keyword.Pseudo
'.'           Operator
'inspect'     Name
'\n\n\t\t\t\t' Text
'return'      Keyword
' '           Text
'empty_tag'   Name
','           Punctuation
' '           Text
'attr'        Keyword.Pseudo
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'self'        Name.Class
'.'           Operator
'unescape_char' Name.Function
' '           Text
'esc'         Name
'\n\t\t\t\t'  Text
'esc'         Name
'['           Operator
'1'           Literal.Number.Integer
']'           Operator
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'self'        Name.Class
'.'           Operator
'unquote'     Name.Function
' '           Text
'qt'          Name
'\n\t\t\t\t'  Text
'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
'{'           Punctuation
' '           Text
'|'           Operator
'esc'         Name
'|'           Operator
' '           Text
'unescape_char' Name
' '           Text
'esc'         Name
' '           Text
'}'           Punctuation
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'self'        Name.Class
'.'           Operator
'unescape'    Name.Function
' '           Text
'str'         Name
'\n\t\t\t\t'  Text
'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
'{'           Punctuation
'\n\t\t\t\t\t' Text
'if'          Keyword
' '           Text
'$1'          Name.Variable.Global
'\n\t\t\t\t\t\t' Text
'unescape_char' Name
' '           Text
'$1'          Name.Variable.Global
'\n\t\t\t\t\t' Text
'else'        Keyword
'\n\t\t\t\t\t\t' Text
'unquote'     Name
' '           Text
'$2'          Name.Variable.Global
'\n\t\t\t\t\t' Text
'end'         Keyword
'\n\t\t\t\t'  Text
'}'           Punctuation
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'include'     Keyword.Pseudo
' '           Text
'Enumerable'  Name.Constant
'\n\t\t\t'    Text
'def'         Keyword
' '           Text
'each'        Name.Function
' '           Text
'&'           Operator
'block'       Name
'\n\t\t\t\t'  Text
'@args'       Name.Variable.Instance
'.'           Operator
'each'        Name
'('           Punctuation
'&'           Operator
'block'       Name
')'           Punctuation
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'attr_reader' Keyword.Pseudo
' '           Text
':source'     Literal.String.Symbol
','           Punctuation
' '           Text
':args'       Literal.String.Symbol
','           Punctuation
' '           Text
':value'      Literal.String.Symbol
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'initialize'  Name.Function
' '           Text
'source'      Name
'\n\t\t\t\t'  Text
'@source'     Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
'source'      Name
'\n\t\t\t\t'  Text
'debug'       Name
' '           Text
"'"           Literal.String.Single
'Attribute'   Literal.String.Single
'#'           Literal.String.Single
'new(%p)'     Literal.String.Single
"'"           Literal.String.Single
' '           Text
'%'           Operator
' '           Text
'source'      Name
'\n\t\t\t\t'  Text
'@empty_tag'  Name.Variable.Instance
','           Punctuation
' '           Text
'@attr'       Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
'Attribute'   Name.Constant
'.'           Operator
'parse'       Name
' '           Text
'source'      Name
'\n\t\t\t\t'  Text
'@value'      Name.Variable.Instance
' '           Text
'='           Operator
' '           Text
'@attr'       Name.Variable.Instance
'['           Operator
"'"           Literal.String.Single
"'"           Literal.String.Single
']'           Operator
'.'           Operator
'to_s'        Name
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'empty?'      Name.Function
'\n\t\t\t\t'  Text
'self'        Name.Builtin
' '           Text
'=='          Operator
' '           Text
'@@empty_attr' Name.Variable.Class
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'empty_tag?'  Name.Function
'\n\t\t\t\t'  Text
'@empty_tag'  Name.Variable.Instance
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'[]'          Name.Function
' '           Text
'*'           Operator
'keys'        Name
'\n\t\t\t\t'  Text
'res'         Name
' '           Text
'='           Operator
' '           Text
'@attr'       Name.Variable.Instance
'['           Operator
'*'           Operator
'keys'        Name
']'           Operator
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'flags'       Name.Function
'\n\t\t\t\t'  Text
'attr'        Keyword.Pseudo
'['           Operator
':flags'      Literal.String.Symbol
']'           Operator
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'to_s'        Name.Function
'\n\t\t\t\t'  Text
'@attr'       Name.Variable.Instance
'\n\t\t\t'    Text
'end'         Keyword
'\n\n\t\t\t'  Text
'def'         Keyword
' '           Text
'inspect'     Name.Function
'\n\t\t\t\t'  Text
"'"           Literal.String.Single
'ATTR['       Literal.String.Single
"'"           Literal.String.Single
' '           Text
'+'           Operator
' '           Text
'@attr'       Name.Variable.Instance
'.'           Operator
'inspect'     Name
' '           Text
'+'           Operator
' '           Text
'('           Punctuation
'@empty_tag'  Name.Variable.Instance
' '           Text
'?'           Punctuation
' '           Text
"'"           Literal.String.Single
' | empty tag' Literal.String.Single
"'"           Literal.String.Single
' '           Text
':'           Punctuation
' '           Text
"'"           Literal.String.Single
"'"           Literal.String.Single
')'           Punctuation
' '           Text
'+'           Operator
' '           Text
"'"           Literal.String.Single
']'           Literal.String.Single
"'"           Literal.String.Single
'\n\t\t\t'    Text
'end'         Keyword
'\n\t\t'      Text
'end'         Keyword
'\n\t\t'      Text
'class'       Keyword
' '           Text
'Attribute'   Name.Class
'\n\t\t\t'    Text
'@@empty_attr' Name.Variable.Class
' '           Text
'='           Operator
' '           Text
'new'         Keyword.Pseudo
' '           Text
"'"           Literal.String.Single
"'"           Literal.String.Single
'\n\t\t'      Text
'end'         Keyword
'\n\t'        Text
'end'         Keyword
'\n'          Text
