gitlab-rouge 1.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +23 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +16 -0
  5. data/gitlab-rouge.gemspec +17 -0
  6. data/lib/rouge.rb +57 -0
  7. data/lib/rouge/cli.rb +363 -0
  8. data/lib/rouge/demos/apache +21 -0
  9. data/lib/rouge/demos/applescript +2 -0
  10. data/lib/rouge/demos/c +8 -0
  11. data/lib/rouge/demos/clojure +5 -0
  12. data/lib/rouge/demos/coffeescript +5 -0
  13. data/lib/rouge/demos/common_lisp +1 -0
  14. data/lib/rouge/demos/conf +4 -0
  15. data/lib/rouge/demos/cpp +8 -0
  16. data/lib/rouge/demos/csharp +5 -0
  17. data/lib/rouge/demos/css +4 -0
  18. data/lib/rouge/demos/dart +6 -0
  19. data/lib/rouge/demos/diff +7 -0
  20. data/lib/rouge/demos/elixir +1 -0
  21. data/lib/rouge/demos/erb +1 -0
  22. data/lib/rouge/demos/erlang +7 -0
  23. data/lib/rouge/demos/factor +5 -0
  24. data/lib/rouge/demos/gherkin +17 -0
  25. data/lib/rouge/demos/glsl +14 -0
  26. data/lib/rouge/demos/go +7 -0
  27. data/lib/rouge/demos/groovy +9 -0
  28. data/lib/rouge/demos/haml +5 -0
  29. data/lib/rouge/demos/handlebars +7 -0
  30. data/lib/rouge/demos/haskell +6 -0
  31. data/lib/rouge/demos/html +8 -0
  32. data/lib/rouge/demos/http +14 -0
  33. data/lib/rouge/demos/ini +4 -0
  34. data/lib/rouge/demos/io +11 -0
  35. data/lib/rouge/demos/java +5 -0
  36. data/lib/rouge/demos/javascript +1 -0
  37. data/lib/rouge/demos/json +1 -0
  38. data/lib/rouge/demos/json-doc +1 -0
  39. data/lib/rouge/demos/liquid +11 -0
  40. data/lib/rouge/demos/literate_coffeescript +3 -0
  41. data/lib/rouge/demos/literate_haskell +7 -0
  42. data/lib/rouge/demos/llvm +20 -0
  43. data/lib/rouge/demos/lua +12 -0
  44. data/lib/rouge/demos/make +6 -0
  45. data/lib/rouge/demos/markdown +4 -0
  46. data/lib/rouge/demos/matlab +6 -0
  47. data/lib/rouge/demos/moonscript +16 -0
  48. data/lib/rouge/demos/nginx +5 -0
  49. data/lib/rouge/demos/nim +27 -0
  50. data/lib/rouge/demos/objective_c +14 -0
  51. data/lib/rouge/demos/ocaml +12 -0
  52. data/lib/rouge/demos/perl +5 -0
  53. data/lib/rouge/demos/php +3 -0
  54. data/lib/rouge/demos/plaintext +1 -0
  55. data/lib/rouge/demos/powershell +49 -0
  56. data/lib/rouge/demos/prolog +9 -0
  57. data/lib/rouge/demos/properties +7 -0
  58. data/lib/rouge/demos/puppet +6 -0
  59. data/lib/rouge/demos/python +6 -0
  60. data/lib/rouge/demos/qml +9 -0
  61. data/lib/rouge/demos/r +8 -0
  62. data/lib/rouge/demos/racket +24 -0
  63. data/lib/rouge/demos/ruby +9 -0
  64. data/lib/rouge/demos/rust +12 -0
  65. data/lib/rouge/demos/sass +3 -0
  66. data/lib/rouge/demos/scala +3 -0
  67. data/lib/rouge/demos/scheme +4 -0
  68. data/lib/rouge/demos/scss +5 -0
  69. data/lib/rouge/demos/sed +4 -0
  70. data/lib/rouge/demos/shell +2 -0
  71. data/lib/rouge/demos/slim +17 -0
  72. data/lib/rouge/demos/smalltalk +6 -0
  73. data/lib/rouge/demos/sml +4 -0
  74. data/lib/rouge/demos/sql +1 -0
  75. data/lib/rouge/demos/swift +5 -0
  76. data/lib/rouge/demos/tcl +1 -0
  77. data/lib/rouge/demos/tex +1 -0
  78. data/lib/rouge/demos/toml +9 -0
  79. data/lib/rouge/demos/tulip +14 -0
  80. data/lib/rouge/demos/vb +4 -0
  81. data/lib/rouge/demos/viml +5 -0
  82. data/lib/rouge/demos/xml +2 -0
  83. data/lib/rouge/demos/yaml +4 -0
  84. data/lib/rouge/formatter.rb +50 -0
  85. data/lib/rouge/formatters/html.rb +117 -0
  86. data/lib/rouge/formatters/null.rb +19 -0
  87. data/lib/rouge/formatters/terminal256.rb +176 -0
  88. data/lib/rouge/lexer.rb +443 -0
  89. data/lib/rouge/lexers/apache.rb +68 -0
  90. data/lib/rouge/lexers/apache/keywords.yml +453 -0
  91. data/lib/rouge/lexers/apple_script.rb +367 -0
  92. data/lib/rouge/lexers/c.rb +212 -0
  93. data/lib/rouge/lexers/clojure.rb +112 -0
  94. data/lib/rouge/lexers/coffeescript.rb +174 -0
  95. data/lib/rouge/lexers/common_lisp.rb +345 -0
  96. data/lib/rouge/lexers/conf.rb +24 -0
  97. data/lib/rouge/lexers/cpp.rb +66 -0
  98. data/lib/rouge/lexers/csharp.rb +88 -0
  99. data/lib/rouge/lexers/css.rb +271 -0
  100. data/lib/rouge/lexers/dart.rb +104 -0
  101. data/lib/rouge/lexers/diff.rb +31 -0
  102. data/lib/rouge/lexers/elixir.rb +108 -0
  103. data/lib/rouge/lexers/erb.rb +56 -0
  104. data/lib/rouge/lexers/erlang.rb +118 -0
  105. data/lib/rouge/lexers/factor.rb +302 -0
  106. data/lib/rouge/lexers/gherkin.rb +137 -0
  107. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  108. data/lib/rouge/lexers/glsl.rb +135 -0
  109. data/lib/rouge/lexers/go.rb +178 -0
  110. data/lib/rouge/lexers/groovy.rb +104 -0
  111. data/lib/rouge/lexers/haml.rb +228 -0
  112. data/lib/rouge/lexers/handlebars.rb +79 -0
  113. data/lib/rouge/lexers/haskell.rb +183 -0
  114. data/lib/rouge/lexers/html.rb +94 -0
  115. data/lib/rouge/lexers/http.rb +80 -0
  116. data/lib/rouge/lexers/ini.rb +57 -0
  117. data/lib/rouge/lexers/io.rb +68 -0
  118. data/lib/rouge/lexers/java.rb +76 -0
  119. data/lib/rouge/lexers/javascript.rb +297 -0
  120. data/lib/rouge/lexers/liquid.rb +287 -0
  121. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  122. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  123. data/lib/rouge/lexers/llvm.rb +84 -0
  124. data/lib/rouge/lexers/lua.rb +122 -0
  125. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  126. data/lib/rouge/lexers/make.rb +116 -0
  127. data/lib/rouge/lexers/markdown.rb +154 -0
  128. data/lib/rouge/lexers/matlab.rb +74 -0
  129. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  130. data/lib/rouge/lexers/moonscript.rb +110 -0
  131. data/lib/rouge/lexers/nginx.rb +71 -0
  132. data/lib/rouge/lexers/nim.rb +152 -0
  133. data/lib/rouge/lexers/objective_c.rb +197 -0
  134. data/lib/rouge/lexers/ocaml.rb +111 -0
  135. data/lib/rouge/lexers/perl.rb +197 -0
  136. data/lib/rouge/lexers/php.rb +173 -0
  137. data/lib/rouge/lexers/php/builtins.rb +204 -0
  138. data/lib/rouge/lexers/plain_text.rb +25 -0
  139. data/lib/rouge/lexers/powershell.rb +96 -0
  140. data/lib/rouge/lexers/prolog.rb +64 -0
  141. data/lib/rouge/lexers/properties.rb +55 -0
  142. data/lib/rouge/lexers/puppet.rb +128 -0
  143. data/lib/rouge/lexers/python.rb +228 -0
  144. data/lib/rouge/lexers/qml.rb +72 -0
  145. data/lib/rouge/lexers/r.rb +56 -0
  146. data/lib/rouge/lexers/racket.rb +542 -0
  147. data/lib/rouge/lexers/ruby.rb +415 -0
  148. data/lib/rouge/lexers/rust.rb +191 -0
  149. data/lib/rouge/lexers/sass.rb +74 -0
  150. data/lib/rouge/lexers/sass/common.rb +180 -0
  151. data/lib/rouge/lexers/scala.rb +142 -0
  152. data/lib/rouge/lexers/scheme.rb +112 -0
  153. data/lib/rouge/lexers/scss.rb +34 -0
  154. data/lib/rouge/lexers/sed.rb +170 -0
  155. data/lib/rouge/lexers/shell.rb +152 -0
  156. data/lib/rouge/lexers/slim.rb +228 -0
  157. data/lib/rouge/lexers/smalltalk.rb +116 -0
  158. data/lib/rouge/lexers/sml.rb +347 -0
  159. data/lib/rouge/lexers/sql.rb +140 -0
  160. data/lib/rouge/lexers/swift.rb +144 -0
  161. data/lib/rouge/lexers/tcl.rb +192 -0
  162. data/lib/rouge/lexers/tex.rb +72 -0
  163. data/lib/rouge/lexers/toml.rb +71 -0
  164. data/lib/rouge/lexers/tulip.rb +75 -0
  165. data/lib/rouge/lexers/vb.rb +164 -0
  166. data/lib/rouge/lexers/viml.rb +101 -0
  167. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  168. data/lib/rouge/lexers/xml.rb +59 -0
  169. data/lib/rouge/lexers/yaml.rb +364 -0
  170. data/lib/rouge/plugins/redcarpet.rb +30 -0
  171. data/lib/rouge/regex_lexer.rb +439 -0
  172. data/lib/rouge/template_lexer.rb +22 -0
  173. data/lib/rouge/text_analyzer.rb +48 -0
  174. data/lib/rouge/theme.rb +195 -0
  175. data/lib/rouge/themes/base16.rb +130 -0
  176. data/lib/rouge/themes/colorful.rb +67 -0
  177. data/lib/rouge/themes/github.rb +71 -0
  178. data/lib/rouge/themes/molokai.rb +82 -0
  179. data/lib/rouge/themes/monokai.rb +92 -0
  180. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  181. data/lib/rouge/themes/thankful_eyes.rb +71 -0
  182. data/lib/rouge/token.rb +182 -0
  183. data/lib/rouge/util.rb +101 -0
  184. data/lib/rouge/version.rb +7 -0
  185. metadata +231 -0
@@ -0,0 +1,48 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ class TextAnalyzer < String
5
+ # Find a shebang. Returns nil if no shebang is present.
6
+ def shebang
7
+ return @shebang if instance_variable_defined? :@shebang
8
+
9
+ self =~ /\A\s*#!(.*)$/
10
+ @shebang = $1
11
+ end
12
+
13
+ # Check if the given shebang is present.
14
+ #
15
+ # This normalizes things so that `text.shebang?('bash')` will detect
16
+ # `#!/bash`, '#!/bin/bash', '#!/usr/bin/env bash', and '#!/bin/bash -x'
17
+ def shebang?(match)
18
+ match = /\b#{match}(\s|$)/
19
+ match === shebang
20
+ end
21
+
22
+ # Return the contents of the doctype tag if present, nil otherwise.
23
+ def doctype
24
+ return @doctype if instance_variable_defined? :@doctype
25
+
26
+ self =~ %r(\A\s*
27
+ (?:<\?.*?\?>\s*)? # possible <?xml...?> tag
28
+ <!DOCTYPE\s+(.+?)>
29
+ )xm
30
+ @doctype = $1
31
+ end
32
+
33
+ # Check if the doctype matches a given regexp or string
34
+ def doctype?(type=//)
35
+ type === doctype
36
+ end
37
+
38
+ # Return true if the result of lexing with the given lexer contains no
39
+ # error tokens.
40
+ def lexes_cleanly?(lexer)
41
+ lexer.lex(self) do |(tok, _)|
42
+ return false if tok.name == 'Error'
43
+ end
44
+
45
+ true
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,195 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ class Theme
5
+ include Token::Tokens
6
+
7
+ class Style < Hash
8
+ def initialize(theme, hsh={})
9
+ super()
10
+ @theme = theme
11
+ merge!(hsh)
12
+ end
13
+
14
+ [:fg, :bg].each do |mode|
15
+ define_method mode do
16
+ return self[mode] unless @theme
17
+ @theme.palette(self[mode]) if self[mode]
18
+ end
19
+ end
20
+
21
+ def render(selector, &b)
22
+ return enum_for(:render, selector).to_a.join("\n") unless b
23
+
24
+ return if empty?
25
+
26
+ yield "#{selector} {"
27
+ rendered_rules.each do |rule|
28
+ yield " #{rule};"
29
+ end
30
+ yield "}"
31
+ end
32
+
33
+ def rendered_rules(&b)
34
+ return enum_for(:rendered_rules) unless b
35
+ yield "color: #{fg}" if fg
36
+ yield "background-color: #{bg}" if bg
37
+ yield "font-weight: bold" if self[:bold]
38
+ yield "font-style: italic" if self[:italic]
39
+ yield "text-decoration: underline" if self[:underline]
40
+
41
+ (self[:rules] || []).each(&b)
42
+ end
43
+ end
44
+
45
+ def styles
46
+ @styles ||= self.class.styles.dup
47
+ end
48
+
49
+ @palette = {}
50
+ def self.palette(arg={})
51
+ @palette ||= InheritableHash.new(superclass.palette)
52
+
53
+ if arg.is_a? Hash
54
+ @palette.merge! arg
55
+ @palette
56
+ else
57
+ case arg
58
+ when /#[0-9a-f]+/i
59
+ arg
60
+ else
61
+ @palette[arg] or raise "not in palette: #{arg.inspect}"
62
+ end
63
+ end
64
+ end
65
+
66
+ @styles = {}
67
+ def self.styles
68
+ @styles ||= InheritableHash.new(superclass.styles)
69
+ end
70
+
71
+ def self.render(opts={}, &b)
72
+ new(opts).render(&b)
73
+ end
74
+
75
+ class << self
76
+ def style(*tokens)
77
+ style = tokens.last.is_a?(Hash) ? tokens.pop : {}
78
+
79
+ style = Style.new(self, style)
80
+
81
+ tokens.each do |tok|
82
+ styles[tok] = style
83
+ end
84
+ end
85
+
86
+ def get_own_style(token)
87
+ token.token_chain.each do |anc|
88
+ return styles[anc] if styles[anc]
89
+ end
90
+
91
+ nil
92
+ end
93
+
94
+ def get_style(token)
95
+ get_own_style(token) || base_style
96
+ end
97
+
98
+ def base_style
99
+ styles[Token::Tokens::Text]
100
+ end
101
+
102
+ def name(n=nil)
103
+ return @name if n.nil?
104
+
105
+ @name = n.to_s
106
+ Theme.registry[@name] = self
107
+ end
108
+
109
+ def find(n)
110
+ registry[n.to_s]
111
+ end
112
+
113
+ def registry
114
+ @registry ||= {}
115
+ end
116
+ end
117
+ end
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
+
140
+ class CSSTheme < Theme
141
+ def initialize(opts={})
142
+ @scope = opts[:scope] || '.highlight'
143
+ end
144
+
145
+ def render(&b)
146
+ return enum_for(:render).to_a.join("\n") unless b
147
+
148
+ # shared styles for tableized line numbers
149
+ yield "#{@scope} table td { padding: 5px; }"
150
+ yield "#{@scope} table pre { margin: 0; }"
151
+
152
+ styles.each do |tok, style|
153
+ style.render(css_selector(tok), &b)
154
+ end
155
+ end
156
+
157
+ def render_base(selector, &b)
158
+ self.class.base_style.render(selector, &b)
159
+ end
160
+
161
+ def style_for(tok)
162
+ self.class.get_style(tok)
163
+ end
164
+
165
+ private
166
+ def css_selector(token)
167
+ inflate_token(token).map do |tok|
168
+ raise "unknown token: #{tok.inspect}" if tok.shortname.nil?
169
+
170
+ single_css_selector(tok)
171
+ end.join(', ')
172
+ end
173
+
174
+ def single_css_selector(token)
175
+ return @scope if token == Text
176
+
177
+ "#{@scope} .#{token.shortname}"
178
+ end
179
+
180
+ # yield all of the tokens that should be styled the same
181
+ # as the given token. Essentially this recursively all of
182
+ # the subtokens, except those which are more specifically
183
+ # styled.
184
+ def inflate_token(tok, &b)
185
+ return enum_for(:inflate_token, tok) unless block_given?
186
+
187
+ yield tok
188
+ tok.sub_tokens.each do |(_, st)|
189
+ next if styles[st]
190
+
191
+ inflate_token(st, &b)
192
+ end
193
+ end
194
+ end
195
+ end
@@ -0,0 +1,130 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Themes
5
+ # default base16 theme
6
+ # by Chris Kempson (http://chriskempson.com)
7
+ class Base16 < CSSTheme
8
+ name 'base16'
9
+
10
+ palette base00: "#151515"
11
+ palette base01: "#202020"
12
+ palette base02: "#303030"
13
+ palette base03: "#505050"
14
+ palette base04: "#b0b0b0"
15
+ palette base05: "#d0d0d0"
16
+ palette base06: "#e0e0e0"
17
+ palette base07: "#f5f5f5"
18
+ palette base08: "#ac4142"
19
+ palette base09: "#d28445"
20
+ palette base0A: "#f4bf75"
21
+ palette base0B: "#90a959"
22
+ palette base0C: "#75b5aa"
23
+ palette base0D: "#6a9fb5"
24
+ palette base0E: "#aa759f"
25
+ palette base0F: "#8f5536"
26
+
27
+ extend HasModes
28
+
29
+ def self.light!
30
+ mode :dark # indicate that there is a dark variant
31
+ mode! :light
32
+ end
33
+
34
+ def self.dark!
35
+ mode :light # indicate that there is a light variant
36
+ mode! :dark
37
+ end
38
+
39
+ def self.make_dark!
40
+ style Text, :fg => :base05, :bg => :base00
41
+ end
42
+
43
+ def self.make_light!
44
+ style Text, :fg => :base02
45
+ end
46
+
47
+ light!
48
+
49
+ style Error, :fg => :base00, :bg => :base08
50
+ style Comment, :fg => :base03
51
+
52
+ style Comment::Preproc,
53
+ Name::Tag, :fg => :base0A
54
+
55
+ style Operator,
56
+ Punctuation, :fg => :base05
57
+
58
+ style Generic::Inserted, :fg => :base0B
59
+ style Generic::Deleted, :fg => :base08
60
+ style Generic::Heading, :fg => :base0D, :bg => :base00, :bold => true
61
+
62
+ style Keyword, :fg => :base0E
63
+ style Keyword::Constant,
64
+ Keyword::Type, :fg => :base09
65
+
66
+ style Keyword::Declaration, :fg => :base09
67
+
68
+ style Literal::String, :fg => :base0B
69
+ style Literal::String::Regex, :fg => :base0C
70
+
71
+ style Literal::String::Interpol,
72
+ Literal::String::Escape, :fg => :base0F
73
+
74
+ style Name::Namespace,
75
+ Name::Class,
76
+ Name::Constant, :fg => :base0A
77
+
78
+ style Name::Attribute, :fg => :base0D
79
+
80
+ style Literal::Number,
81
+ Literal::String::Symbol, :fg => :base0B
82
+
83
+ class Solarized < Base16
84
+ name 'base16.solarized'
85
+ light!
86
+ # author "Ethan Schoonover (http://ethanschoonover.com/solarized)"
87
+
88
+ palette base00: "#002b36"
89
+ palette base01: "#073642"
90
+ palette base02: "#586e75"
91
+ palette base03: "#657b83"
92
+ palette base04: "#839496"
93
+ palette base05: "#93a1a1"
94
+ palette base06: "#eee8d5"
95
+ palette base07: "#fdf6e3"
96
+ palette base08: "#dc322f"
97
+ palette base09: "#cb4b16"
98
+ palette base0A: "#b58900"
99
+ palette base0B: "#859900"
100
+ palette base0C: "#2aa198"
101
+ palette base0D: "#268bd2"
102
+ palette base0E: "#6c71c4"
103
+ palette base0F: "#d33682"
104
+ end
105
+
106
+ class Monokai < Base16
107
+ name 'base16.monokai'
108
+ dark!
109
+
110
+ # author "Wimer Hazenberg (http://www.monokai.nl)"
111
+ palette base00: "#272822"
112
+ palette base01: "#383830"
113
+ palette base02: "#49483e"
114
+ palette base03: "#75715e"
115
+ palette base04: "#a59f85"
116
+ palette base05: "#f8f8f2"
117
+ palette base06: "#f5f4f1"
118
+ palette base07: "#f9f8f5"
119
+ palette base08: "#f92672"
120
+ palette base09: "#fd971f"
121
+ palette base0A: "#f4bf75"
122
+ palette base0B: "#a6e22e"
123
+ palette base0C: "#a1efe4"
124
+ palette base0D: "#66d9ef"
125
+ palette base0E: "#ae81ff"
126
+ palette base0F: "#cc6633"
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,67 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Themes
5
+ # stolen from pygments
6
+ class Colorful < CSSTheme
7
+ name 'colorful'
8
+
9
+ style Text, :fg => "#bbbbbb", :bg => '#000'
10
+
11
+ style Comment, :fg => "#888"
12
+ style Comment::Preproc, :fg => "#579"
13
+ style Comment::Special, :fg => "#cc0000", :bold => true
14
+
15
+ style Keyword, :fg => "#080", :bold => true
16
+ style Keyword::Pseudo, :fg => "#038"
17
+ style Keyword::Type, :fg => "#339"
18
+
19
+ style Operator, :fg => "#333"
20
+ style Operator::Word, :fg => "#000", :bold => true
21
+
22
+ style Name::Builtin, :fg => "#007020"
23
+ style Name::Function, :fg => "#06B", :bold => true
24
+ style Name::Class, :fg => "#B06", :bold => true
25
+ style Name::Namespace, :fg => "#0e84b5", :bold => true
26
+ style Name::Exception, :fg => "#F00", :bold => true
27
+ style Name::Variable, :fg => "#963"
28
+ style Name::Variable::Instance, :fg => "#33B"
29
+ style Name::Variable::Class, :fg => "#369"
30
+ style Name::Variable::Global, :fg => "#d70", :bold => true
31
+ style Name::Constant, :fg => "#036", :bold => true
32
+ style Name::Label, :fg => "#970", :bold => true
33
+ style Name::Entity, :fg => "#800", :bold => true
34
+ style Name::Attribute, :fg => "#00C"
35
+ style Name::Tag, :fg => "#070"
36
+ style Name::Decorator, :fg => "#555", :bold => true
37
+
38
+ style Literal::String, :bg => "#fff0f0"
39
+ style Literal::String::Char, :fg => "#04D"
40
+ style Literal::String::Doc, :fg => "#D42"
41
+ style Literal::String::Interpol, :bg => "#eee"
42
+ style Literal::String::Escape, :fg => "#666", :bold => true
43
+ style Literal::String::Regex, :fg => "#000", :bg => "#fff0ff"
44
+ style Literal::String::Symbol, :fg => "#A60"
45
+ style Literal::String::Other, :fg => "#D20"
46
+
47
+ style Literal::Number, :fg => "#60E", :bold => true
48
+ style Literal::Number::Integer, :fg => "#00D", :bold => true
49
+ style Literal::Number::Float, :fg => "#60E", :bold => true
50
+ style Literal::Number::Hex, :fg => "#058", :bold => true
51
+ style Literal::Number::Oct, :fg => "#40E", :bold => true
52
+
53
+ style Generic::Heading, :fg => "#000080", :bold => true
54
+ style Generic::Subheading, :fg => "#800080", :bold => true
55
+ style Generic::Deleted, :fg => "#A00000"
56
+ style Generic::Inserted, :fg => "#00A000"
57
+ style Generic::Error, :fg => "#FF0000"
58
+ style Generic::Emph, :italic => true
59
+ style Generic::Strong, :bold => true
60
+ style Generic::Prompt, :fg => "#c65d09", :bold => true
61
+ style Generic::Output, :fg => "#888"
62
+ style Generic::Traceback, :fg => "#04D"
63
+
64
+ style Error, :fg => "#F00", :bg => "#FAA"
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,71 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Themes
5
+ class Github < CSSTheme
6
+ name 'github'
7
+
8
+ style Comment::Multiline, :fg => '#999988', :italic => true
9
+ style Comment::Preproc, :fg => '#999999', :bold => true
10
+ style Comment::Single, :fg => '#999988', :italic => true
11
+ style Comment::Special, :fg => '#999999', :italic => true, :bold => true
12
+ style Comment, :fg => '#999988', :italic => true
13
+ style Error, :fg => '#a61717', :bg => '#e3d2d2'
14
+ style Generic::Deleted, :fg => '#000000', :bg => '#ffdddd'
15
+ style Generic::Emph, :fg => '#000000', :italic => true
16
+ style Generic::Error, :fg => '#aa0000'
17
+ style Generic::Heading, :fg => '#999999'
18
+ style Generic::Inserted, :fg => '#000000', :bg => '#ddffdd'
19
+ style Generic::Output, :fg => '#888888'
20
+ style Generic::Prompt, :fg => '#555555'
21
+ style Generic::Strong, :bold => true
22
+ style Generic::Subheading, :fg => '#aaaaaa'
23
+ style Generic::Traceback, :fg => '#aa0000'
24
+ style Keyword::Constant, :fg => '#000000', :bold => true
25
+ style Keyword::Declaration, :fg => '#000000', :bold => true
26
+ style Keyword::Namespace, :fg => '#000000', :bold => true
27
+ style Keyword::Pseudo, :fg => '#000000', :bold => true
28
+ style Keyword::Reserved, :fg => '#000000', :bold => true
29
+ style Keyword::Type, :fg => '#445588', :bold => true
30
+ style Keyword, :fg => '#000000', :bold => true
31
+ style Literal::Number::Float, :fg => '#009999'
32
+ style Literal::Number::Hex, :fg => '#009999'
33
+ style Literal::Number::Integer::Long, :fg => '#009999'
34
+ style Literal::Number::Integer, :fg => '#009999'
35
+ style Literal::Number::Oct, :fg => '#009999'
36
+ style Literal::Number, :fg => '#009999'
37
+ style Literal::String::Backtick, :fg => '#d14'
38
+ style Literal::String::Char, :fg => '#d14'
39
+ style Literal::String::Doc, :fg => '#d14'
40
+ style Literal::String::Double, :fg => '#d14'
41
+ style Literal::String::Escape, :fg => '#d14'
42
+ style Literal::String::Heredoc, :fg => '#d14'
43
+ style Literal::String::Interpol, :fg => '#d14'
44
+ style Literal::String::Other, :fg => '#d14'
45
+ style Literal::String::Regex, :fg => '#009926'
46
+ style Literal::String::Single, :fg => '#d14'
47
+ style Literal::String::Symbol, :fg => '#990073'
48
+ style Literal::String, :fg => '#d14'
49
+ style Name::Attribute, :fg => '#008080'
50
+ style Name::Builtin::Pseudo, :fg => '#999999'
51
+ style Name::Builtin, :fg => '#0086B3'
52
+ style Name::Class, :fg => '#445588', :bold => true
53
+ style Name::Constant, :fg => '#008080'
54
+ style Name::Decorator, :fg => '#3c5d5d', :bold => true
55
+ style Name::Entity, :fg => '#800080'
56
+ style Name::Exception, :fg => '#990000', :bold => true
57
+ style Name::Function, :fg => '#990000', :bold => true
58
+ style Name::Label, :fg => '#990000', :bold => true
59
+ style Name::Namespace, :fg => '#555555'
60
+ style Name::Tag, :fg => '#000080'
61
+ style Name::Variable::Class, :fg => '#008080'
62
+ style Name::Variable::Global, :fg => '#008080'
63
+ style Name::Variable::Instance, :fg => '#008080'
64
+ style Name::Variable, :fg => '#008080'
65
+ style Operator::Word, :fg => '#000000', :bold => true
66
+ style Operator, :fg => '#000000', :bold => true
67
+ style Text::Whitespace, :fg => '#bbbbbb'
68
+ style Text, :bg => '#f8f8f8'
69
+ end
70
+ end
71
+ end