rouge 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/rouge.rb +4 -0
- data/lib/rouge/lexers/coffeescript.rb +176 -0
- data/lib/rouge/lexers/handlebars.rb +76 -0
- data/lib/rouge/lexers/sass.rb +2 -0
- data/lib/rouge/lexers/smalltalk.rb +114 -0
- data/lib/rouge/regex_lexer.rb +3 -2
- data/lib/rouge/version.rb +1 -1
- metadata +5 -2
    
        data/lib/rouge.rb
    CHANGED
    
    | @@ -45,8 +45,10 @@ load load_dir.join('rouge/lexers/php.rb') | |
| 45 45 | 
             
            load load_dir.join('rouge/lexers/haml.rb')
         | 
| 46 46 | 
             
            load load_dir.join('rouge/lexers/sass.rb')
         | 
| 47 47 | 
             
            load load_dir.join('rouge/lexers/scss.rb')
         | 
| 48 | 
            +
            load load_dir.join('rouge/lexers/coffeescript.rb')
         | 
| 48 49 |  | 
| 49 50 | 
             
            load load_dir.join('rouge/lexers/erb.rb')
         | 
| 51 | 
            +
            load load_dir.join('rouge/lexers/handlebars.rb')
         | 
| 50 52 |  | 
| 51 53 | 
             
            load load_dir.join('rouge/lexers/tcl.rb')
         | 
| 52 54 | 
             
            load load_dir.join('rouge/lexers/python.rb')
         | 
| @@ -64,6 +66,8 @@ load load_dir.join('rouge/lexers/c.rb') | |
| 64 66 | 
             
            load load_dir.join('rouge/lexers/cpp.rb')
         | 
| 65 67 | 
             
            load load_dir.join('rouge/lexers/java.rb')
         | 
| 66 68 |  | 
| 69 | 
            +
            load load_dir.join('rouge/lexers/smalltalk.rb')
         | 
| 70 | 
            +
             | 
| 67 71 | 
             
            load load_dir.join('rouge/formatter.rb')
         | 
| 68 72 | 
             
            load load_dir.join('rouge/formatters/html.rb')
         | 
| 69 73 | 
             
            load load_dir.join('rouge/formatters/terminal256.rb')
         | 
| @@ -0,0 +1,176 @@ | |
| 1 | 
            +
            module Rouge
         | 
| 2 | 
            +
              module Lexers
         | 
| 3 | 
            +
                class Coffeescript < RegexLexer
         | 
| 4 | 
            +
                  tag 'coffeescript'
         | 
| 5 | 
            +
                  aliases 'coffee', 'coffee-script'
         | 
| 6 | 
            +
                  filenames '*.coffee', 'Cakefile'
         | 
| 7 | 
            +
                  mimetypes 'text/coffeescript'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  desc 'The Coffeescript programming language (coffeescript.org)'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def self.analyze_text(text)
         | 
| 12 | 
            +
                    return 1 if text.shebang? 'coffee'
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  def self.keywords
         | 
| 16 | 
            +
                    @keywords ||= Set.new %w(
         | 
| 17 | 
            +
                      for in of while break return continue switch when then if else
         | 
| 18 | 
            +
                      throw try catch finally new delete typeof instanceof super
         | 
| 19 | 
            +
                      extends this class by
         | 
| 20 | 
            +
                    )
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  def self.constants
         | 
| 24 | 
            +
                    @constants ||= Set.new %w(
         | 
| 25 | 
            +
                      true false yes no on off null NaN Infinity undefined
         | 
| 26 | 
            +
                    )
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  def self.builtins
         | 
| 30 | 
            +
                    @builtins ||= Set.new %w(
         | 
| 31 | 
            +
                      Array Boolean Date Error Function Math netscape Number Object
         | 
| 32 | 
            +
                      Packages RegExp String sun decodeURI decodeURIComponent
         | 
| 33 | 
            +
                      encodeURI encodeURIComponent eval isFinite isNaN parseFloat
         | 
| 34 | 
            +
                      parseInt document window
         | 
| 35 | 
            +
                    )
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                  id = /[$a-zA-Z_][a-zA-Z0-9_]*/
         | 
| 39 | 
            +
                  lval = /@?#{id}([.]#{id})*/
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  state :comments_and_whitespace do
         | 
| 42 | 
            +
                    rule /\s+/m, 'Text'
         | 
| 43 | 
            +
                    rule /###.*?###/m, 'Comment.Multiline'
         | 
| 44 | 
            +
                    rule /#.*?\n/, 'Comment.Single'
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  state :multiline_regex do
         | 
| 48 | 
            +
                    mixin :comments_and_whitespace
         | 
| 49 | 
            +
                    rule %r(///([gim]+\b|\B)), 'Literal.String.Regex', :pop!
         | 
| 50 | 
            +
                    rule %r(/), 'Literal.String.Regex'
         | 
| 51 | 
            +
                    rule %r([^/#]+), 'Literal.String.Regex'
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                  state :slash_starts_regex do
         | 
| 55 | 
            +
                    mixin :comments_and_whitespace
         | 
| 56 | 
            +
                    rule %r(///) do
         | 
| 57 | 
            +
                      token 'Literal.String.Regex'
         | 
| 58 | 
            +
                      pop!; push :multiline_regex
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                    rule %r(
         | 
| 62 | 
            +
                      /(\\.|[^\[/\\\n]|\[(\\.|[^\]\\\n])*\])+/ # a regex
         | 
| 63 | 
            +
                      ([gim]+\b|\B)
         | 
| 64 | 
            +
                    )x, 'Literal.String.Regex', :pop!
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                    rule(//) { pop! }
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  state :root do
         | 
| 70 | 
            +
                    rule(%r(^(?=\s|/|<!--))) { push :slash_starts_regex }
         | 
| 71 | 
            +
                    mixin :comments_and_whitespace
         | 
| 72 | 
            +
                    rule %r(
         | 
| 73 | 
            +
                      [+][+]|--|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|[?]|:|=|
         | 
| 74 | 
            +
                      [|][|]|\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*`%&|^/])=?
         | 
| 75 | 
            +
                    )x, 'Operator', :slash_starts_regex
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                    rule /[-=]>/, 'Name.Function'
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                    rule /(@)([ \t]*)(#{id})/ do
         | 
| 80 | 
            +
                      group 'Name.Variable.Instance'; group 'Text'
         | 
| 81 | 
            +
                      group 'Name.Attribute'
         | 
| 82 | 
            +
                      push :slash_starts_regex
         | 
| 83 | 
            +
                    end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                    rule /([.])([ \t]*)(#{id})/ do
         | 
| 86 | 
            +
                      group 'Punctuation'; group 'Text'
         | 
| 87 | 
            +
                      group 'Name.Attribute'
         | 
| 88 | 
            +
                      push :slash_starts_regex
         | 
| 89 | 
            +
                    end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                    rule /#{id}(?=\s*:)/, 'Name.Attribute', :slash_starts_regex
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                    rule /#{id}/, 'Name.Other', :slash_starts_regex
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                    rule /[{(\[;,]/, 'Punctuation', :slash_starts_regex
         | 
| 96 | 
            +
                    rule /[})\].]/, 'Punctuation'
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                    rule /\d+[.]\d+([eE]\d+)?[fd]?/, 'Literal.Number.Float'
         | 
| 99 | 
            +
                    rule /0x[0-9a-fA-F]+/, 'Literal.Number.Hex'
         | 
| 100 | 
            +
                    rule /\d+/, 'Literal.Number.Integer'
         | 
| 101 | 
            +
                    rule /"""/, 'Literal.String', :tdqs
         | 
| 102 | 
            +
                    rule /'''/, 'Literal.String', :tsqs
         | 
| 103 | 
            +
                    rule /"/, 'Literal.String', :dqs
         | 
| 104 | 
            +
                    rule /'/, 'Literal.String', :sqs
         | 
| 105 | 
            +
                  end
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                  state :strings do
         | 
| 108 | 
            +
                    # all coffeescript strings are multi-line
         | 
| 109 | 
            +
                    rule /[^#\\'"]+/m, 'Literal.String'
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                    rule /\\./, 'Literal.String.Escape'
         | 
| 112 | 
            +
                    rule /#/, 'Literal.String'
         | 
| 113 | 
            +
                  end
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                  state :double_strings do
         | 
| 116 | 
            +
                    rule /'/, 'Literal.String'
         | 
| 117 | 
            +
                    mixin :has_interpolation
         | 
| 118 | 
            +
                    mixin :strings
         | 
| 119 | 
            +
                  end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                  state :single_strings do
         | 
| 122 | 
            +
                    rule /"/, 'Literal.String'
         | 
| 123 | 
            +
                    mixin :strings
         | 
| 124 | 
            +
                  end
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                  state :interpolation do
         | 
| 127 | 
            +
                    rule /}/, 'Literal.String.Interpol', :pop!
         | 
| 128 | 
            +
                    mixin :root
         | 
| 129 | 
            +
                  end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                  state :has_interpolation do
         | 
| 132 | 
            +
                    rule /[#][{]/, 'Literal.String.Interpol', :interpolation
         | 
| 133 | 
            +
                  end
         | 
| 134 | 
            +
             | 
| 135 | 
            +
                  state :dqs do
         | 
| 136 | 
            +
                    rule /"/, 'Literal.String', :pop!
         | 
| 137 | 
            +
                    mixin :double_strings
         | 
| 138 | 
            +
                  end
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                  state :tdqs do
         | 
| 141 | 
            +
                    rule /"""/, 'Literal.String', :pop!
         | 
| 142 | 
            +
                    rule /"/, 'Literal.String'
         | 
| 143 | 
            +
                    mixin :double_strings
         | 
| 144 | 
            +
                  end
         | 
| 145 | 
            +
             | 
| 146 | 
            +
                  state :sqs do
         | 
| 147 | 
            +
                    rule /'/, 'Literal.String', :pop!
         | 
| 148 | 
            +
                    mixin :single_strings
         | 
| 149 | 
            +
                  end
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                  state :tsqs do
         | 
| 152 | 
            +
                    rule /'''/, 'Literal.String', :pop!
         | 
| 153 | 
            +
                    rule /'/, 'Literal.String'
         | 
| 154 | 
            +
                    mixin :single_strings
         | 
| 155 | 
            +
                  end
         | 
| 156 | 
            +
             | 
| 157 | 
            +
                  postprocess 'Name' do |tok, val|
         | 
| 158 | 
            +
                    if tok.name == 'Name.Attribute'
         | 
| 159 | 
            +
                      if self.class.keywords.include? val
         | 
| 160 | 
            +
                        tok = 'Error' # keywords as attributes = nono
         | 
| 161 | 
            +
                      else
         | 
| 162 | 
            +
                        # pass. leave attributes alone.
         | 
| 163 | 
            +
                      end
         | 
| 164 | 
            +
                    elsif self.class.keywords.include? val
         | 
| 165 | 
            +
                      tok = 'Keyword'
         | 
| 166 | 
            +
                    elsif self.class.constants.include? val
         | 
| 167 | 
            +
                        tok = 'Name.Constant'
         | 
| 168 | 
            +
                    elsif self.class.builtins.include? val
         | 
| 169 | 
            +
                      tok = 'Name.Builtin'
         | 
| 170 | 
            +
                    end
         | 
| 171 | 
            +
             | 
| 172 | 
            +
                    token tok, val
         | 
| 173 | 
            +
                  end
         | 
| 174 | 
            +
                end
         | 
| 175 | 
            +
              end
         | 
| 176 | 
            +
            end
         | 
| @@ -0,0 +1,76 @@ | |
| 1 | 
            +
            module Rouge
         | 
| 2 | 
            +
              module Lexers
         | 
| 3 | 
            +
                class Handlebars < TemplateLexer
         | 
| 4 | 
            +
                  desc 'the Handlebars and Mustache templating languages'
         | 
| 5 | 
            +
                  tag 'handlebars'
         | 
| 6 | 
            +
                  aliases 'hbs', 'mustache'
         | 
| 7 | 
            +
                  filenames '*.handlebars', '*.hbs', '*.mustache'
         | 
| 8 | 
            +
                  mimetypes 'text/x-handlebars', 'text/x-mustache'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  id = %r([\w$-]+)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  state :root do
         | 
| 13 | 
            +
                    # escaped slashes
         | 
| 14 | 
            +
                    rule(/\\{+/) { delegate parent }
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                    # block comments
         | 
| 17 | 
            +
                    rule /{{!--/, 'Comment', :comment
         | 
| 18 | 
            +
                    rule /{{!.*?}}/, 'Comment'
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    rule /{{{?/ do
         | 
| 21 | 
            +
                      token 'Keyword'
         | 
| 22 | 
            +
                      push :stache
         | 
| 23 | 
            +
                      push :open_sym
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    rule(/(.+?)(?=\\|{{)/m) { delegate parent }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    # if we get here, there's no more mustache tags, so we eat
         | 
| 29 | 
            +
                    # the rest of the doc
         | 
| 30 | 
            +
                    rule(/.+/m) { delegate parent }
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  state :comment do
         | 
| 34 | 
            +
                    rule(/{{/) { token 'Comment'; push }
         | 
| 35 | 
            +
                    rule(/}}/) { token 'Comment'; pop! }
         | 
| 36 | 
            +
                    rule(/[^{}]+/m) { token 'Comment' }
         | 
| 37 | 
            +
                    rule(/[{}]/) { token 'Comment' }
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  state :stache do
         | 
| 41 | 
            +
                    rule /}}}?/, 'Keyword', :pop!
         | 
| 42 | 
            +
                    rule /\s+/m, 'Text'
         | 
| 43 | 
            +
                    rule /[=]/, 'Operator'
         | 
| 44 | 
            +
                    rule /[\[\]]/, 'Punctuation'
         | 
| 45 | 
            +
                    rule /[.](?=[}\s])/, 'Name.Variable'
         | 
| 46 | 
            +
                    rule /[.][.]/, 'Name.Variable'
         | 
| 47 | 
            +
                    rule %r([/.]), 'Punctuation'
         | 
| 48 | 
            +
                    rule /"(\\.|.)*?"/, 'Literal.String.Double'
         | 
| 49 | 
            +
                    rule /'(\\.|.)*?'/, 'Literal.String.Single'
         | 
| 50 | 
            +
                    rule /\d+(?=}\s)/, 'Literal.Number'
         | 
| 51 | 
            +
                    rule /(true|false)(?=[}\s])/, 'Keyword.Constant'
         | 
| 52 | 
            +
                    rule /else(?=[}\s])/, 'Keyword'
         | 
| 53 | 
            +
                    rule /this(?=[}\s])/, 'Name.Builtin.Pseudo'
         | 
| 54 | 
            +
                    rule /@#{id}/, 'Name.Attribute'
         | 
| 55 | 
            +
                    rule id, 'Name.Variable'
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  state :open_sym do
         | 
| 59 | 
            +
                    rule %r([#/]) do
         | 
| 60 | 
            +
                      token 'Keyword'
         | 
| 61 | 
            +
                      pop!; push :block_name
         | 
| 62 | 
            +
                    end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                    rule /[>^&]/, 'Keyword'
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                    rule(//) { pop! }
         | 
| 67 | 
            +
                  end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  state :block_name do
         | 
| 70 | 
            +
                    rule /if(?=[}\s])/, 'Keyword'
         | 
| 71 | 
            +
                    rule id, 'Name.Namespace', :pop!
         | 
| 72 | 
            +
                    rule(//) { pop! }
         | 
| 73 | 
            +
                  end
         | 
| 74 | 
            +
                end
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
            end
         | 
    
        data/lib/rouge/lexers/sass.rb
    CHANGED
    
    
| @@ -0,0 +1,114 @@ | |
| 1 | 
            +
            module Rouge
         | 
| 2 | 
            +
              module Lexers
         | 
| 3 | 
            +
                class Smalltalk < RegexLexer
         | 
| 4 | 
            +
                  desc 'The Smalltalk programming language'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  tag 'smalltalk'
         | 
| 7 | 
            +
                  aliases 'st', 'squeak'
         | 
| 8 | 
            +
                  filenames '*.st'
         | 
| 9 | 
            +
                  mimetypes 'text/x-smalltalk'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  ops = %r([-+*/\\~<>=|&!?,@%])
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  state :root do
         | 
| 14 | 
            +
                    rule /(<)(\w+:)(.*?)(>)/ do
         | 
| 15 | 
            +
                      group 'Punctuation'; group 'Keyword'; group 'Text'; group 'Punctuation'
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    # mixin :squeak_fileout
         | 
| 19 | 
            +
                    mixin :whitespaces
         | 
| 20 | 
            +
                    mixin :method_definition
         | 
| 21 | 
            +
                    rule /([|])([\w\s]*)([|])/ do
         | 
| 22 | 
            +
                      group 'Punctuation'; group 'Name.Variable'; group 'Punctuation'
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
                    mixin :objects
         | 
| 25 | 
            +
                    rule /\^|:=|_/, 'Operator'
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    rule /[)}\]]/, 'Punctuation', :after_object
         | 
| 28 | 
            +
                    rule /[({\[!]/, 'Punctuation'
         | 
| 29 | 
            +
                  end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  state :method_definition do
         | 
| 32 | 
            +
                    rule /([a-z]\w*:)(\s*)(\w+)/i do
         | 
| 33 | 
            +
                      group 'Name.Function'; group 'Text'; group 'Name.Variable'
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    rule /^(\s*)(\b[a-z]\w*\b)(\s*)$/i do
         | 
| 37 | 
            +
                      group 'Text'; group 'Name.Function'; group 'Text'
         | 
| 38 | 
            +
                    end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                    rule %r(^(\s*)(#{ops}+)(\s*)(\w+)(\s*)$) do
         | 
| 41 | 
            +
                      group 'Text'; group 'Name.Function';
         | 
| 42 | 
            +
                      group 'Text'; group 'Name.Variable'; group 'Text';
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  state :block_variables do
         | 
| 47 | 
            +
                    mixin :whitespaces
         | 
| 48 | 
            +
                    rule /(:)(\s*)(\w+)/ do
         | 
| 49 | 
            +
                      group 'Operator'; group 'Text'; group 'Name.Variable'
         | 
| 50 | 
            +
                    end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                    rule /[|]/, 'Punctuation', :pop!
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    rule(//) { pop! }
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                  state :literals do
         | 
| 58 | 
            +
                    rule /'(''|.)*?'/m, 'Literal.String', :after_object
         | 
| 59 | 
            +
                    rule /[$]./, 'Literal.String.Char', :after_object
         | 
| 60 | 
            +
                    rule /#[(]/, 'Literal.String.Symbol', :parenth
         | 
| 61 | 
            +
                    rule /(\d+r)?-?\d+(\.\d+)?(e-?\d+)?/,
         | 
| 62 | 
            +
                      'Literal.Number', :after_object
         | 
| 63 | 
            +
                    rule /#("[^"]*"|#{ops}+|[\w:]+)/,
         | 
| 64 | 
            +
                      'Literal.String.Symbol', :after_object
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  state :parenth do
         | 
| 68 | 
            +
                    rule /[)]/ do
         | 
| 69 | 
            +
                      token 'Literal.String.Symbol'
         | 
| 70 | 
            +
                      pop!; push :after_object
         | 
| 71 | 
            +
                    end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                    mixin :inner_parenth
         | 
| 74 | 
            +
                  end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                  state :inner_parenth do
         | 
| 77 | 
            +
                    rule /#[(]/, 'Literal.String.Symbol', :inner_parenth
         | 
| 78 | 
            +
                    rule /[)]/, 'Literal.String.Symbol', :pop!
         | 
| 79 | 
            +
                    mixin :whitespaces
         | 
| 80 | 
            +
                    mixin :literals
         | 
| 81 | 
            +
                    rule /(#{ops}|[\w:])+/, 'Literal.String.Symbol'
         | 
| 82 | 
            +
                  end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                  state :whitespaces do
         | 
| 85 | 
            +
                    rule /! !$/, 'Keyword' # squeak chunk delimiter
         | 
| 86 | 
            +
                    rule /\s+/m, 'Text'
         | 
| 87 | 
            +
                    rule /".*?"/m, 'Comment'
         | 
| 88 | 
            +
                  end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                  state :objects do
         | 
| 91 | 
            +
                    rule /\[/, 'Punctuation', :block_variables
         | 
| 92 | 
            +
                    rule /(self|super|true|false|nil|thisContext)\b/,
         | 
| 93 | 
            +
                      'Name.Builtin.Pseudo', :after_object
         | 
| 94 | 
            +
                    rule /[A-Z]\w*(?!:)\b/, 'Name.Class', :after_object
         | 
| 95 | 
            +
                    rule /[a-z]\w*(?!:)\b/, 'Name.Variable', :after_object
         | 
| 96 | 
            +
                    mixin :literals
         | 
| 97 | 
            +
                  end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                  state :after_object do
         | 
| 100 | 
            +
                    mixin :whitespaces
         | 
| 101 | 
            +
                    rule /(ifTrue|ifFalse|whileTrue|whileFalse|timesRepeat):/,
         | 
| 102 | 
            +
                      'Name.Builtin', :pop!
         | 
| 103 | 
            +
                    rule /new(?!:)\b/, 'Name.Builtin'
         | 
| 104 | 
            +
                    rule /:=|_/, 'Operator', :pop!
         | 
| 105 | 
            +
                    rule /[a-z]+\w*:/i, 'Name.Function', :pop!
         | 
| 106 | 
            +
                    rule /[a-z]+\w*/i, 'Name.Function'
         | 
| 107 | 
            +
                    rule /#{ops}+/, 'Name.Function', :pop!
         | 
| 108 | 
            +
                    rule /[.]/, 'Punctuation', :pop!
         | 
| 109 | 
            +
                    rule /;/, 'Punctuation'
         | 
| 110 | 
            +
                    rule(//) { pop! }
         | 
| 111 | 
            +
                  end
         | 
| 112 | 
            +
                end
         | 
| 113 | 
            +
              end
         | 
| 114 | 
            +
            end
         | 
    
        data/lib/rouge/regex_lexer.rb
    CHANGED
    
    | @@ -196,7 +196,7 @@ module Rouge | |
| 196 196 | 
             
                # @see #step #step (where (2.) is implemented)
         | 
| 197 197 | 
             
                def stream_tokens(stream, &b)
         | 
| 198 198 | 
             
                  stream_without_postprocessing(stream) do |tok, val|
         | 
| 199 | 
            -
                    _, processor = self.class.postprocesses.find { |t, _| t  | 
| 199 | 
            +
                    _, processor = self.class.postprocesses.find { |t, _| t === tok }
         | 
| 200 200 |  | 
| 201 201 | 
             
                    if processor
         | 
| 202 202 | 
             
                      with_output_stream(b) do
         | 
| @@ -385,6 +385,7 @@ module Rouge | |
| 385 385 |  | 
| 386 386 | 
             
              private
         | 
| 387 387 | 
             
                def with_output_stream(output_stream, &b)
         | 
| 388 | 
            +
                  old_output_stream = @output_stream
         | 
| 388 389 | 
             
                  @output_stream = Yielder.new do |tok, val|
         | 
| 389 390 | 
             
                    debug { "    yielding #{tok.to_s.inspect}, #{val.inspect}" }
         | 
| 390 391 | 
             
                    output_stream.call(Token[tok], val)
         | 
| @@ -393,7 +394,7 @@ module Rouge | |
| 393 394 | 
             
                  yield
         | 
| 394 395 |  | 
| 395 396 | 
             
                ensure
         | 
| 396 | 
            -
                  @output_stream =  | 
| 397 | 
            +
                  @output_stream = old_output_stream
         | 
| 397 398 | 
             
                end
         | 
| 398 399 | 
             
              end
         | 
| 399 400 | 
             
            end
         | 
    
        data/lib/rouge/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rouge
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.3
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-10- | 
| 12 | 
            +
            date: 2012-10-16 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: thor
         | 
| @@ -53,9 +53,11 @@ files: | |
| 53 53 | 
             
            - lib/rouge/lexers/javascript.rb
         | 
| 54 54 | 
             
            - lib/rouge/lexers/diff.rb
         | 
| 55 55 | 
             
            - lib/rouge/lexers/viml.rb
         | 
| 56 | 
            +
            - lib/rouge/lexers/smalltalk.rb
         | 
| 56 57 | 
             
            - lib/rouge/lexers/php/builtins.rb
         | 
| 57 58 | 
             
            - lib/rouge/lexers/haskell.rb
         | 
| 58 59 | 
             
            - lib/rouge/lexers/c.rb
         | 
| 60 | 
            +
            - lib/rouge/lexers/handlebars.rb
         | 
| 59 61 | 
             
            - lib/rouge/lexers/tex.rb
         | 
| 60 62 | 
             
            - lib/rouge/lexers/text.rb
         | 
| 61 63 | 
             
            - lib/rouge/lexers/html.rb
         | 
| @@ -63,6 +65,7 @@ files: | |
| 63 65 | 
             
            - lib/rouge/lexers/java.rb
         | 
| 64 66 | 
             
            - lib/rouge/lexers/php.rb
         | 
| 65 67 | 
             
            - lib/rouge/lexers/yaml.rb
         | 
| 68 | 
            +
            - lib/rouge/lexers/coffeescript.rb
         | 
| 66 69 | 
             
            - lib/rouge/lexers/tcl.rb
         | 
| 67 70 | 
             
            - lib/rouge/lexers/css.rb
         | 
| 68 71 | 
             
            - lib/rouge/lexers/cpp.rb
         |