'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=>#,' Comment.Single '\n ' Text '# # 2001=>#,' Comment.Single '\n ' Text '# # 2002=>#}' 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 # => #,' Comment.Single '\n ' Text '# # #,' Comment.Single '\n ' Text '# # #,' Comment.Single '\n ' Text '# # #}>' 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. ("#")' 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 "Hello world!"' 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 '# ' Comment.Single '\n\t\t' Text '# You can submit values as a Hash' Comment.Single '\n\t\t' Text '# ' Comment.Single '\n\t\t' Text '# ' 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 '# ' Comment.Single '\n\t\t' Text '# ' Comment.Single '\n\t\t' Text '# ' 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 '# ' 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 '# ' 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
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 '' Literal.String.Double '"' Literal.String.Double '\n ' Text 'self' Name.Builtin '.' Operator 'puts' Name ' ' Text '"' Literal.String.Double '' Literal.String.Double '"' Literal.String.Double '\n ' Text 'self' Name.Builtin '.' Operator 'puts' Name ' ' Text '"' Literal.String.Double '' Literal.String.Double '"' Literal.String.Double '\n ' Text 'self' Name.Builtin '.' Operator 'puts' Name ' ' Text '"' Literal.String.Double '500 Internal Server Error' Literal.String.Double '"' Literal.String.Double '\n ' Text 'self' Name.Builtin '.' Operator 'puts' Name ' ' Text '"' Literal.String.Double '' Literal.String.Double '"' Literal.String.Double '\n ' Text 'self' Name.Builtin '.' Operator 'puts' Name ' ' Text '"' Literal.String.Double '' 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 '

Internal Server Error

' Literal.String.Double '"' Literal.String.Double '\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.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
' on'  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
'
' Literal.String.Double '"' Literal.String.Double '\n ' Text 'self' Name.Builtin '.' Operator 'puts' Name ' ' Text '"' Literal.String.Double '' Literal.String.Double '"' Literal.String.Double '\n ' Text 'self' Name.Builtin '.' Operator 'puts' Name ' ' Text '"' Literal.String.Double '' 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