rouge 0.0.5 → 0.0.6

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.
@@ -25,6 +25,7 @@ load load_dir.join('rouge/lexers/css.rb')
25
25
  load load_dir.join('rouge/lexers/html.rb')
26
26
 
27
27
  load load_dir.join('rouge/lexers/tcl.rb')
28
+ load load_dir.join('rouge/lexers/python.rb')
28
29
 
29
30
  load load_dir.join('rouge/formatter.rb')
30
31
  load load_dir.join('rouge/formatters/html.rb')
@@ -32,3 +33,4 @@ load load_dir.join('rouge/formatters/html.rb')
32
33
  load load_dir.join('rouge/theme.rb')
33
34
  load load_dir.join('rouge/themes/thankful_eyes.rb')
34
35
  load load_dir.join('rouge/themes/colorful.rb')
36
+ load load_dir.join('rouge/themes/base16.rb')
@@ -255,7 +255,15 @@ module Rouge
255
255
  stack.last
256
256
  end
257
257
 
258
+ MAX_STEPS = 200000
258
259
  def scan(re, &b)
260
+ @steps ||= 0
261
+ @steps += 1
262
+
263
+ if @steps >= MAX_STEPS
264
+ raise "too many scans near: #{scanner.peek(20)}..."
265
+ end
266
+
259
267
  scanner.scan(re)
260
268
 
261
269
  if scanner.matched?
@@ -64,7 +64,7 @@ module Rouge
64
64
  upper-alpha upper-latin upper-roman uppercase url
65
65
  visible w-resize wait wider x-fast x-high x-large x-loud
66
66
  x-low x-small x-soft xx-large xx-small yes
67
- ).join('|')
67
+ )
68
68
 
69
69
  builtins = %w(
70
70
  indigo gold firebrick indianred yellow darkolivegreen
@@ -92,7 +92,7 @@ module Rouge
92
92
  lightslategray lawngreen lightgreen tomato hotpink
93
93
  lightyellow lavenderblush linen mediumaquamarine green
94
94
  blueviolet peachpuff
95
- ).join('|')
95
+ )
96
96
 
97
97
  state :root do
98
98
  mixin :basics
@@ -148,9 +148,17 @@ module Rouge
148
148
  state :stanza do
149
149
  mixin :basics
150
150
  rule /}/, 'Punctuation', :pop!
151
- rule /(?:#{keywords})\s*:/m, 'Keyword', :stanza_value
152
- rule /(?:#{builtins})\s*:/m, 'Name.Builtin', :stanza_value
153
- rule /#{identifier}\s*:/m, 'Name', :stanza_value
151
+ rule /(#{identifier}\s*):/m do |m|
152
+ if keywords.include? m[1]
153
+ token 'Keyword'
154
+ elsif builtins.include? m[1]
155
+ token 'Name.Builtin'
156
+ else
157
+ token 'Name'
158
+ end
159
+
160
+ push :stanza_value
161
+ end
154
162
  end
155
163
 
156
164
  state :stanza_value do
@@ -0,0 +1,181 @@
1
+ module Rouge
2
+ module Lexers
3
+ class Python < RegexLexer
4
+ tag 'python'
5
+ aliases 'py'
6
+ extensions 'py'
7
+
8
+ keywords = %w(
9
+ assert break continue del elif else except exec
10
+ finally for global if lambda pass print raise
11
+ return try while yield as with
12
+ )
13
+
14
+ builtins = %w(
15
+ __import__ abs all any apply basestring bin bool buffer
16
+ bytearray bytes callable chr classmethod cmp coerce compile
17
+ complex delattr dict dir divmod enumerate eval execfile exit
18
+ file filter float frozenset getattr globals hasattr hash hex id
19
+ input int intern isinstance issubclass iter len list locals
20
+ long map max min next object oct open ord pow property range
21
+ raw_input reduce reload repr reversed round set setattr slice
22
+ sorted staticmethod str sum super tuple type unichr unicode
23
+ vars xrange zip
24
+ )
25
+
26
+ builtins_pseudo = %w(self None Ellipsis NotImplemented False True)
27
+
28
+ exceptions = %w(
29
+ ArithmeticError AssertionError AttributeError
30
+ BaseException DeprecationWarning EOFError EnvironmentError
31
+ Exception FloatingPointError FutureWarning GeneratorExit IOError
32
+ ImportError ImportWarning IndentationError IndexError KeyError
33
+ KeyboardInterrupt LookupError MemoryError NameError
34
+ NotImplemented NotImplementedError OSError OverflowError
35
+ OverflowWarning PendingDeprecationWarning ReferenceError
36
+ RuntimeError RuntimeWarning StandardError StopIteration
37
+ SyntaxError SyntaxWarning SystemError SystemExit TabError
38
+ TypeError UnboundLocalError UnicodeDecodeError
39
+ UnicodeEncodeError UnicodeError UnicodeTranslateError
40
+ UnicodeWarning UserWarning ValueError VMSError Warning
41
+ WindowsError ZeroDivisionError
42
+ )
43
+
44
+ identifier = /[a-z_][a-z0-9_]*/i
45
+ dotted_identifier = /[a-z_.][a-z0-9_.]*/i
46
+ state :root do
47
+ rule /\n+/m, 'Text'
48
+ rule /^(\s*)([rRuU]{,2}""".*?""")/m do
49
+ group 'Text'
50
+ group 'Literal.String.Doc'
51
+ end
52
+
53
+ rule /[^\S\n]+/, 'Text'
54
+ rule /#.*$/, 'Comment'
55
+ rule /[\[\]{}:(),;]/, 'Punctuation'
56
+ rule /\\\n/, 'Text'
57
+ rule /\\/, 'Text'
58
+
59
+ rule /(in|is|and|or|not)\b/, 'Operator.Word'
60
+ rule /!=|==|<<|>>|[-~+\/*%=<>&^|.]/, 'Operator'
61
+
62
+ rule /(?:#{keywords.join('|')})\b/, 'Keyword'
63
+
64
+ rule /(def)((?:\s|\\\s)+)/ do
65
+ group 'Keyword' # def
66
+ group 'Text' # whitespae
67
+ push :funcname
68
+ end
69
+
70
+ rule /(class)((?:\s|\\\s)+)/ do
71
+ group 'Keyword'
72
+ group 'Text'
73
+ push :classname
74
+ end
75
+
76
+ rule /(from)((?:\s|\\\s)+)/ do
77
+ group 'Keyword.Namespace'
78
+ group 'Text'
79
+ push :fromimport
80
+ end
81
+
82
+ rule /(import)((?:\s|\\\s)+)/ do
83
+ group 'Keyword.Namespace'
84
+ group 'Text'
85
+ push :import
86
+ end
87
+
88
+ # using negative lookbehind so we don't match property names
89
+ rule /(?<!\.)(?:#{builtins.join('|')})/, 'Name.Builtin'
90
+ rule /(?<!\.)(?:#{builtins_pseudo.join('|')})/, 'Name.Builtin.Pseudo'
91
+
92
+ # TODO: not in python 3
93
+ rule /`.*?`/, 'Literal.String.Backtick'
94
+ rule /(?:r|ur|ru)"""/i, 'Literal.String', :tdqs
95
+ rule /(?:r|ur|ru)'''/i, 'Literal.String', :tsqs
96
+ rule /(?:r|ur|ru)"/i, 'Literal.String', :dqs
97
+ rule /(?:r|ur|ru)'/i, 'Literal.String', :sqs
98
+ rule /u?"""/i, 'Literal.String', :escape_tdqs
99
+ rule /u?'''/i, 'Literal.String', :escape_tsqs
100
+ rule /u?"/i, 'Literal.String', :escape_dqs
101
+ rule /u?'/i, 'Literal.String', :escape_sqs
102
+
103
+ rule /@#{dotted_identifier}/i, 'Name.Decorator'
104
+ rule identifier, 'Name'
105
+
106
+ rule /(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?/i, 'Literal.Number.Float'
107
+ rule /\d+e[+-]?[0-9]+/i, 'Literal.Number.Float'
108
+ rule /0[0-7]+/, 'Literal.Number.Oct'
109
+ rule /0x[a-f0-9]+/i, 'Literal.Number.Hex'
110
+ rule /\d+L/, 'Literal.Number.Integer.Long'
111
+ rule /\d+/, 'Literal.Number.Integer'
112
+ end
113
+
114
+ state :funcname do
115
+ rule identifier, 'Name.Function', :pop!
116
+ end
117
+
118
+ state :classname do
119
+ rule identifier, 'Name.Class', :pop!
120
+ end
121
+
122
+ state :import do
123
+ # non-line-terminating whitespace
124
+ rule /(?:[ \t]|\\\n)+/, 'Text'
125
+
126
+ rule /as\b/, 'Keyword.Namespace'
127
+ rule /,/, 'Operator'
128
+ rule dotted_identifier, 'Name.Namespace'
129
+ rule(//) { pop! } # anything else -> go back
130
+ end
131
+
132
+ state :fromimport do
133
+ # non-line-terminating whitespace
134
+ rule /(?:[ \t]|\\\n)+/, 'Text'
135
+
136
+ rule /import\b/, 'Keyword.Namespace', :pop!
137
+ rule dotted_identifier, 'Name.Namespace'
138
+ end
139
+
140
+ state :strings do
141
+ rule /%(\([a-z0-9_]+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/i, 'Literal.String.Interpol'
142
+ rule /[^\\'"%\n]+/, 'Literal.String'
143
+ end
144
+
145
+ state :nl do
146
+ rule /\n/, 'Literal.String'
147
+ end
148
+
149
+ state :dqs do
150
+ rule /"/, 'Literal.String', :pop!
151
+ rule /\\\\|\\"|\\\n/, 'Literal.String.Escape'
152
+ mixin :strings
153
+ end
154
+
155
+ state :sqs do
156
+ rule /'/, 'Literal.String', :pop!
157
+ rule /\\\\|\\'|\\\n/, 'Literal.String.Escape'
158
+ mixin :strings
159
+ end
160
+
161
+ state :tdqs do
162
+ rule /"""/, 'Literal.String', :pop!
163
+ mixin :strings
164
+ mixin :nl
165
+ end
166
+
167
+ state :tsqs do
168
+ rule /'''/, 'Literal.String', :pop!
169
+ mixin :strings
170
+ mixin :nl
171
+ end
172
+
173
+ %w(tdqs tsqs dqs sqs).each do |qtype|
174
+ state :"escape_#{qtype}" do
175
+ mixin :escape
176
+ mixin :"#{qtype}"
177
+ end
178
+ end
179
+ end
180
+ end
181
+ end
@@ -1,14 +1,54 @@
1
1
  module Rouge
2
2
  class Theme
3
+ class InheritableHash < Hash
4
+ def initialize(parent=nil)
5
+ @parent = parent
6
+ end
7
+
8
+ def [](k)
9
+ _sup = super
10
+ return _sup if own_keys.include?(k)
11
+
12
+ _sup || parent[k]
13
+ end
14
+
15
+ def parent
16
+ @parent ||= {}
17
+ end
18
+
19
+ def include?(k)
20
+ super or parent.include?(k)
21
+ end
22
+
23
+ def each(&b)
24
+ keys.each do |k|
25
+ b.call(k, self[k])
26
+ end
27
+ end
28
+
29
+ alias own_keys keys
30
+ def keys
31
+ keys = own_keys.concat(parent.keys)
32
+ keys.uniq!
33
+ keys
34
+ end
35
+ end
36
+
3
37
  class Style < Hash
38
+ def initialize(theme, hsh={})
39
+ super()
40
+ @theme = theme
41
+ merge!(hsh)
42
+ end
43
+
4
44
  def render(selector, &b)
5
45
  return enum_for(:render, selector).to_a.join("\n") unless b
6
46
 
7
47
  return if empty?
8
48
 
9
49
  yield "#{selector} {"
10
- yield " color: #{self[:fg]};" if self[:fg]
11
- yield " background-color: #{self[:bg]};" if self[:bg]
50
+ yield " color: #{@theme.palette(self[:fg])};" if self[:fg]
51
+ yield " background-color: #{@theme.palette(self[:bg])};" if self[:bg]
12
52
  yield " font-weight: bold;" if self[:bold]
13
53
  yield " font-style: italic;" if self[:italic]
14
54
  yield " text-decoration: underline;" if self[:underline]
@@ -19,16 +59,40 @@ module Rouge
19
59
 
20
60
  yield "}"
21
61
  end
62
+
22
63
  end
23
64
 
24
- class << self
25
- def styles
26
- @styles ||= {}
65
+ def styles
66
+ @styles ||= self.class.styles.dup
67
+ end
68
+
69
+ @palette = {}
70
+ def self.palette(arg={})
71
+ @palette ||= InheritableHash.new(superclass.palette)
72
+
73
+ if arg.is_a? Hash
74
+ @palette.merge! arg
75
+ @palette
76
+ else
77
+ case arg
78
+ when /#[0-9a-f]+/i
79
+ arg
80
+ else
81
+ @palette[arg] or raise "not in palette: #{arg.inspect}"
82
+ end
27
83
  end
84
+ end
28
85
 
86
+ @styles = {}
87
+ def self.styles
88
+ @styles ||= InheritableHash.new(superclass.styles)
89
+ end
90
+
91
+ class << self
29
92
  def style(*tokens)
30
- style = Style.new
31
- style.merge!(tokens.pop) if tokens.last.is_a? Hash
93
+ style = tokens.last.is_a?(Hash) ? tokens.pop : {}
94
+
95
+ style = Style.new(self, style)
32
96
 
33
97
  tokens.each do |tok|
34
98
  styles[tok.to_s] = style
@@ -39,7 +103,7 @@ module Rouge
39
103
  return @name if n.nil?
40
104
 
41
105
  @name = n.to_s
42
- registry[@name] = self
106
+ Theme.registry[@name] = self
43
107
  end
44
108
 
45
109
  def find(n)
@@ -52,6 +116,27 @@ module Rouge
52
116
  end
53
117
  end
54
118
 
119
+ module HasModes
120
+ def mode(arg=:absent)
121
+ return @mode if arg == :absent
122
+
123
+ @modes ||= {}
124
+ @modes[arg] ||= get_mode(arg)
125
+ end
126
+
127
+ def get_mode(mode)
128
+ return self if self.mode == mode
129
+
130
+ new_name = "#{self.name}.#{mode}"
131
+ Class.new(self) { name(new_name); mode!(mode) }
132
+ end
133
+
134
+ def mode!(arg)
135
+ @mode = arg
136
+ send("make_#{arg}!")
137
+ end
138
+ end
139
+
55
140
  class CSSTheme < Theme
56
141
  def initialize(opts={})
57
142
  @scope = opts[:scope] || '.highlight'
@@ -60,7 +145,7 @@ module Rouge
60
145
  def render(&b)
61
146
  return enum_for(:render).to_a.join("\n") unless b
62
147
 
63
- self.class.styles.each do |tokname, style|
148
+ styles.each do |tokname, style|
64
149
  style.render(css_selector(Token[tokname]), &b)
65
150
  end
66
151
  end
@@ -92,7 +177,7 @@ module Rouge
92
177
 
93
178
  yield tok
94
179
  tok.sub_tokens.each_value do |st|
95
- next if self.class.styles.include? st.name
180
+ next if styles[st.name]
96
181
 
97
182
  inflate_token(st, &b)
98
183
  end
@@ -0,0 +1,128 @@
1
+ module Rouge
2
+ module Themes
3
+ # default base16 theme
4
+ # by Chris Kempson (http://chriskempson.com)
5
+ class Base16 < CSSTheme
6
+ name 'base16'
7
+
8
+ palette base00: "#151515"
9
+ palette base01: "#202020"
10
+ palette base02: "#303030"
11
+ palette base03: "#505050"
12
+ palette base04: "#b0b0b0"
13
+ palette base05: "#d0d0d0"
14
+ palette base06: "#e0e0e0"
15
+ palette base07: "#f5f5f5"
16
+ palette base08: "#ac4142"
17
+ palette base09: "#d28445"
18
+ palette base0A: "#f4bf75"
19
+ palette base0B: "#90a959"
20
+ palette base0C: "#75b5aa"
21
+ palette base0D: "#6a9fb5"
22
+ palette base0E: "#aa759f"
23
+ palette base0F: "#8f5536"
24
+
25
+ extend HasModes
26
+
27
+ def self.light!
28
+ mode :dark # indicate that there is a dark variant
29
+ mode! :light
30
+ end
31
+
32
+ def self.dark!
33
+ mode :light # indicate that there is a light variant
34
+ mode! :dark
35
+ end
36
+
37
+ def self.make_dark!
38
+ style 'Text', :fg => :base05, :bg => :base00
39
+ end
40
+
41
+ def self.make_light!
42
+ style 'Text', :fg => :base02
43
+ end
44
+
45
+ light!
46
+
47
+ style 'Error', :fg => :base00, :bg => :base08
48
+ style 'Comment', :fg => :base03
49
+
50
+ style 'Comment.Preproc',
51
+ 'Name.Tag', :fg => :base0A
52
+
53
+ style 'Operator',
54
+ 'Punctuation', :fg => :base05
55
+
56
+ style 'Generic.Inserted', :fg => :base0B
57
+ style 'Generic.Removed', :fg => :base08
58
+ style 'Generic.Heading', :fg => :base0D, :bg => :base00, :bold => true
59
+
60
+ style 'Keyword', :fg => :base0E
61
+ style 'Keyword.Constant',
62
+ 'Keyword.Type', :fg => :base09
63
+
64
+ style 'Keyword.Declaration', :fg => :base09
65
+
66
+ style 'Literal.String', :fg => :base0B
67
+ style 'Literal.String.Regex', :fg => :base0C
68
+
69
+ style 'Literal.String.Interpol',
70
+ 'Literal.String.Escape', :fg => :base0F
71
+
72
+ style 'Name.Namespace',
73
+ 'Name.Class',
74
+ 'Name.Constant', :fg => :base0A
75
+
76
+ style 'Name.Attribute', :fg => :base0D
77
+
78
+ style 'Literal.Number',
79
+ 'Literal.String.Symbol', :fg => :base0B
80
+
81
+ class Solarized < Base16
82
+ name 'base16.solarized'
83
+ light!
84
+ # author "Ethan Schoonover (http://ethanschoonover.com/solarized)"
85
+
86
+ palette base00: "#002b36"
87
+ palette base01: "#073642"
88
+ palette base02: "#586e75"
89
+ palette base03: "#657b83"
90
+ palette base04: "#839496"
91
+ palette base05: "#93a1a1"
92
+ palette base06: "#eee8d5"
93
+ palette base07: "#fdf6e3"
94
+ palette base08: "#dc322f"
95
+ palette base09: "#cb4b16"
96
+ palette base0A: "#b58900"
97
+ palette base0B: "#859900"
98
+ palette base0C: "#2aa198"
99
+ palette base0D: "#268bd2"
100
+ palette base0E: "#6c71c4"
101
+ palette base0F: "#d33682"
102
+ end
103
+
104
+ class Monokai < Base16
105
+ name 'base16.monokai'
106
+ dark!
107
+
108
+ # author "Wimer Hazenberg (http://www.monokai.nl)"
109
+ palette base00: "#272822"
110
+ palette base01: "#383830"
111
+ palette base02: "#49483e"
112
+ palette base03: "#75715e"
113
+ palette base04: "#a59f85"
114
+ palette base05: "#f8f8f2"
115
+ palette base06: "#f5f4f1"
116
+ palette base07: "#f9f8f5"
117
+ palette base08: "#f92672"
118
+ palette base09: "#fd971f"
119
+ palette base0A: "#f4bf75"
120
+ palette base0B: "#a6e22e"
121
+ palette base0C: "#a1efe4"
122
+ palette base0D: "#66d9ef"
123
+ palette base0E: "#ae81ff"
124
+ palette base0F: "#cc6633"
125
+ end
126
+ end
127
+ end
128
+ end
@@ -2,62 +2,64 @@ module Rouge
2
2
  module Themes
3
3
  # stolen from pygments
4
4
  class Colorful < CSSTheme
5
- style 'Text', :fg => "#bbbbbb", :bg => 'black'
6
-
7
- style 'Comment', :fg => "#888"
8
- style 'Comment.Preproc', :fg => "#579"
9
- style 'Comment.Special', :fg => "#cc0000", :bold => true
10
-
11
- style 'Keyword', :fg => "#080", :bold => true
12
- style 'Keyword.Pseudo', :fg => "#038"
13
- style 'Keyword.Type', :fg => "#339"
14
-
15
- style 'Operator', :fg => "#333"
16
- style 'Operator.Word', :fg => "#000", :bold => true
17
-
18
- style 'Name.Builtin', :fg => "#007020"
19
- style 'Name.Function', :fg => "#06B", :bold => true
20
- style 'Name.Class', :fg => "#B06", :bold => true
21
- style 'Name.Namespace', :fg => "#0e84b5", :bold => true
22
- style 'Name.Exception', :fg => "#F00", :bold => true
23
- style 'Name.Variable', :fg => "#963"
24
- style 'Name.Variable.Instance', :fg => "#33B"
25
- style 'Name.Variable.Class', :fg => "#369"
26
- style 'Name.Variable.Global', :fg => "#d70", :bold => true
27
- style 'Name.Constant', :fg => "#036", :bold => true
28
- style 'Name.Label', :fg => "#970", :bold => true
29
- style 'Name.Entity', :fg => "#800", :bold => true
30
- style 'Name.Attribute', :fg => "#00C"
31
- style 'Name.Tag', :fg => "#070"
32
- style 'Name.Decorator', :fg => "#555", :bold => true
33
-
34
- style 'Literal.String', :bg => "#fff0f0"
35
- style 'Literal.String.Char', :fg => "#04D"
36
- style 'Literal.String.Doc', :fg => "#D42"
37
- style 'Literal.String.Interpol', :bg => "#eee"
38
- style 'Literal.String.Escape', :fg => "#666", :bold => true
39
- style 'Literal.String.Regex', :fg => "#000", :bg => "#fff0ff"
40
- style 'Literal.String.Symbol', :fg => "#A60"
41
- style 'Literal.String.Other', :fg => "#D20"
42
-
43
- style 'Literal.Number', :fg => "#60E", :bold => true
44
- style 'Literal.Number.Integer', :fg => "#00D", :bold => true
45
- style 'Literal.Number.Float', :fg => "#60E", :bold => true
46
- style 'Literal.Number.Hex', :fg => "#058", :bold => true
47
- style 'Literal.Number.Oct', :fg => "#40E", :bold => true
48
-
49
- style 'Generic.Heading', :fg => "#000080", :bold => true
50
- style 'Generic.Subheading', :fg => "#800080", :bold => true
51
- style 'Generic.Deleted', :fg => "#A00000"
52
- style 'Generic.Inserted', :fg => "#00A000"
53
- style 'Generic.Error', :fg => "#FF0000"
54
- style 'Generic.Emph', :italic => true
55
- style 'Generic.Strong', :bold => true
56
- style 'Generic.Prompt', :fg => "#c65d09", :bold => true
57
- style 'Generic.Output', :fg => "#888"
58
- style 'Generic.Traceback', :fg => "#04D"
59
-
60
- style 'Error', :fg => "#F00", :bg => "#FAA"
5
+ name 'colorful'
6
+
7
+ style 'Text', :fg => "#bbbbbb", :bg => 'black'
8
+
9
+ style 'Comment', :fg => "#888"
10
+ style 'Comment.Preproc', :fg => "#579"
11
+ style 'Comment.Special', :fg => "#cc0000", :bold => true
12
+
13
+ style 'Keyword', :fg => "#080", :bold => true
14
+ style 'Keyword.Pseudo', :fg => "#038"
15
+ style 'Keyword.Type', :fg => "#339"
16
+
17
+ style 'Operator', :fg => "#333"
18
+ style 'Operator.Word', :fg => "#000", :bold => true
19
+
20
+ style 'Name.Builtin', :fg => "#007020"
21
+ style 'Name.Function', :fg => "#06B", :bold => true
22
+ style 'Name.Class', :fg => "#B06", :bold => true
23
+ style 'Name.Namespace', :fg => "#0e84b5", :bold => true
24
+ style 'Name.Exception', :fg => "#F00", :bold => true
25
+ style 'Name.Variable', :fg => "#963"
26
+ style 'Name.Variable.Instance', :fg => "#33B"
27
+ style 'Name.Variable.Class', :fg => "#369"
28
+ style 'Name.Variable.Global', :fg => "#d70", :bold => true
29
+ style 'Name.Constant', :fg => "#036", :bold => true
30
+ style 'Name.Label', :fg => "#970", :bold => true
31
+ style 'Name.Entity', :fg => "#800", :bold => true
32
+ style 'Name.Attribute', :fg => "#00C"
33
+ style 'Name.Tag', :fg => "#070"
34
+ style 'Name.Decorator', :fg => "#555", :bold => true
35
+
36
+ style 'Literal.String', :bg => "#fff0f0"
37
+ style 'Literal.String.Char', :fg => "#04D"
38
+ style 'Literal.String.Doc', :fg => "#D42"
39
+ style 'Literal.String.Interpol', :bg => "#eee"
40
+ style 'Literal.String.Escape', :fg => "#666", :bold => true
41
+ style 'Literal.String.Regex', :fg => "#000", :bg => "#fff0ff"
42
+ style 'Literal.String.Symbol', :fg => "#A60"
43
+ style 'Literal.String.Other', :fg => "#D20"
44
+
45
+ style 'Literal.Number', :fg => "#60E", :bold => true
46
+ style 'Literal.Number.Integer', :fg => "#00D", :bold => true
47
+ style 'Literal.Number.Float', :fg => "#60E", :bold => true
48
+ style 'Literal.Number.Hex', :fg => "#058", :bold => true
49
+ style 'Literal.Number.Oct', :fg => "#40E", :bold => true
50
+
51
+ style 'Generic.Heading', :fg => "#000080", :bold => true
52
+ style 'Generic.Subheading', :fg => "#800080", :bold => true
53
+ style 'Generic.Deleted', :fg => "#A00000"
54
+ style 'Generic.Inserted', :fg => "#00A000"
55
+ style 'Generic.Error', :fg => "#FF0000"
56
+ style 'Generic.Emph', :italic => true
57
+ style 'Generic.Strong', :bold => true
58
+ style 'Generic.Prompt', :fg => "#c65d09", :bold => true
59
+ style 'Generic.Output', :fg => "#888"
60
+ style 'Generic.Traceback', :fg => "#04D"
61
+
62
+ style 'Error', :fg => "#F00", :bg => "#FAA"
61
63
  end
62
64
  end
63
65
  end
@@ -1,45 +1,47 @@
1
1
  module Rouge
2
2
  module Themes
3
3
  class ThankfulEyes < CSSTheme
4
+ name 'thankful_eyes'
5
+
4
6
  # pallette, from GTKSourceView's ThankfulEyes
5
- cool_as_ice = '#6c8b9f'
6
- slate_blue = '#4e5d62'
7
- eggshell_cloud = '#dee5e7'
8
- krasna = '#122b3b'
9
- aluminum1 = '#fefeec'
10
- scarletred2 = '#cc0000'
11
- butter3 = '#c4a000'
12
- go_get_it = '#b2fd6d'
13
- chilly = '#a8e1fe'
14
- unicorn = '#faf6e4'
15
- sandy = '#f6dd62'
16
- pink_merengue = '#f696db'
17
- dune = '#fff0a6'
18
- backlit = '#4df4ff'
19
- schrill = '#ffb000'
7
+ palette :cool_as_ice => '#6c8b9f'
8
+ palette :slate_blue => '#4e5d62'
9
+ palette :eggshell_cloud => '#dee5e7'
10
+ palette :krasna => '#122b3b'
11
+ palette :aluminum1 => '#fefeec'
12
+ palette :scarletred2 => '#cc0000'
13
+ palette :butter3 => '#c4a000'
14
+ palette :go_get_it => '#b2fd6d'
15
+ palette :chilly => '#a8e1fe'
16
+ palette :unicorn => '#faf6e4'
17
+ palette :sandy => '#f6dd62'
18
+ palette :pink_merengue => '#f696db'
19
+ palette :dune => '#fff0a6'
20
+ palette :backlit => '#4df4ff'
21
+ palette :schrill => '#ffb000'
20
22
 
21
- style 'Text', :fg => unicorn, :bg => krasna
23
+ style 'Text', :fg => :unicorn, :bg => :krasna
22
24
 
23
- style 'Comment', :fg => cool_as_ice
25
+ style 'Comment', :fg => :cool_as_ice
24
26
  style 'Error',
25
- 'Generic.Error', :fg => aluminum1, :bg => scarletred2
26
- style 'Keyword', :fg => sandy, :bold => true
27
+ 'Generic.Error', :fg => :aluminum1, :bg => :scarletred2
28
+ style 'Keyword', :fg => :sandy, :bold => true
27
29
  style 'Operator',
28
- 'Punctuation', :fg => backlit, :bold => true
30
+ 'Punctuation', :fg => :backlit, :bold => true
29
31
  style 'Comment.Preproc',
30
32
  'Comment.Multiline',
31
33
  'Comment.Single',
32
- 'Comment.Special', :fg => cool_as_ice, :italic => true
33
- style 'Generic.Deleted', :fg => scarletred2
34
- style 'Generic.Inserted', :fg => go_get_it
34
+ 'Comment.Special', :fg => :cool_as_ice, :italic => true
35
+ style 'Generic.Deleted', :fg => :scarletred2
36
+ style 'Generic.Inserted', :fg => :go_get_it
35
37
  style 'Generic.Emph', :italic => true
36
38
  style 'Generic.Subheading', :fg => '#800080', :bold => true
37
39
  style 'Generic.Traceback', :fg => '#0040D0'
38
- style 'Keyword.Constant', :fg => pink_merengue, :bold => true
40
+ style 'Keyword.Constant', :fg => :pink_merengue, :bold => true
39
41
  style 'Keyword.Namespace',
40
42
  'Keyword.Pseudo',
41
43
  'Keyword.Reserved',
42
- 'Generic.Heading', :fg => schrill, :bold => true
44
+ 'Generic.Heading', :fg => :schrill, :bold => true
43
45
  style 'Keyword.Type',
44
46
  'Name.Constant',
45
47
  'Name.Class',
@@ -47,21 +49,21 @@ module Rouge
47
49
  'Name.Namespace',
48
50
  'Name.Builtin.Pseudo',
49
51
  'Name.Exception',
50
- 'Name.Tag', :fg => go_get_it, :bold => true
51
- style 'Literal.Number', :fg => pink_merengue, :bold => true
52
- style 'Literal.String', :fg => dune, :bold => true
52
+ 'Name.Tag', :fg => :go_get_it, :bold => true
53
+ style 'Literal.Number', :fg => :pink_merengue, :bold => true
54
+ style 'Literal.String', :fg => :dune, :bold => true
53
55
  style 'Literal.String.Escape',
54
56
  'Literal.String.Char',
55
57
  'Literal.String.Interpol',
56
58
  'Literal.String.Other',
57
- 'Literal.String.Symbol', :fg => backlit, :bold => true
58
- style 'Name.Builtin', :fg => sandy
59
+ 'Literal.String.Symbol', :fg => :backlit, :bold => true
60
+ style 'Name.Builtin', :fg => :sandy
59
61
  style 'Name.Entity', :fg => '#999999', :bold => true
60
62
  style 'Text.Whitespace', :fg => '#BBBBBB'
61
63
  style 'Name.Variable',
62
64
  'Name.Function',
63
65
  'Name.Label',
64
- 'Name.Attribute', :fg => chilly
66
+ 'Name.Attribute', :fg => :chilly
65
67
  end
66
68
  end
67
69
  end
@@ -1,5 +1,5 @@
1
1
  module Rouge
2
2
  def self.version
3
- "0.0.5"
3
+ "0.0.6"
4
4
  end
5
5
  end
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.0.5
4
+ version: 0.0.6
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-09-04 00:00:00.000000000 Z
12
+ date: 2012-09-06 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Rouge aims to a be a simple, easy-to-extend drop-in replacement for pygments.
15
15
  email:
@@ -19,6 +19,7 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - Gemfile
22
+ - lib/rouge/lexers/python.rb
22
23
  - lib/rouge/lexers/shell.rb
23
24
  - lib/rouge/lexers/javascript.rb
24
25
  - lib/rouge/lexers/diff.rb
@@ -29,6 +30,7 @@ files:
29
30
  - lib/rouge/plugins/redcarpet.rb
30
31
  - lib/rouge/themes/thankful_eyes.rb
31
32
  - lib/rouge/themes/colorful.rb
33
+ - lib/rouge/themes/base16.rb
32
34
  - lib/rouge/token.rb
33
35
  - lib/rouge/formatters/html.rb
34
36
  - lib/rouge/version.rb