rougegal 2.1.2

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.
Files changed (311) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +26 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +17 -0
  5. data/lib/rouge/cli.rb +394 -0
  6. data/lib/rouge/demos/abap +6 -0
  7. data/lib/rouge/demos/actionscript +4 -0
  8. data/lib/rouge/demos/apache +21 -0
  9. data/lib/rouge/demos/apiblueprint +33 -0
  10. data/lib/rouge/demos/applescript +2 -0
  11. data/lib/rouge/demos/awk +4 -0
  12. data/lib/rouge/demos/biml +38 -0
  13. data/lib/rouge/demos/bsl +7 -0
  14. data/lib/rouge/demos/c +8 -0
  15. data/lib/rouge/demos/ceylon +7 -0
  16. data/lib/rouge/demos/cfscript +18 -0
  17. data/lib/rouge/demos/clojure +5 -0
  18. data/lib/rouge/demos/cmake +7 -0
  19. data/lib/rouge/demos/coffeescript +5 -0
  20. data/lib/rouge/demos/common_lisp +1 -0
  21. data/lib/rouge/demos/conf +4 -0
  22. data/lib/rouge/demos/console +6 -0
  23. data/lib/rouge/demos/coq +13 -0
  24. data/lib/rouge/demos/cpp +8 -0
  25. data/lib/rouge/demos/csharp +5 -0
  26. data/lib/rouge/demos/css +4 -0
  27. data/lib/rouge/demos/d +16 -0
  28. data/lib/rouge/demos/dart +6 -0
  29. data/lib/rouge/demos/diff +7 -0
  30. data/lib/rouge/demos/digdag +19 -0
  31. data/lib/rouge/demos/docker +9 -0
  32. data/lib/rouge/demos/dot +5 -0
  33. data/lib/rouge/demos/eiffel +30 -0
  34. data/lib/rouge/demos/elixir +1 -0
  35. data/lib/rouge/demos/erb +1 -0
  36. data/lib/rouge/demos/erlang +7 -0
  37. data/lib/rouge/demos/factor +5 -0
  38. data/lib/rouge/demos/fortran +22 -0
  39. data/lib/rouge/demos/fsharp +12 -0
  40. data/lib/rouge/demos/gal +22 -0
  41. data/lib/rouge/demos/gherkin +17 -0
  42. data/lib/rouge/demos/glsl +14 -0
  43. data/lib/rouge/demos/go +7 -0
  44. data/lib/rouge/demos/gradle +10 -0
  45. data/lib/rouge/demos/graphql +17 -0
  46. data/lib/rouge/demos/groovy +9 -0
  47. data/lib/rouge/demos/haml +5 -0
  48. data/lib/rouge/demos/handlebars +7 -0
  49. data/lib/rouge/demos/haskell +6 -0
  50. data/lib/rouge/demos/html +8 -0
  51. data/lib/rouge/demos/http +14 -0
  52. data/lib/rouge/demos/hylang +10 -0
  53. data/lib/rouge/demos/idlang +8 -0
  54. data/lib/rouge/demos/igorpro +9 -0
  55. data/lib/rouge/demos/ini +4 -0
  56. data/lib/rouge/demos/io +11 -0
  57. data/lib/rouge/demos/irb +4 -0
  58. data/lib/rouge/demos/irb_output +2 -0
  59. data/lib/rouge/demos/java +5 -0
  60. data/lib/rouge/demos/javascript +1 -0
  61. data/lib/rouge/demos/jinja +9 -0
  62. data/lib/rouge/demos/json +1 -0
  63. data/lib/rouge/demos/json-doc +1 -0
  64. data/lib/rouge/demos/jsonnet +28 -0
  65. data/lib/rouge/demos/jsx +17 -0
  66. data/lib/rouge/demos/julia +11 -0
  67. data/lib/rouge/demos/kotlin +3 -0
  68. data/lib/rouge/demos/lasso +12 -0
  69. data/lib/rouge/demos/liquid +11 -0
  70. data/lib/rouge/demos/literate_coffeescript +3 -0
  71. data/lib/rouge/demos/literate_haskell +7 -0
  72. data/lib/rouge/demos/llvm +20 -0
  73. data/lib/rouge/demos/lua +12 -0
  74. data/lib/rouge/demos/make +6 -0
  75. data/lib/rouge/demos/markdown +4 -0
  76. data/lib/rouge/demos/matlab +6 -0
  77. data/lib/rouge/demos/moonscript +16 -0
  78. data/lib/rouge/demos/mosel +10 -0
  79. data/lib/rouge/demos/mxml +22 -0
  80. data/lib/rouge/demos/nasm +26 -0
  81. data/lib/rouge/demos/nginx +5 -0
  82. data/lib/rouge/demos/nim +27 -0
  83. data/lib/rouge/demos/objective_c +18 -0
  84. data/lib/rouge/demos/ocaml +12 -0
  85. data/lib/rouge/demos/pascal +14 -0
  86. data/lib/rouge/demos/perl +5 -0
  87. data/lib/rouge/demos/php +3 -0
  88. data/lib/rouge/demos/plaintext +1 -0
  89. data/lib/rouge/demos/plist +142 -0
  90. data/lib/rouge/demos/pony +17 -0
  91. data/lib/rouge/demos/powershell +49 -0
  92. data/lib/rouge/demos/praat +26 -0
  93. data/lib/rouge/demos/prolog +9 -0
  94. data/lib/rouge/demos/prometheus +9 -0
  95. data/lib/rouge/demos/properties +7 -0
  96. data/lib/rouge/demos/protobuf +5 -0
  97. data/lib/rouge/demos/puppet +6 -0
  98. data/lib/rouge/demos/python +6 -0
  99. data/lib/rouge/demos/q +2 -0
  100. data/lib/rouge/demos/qml +9 -0
  101. data/lib/rouge/demos/r +8 -0
  102. data/lib/rouge/demos/racket +24 -0
  103. data/lib/rouge/demos/ruby +9 -0
  104. data/lib/rouge/demos/rust +12 -0
  105. data/lib/rouge/demos/sass +3 -0
  106. data/lib/rouge/demos/scala +3 -0
  107. data/lib/rouge/demos/scheme +4 -0
  108. data/lib/rouge/demos/scss +5 -0
  109. data/lib/rouge/demos/sed +4 -0
  110. data/lib/rouge/demos/shell +2 -0
  111. data/lib/rouge/demos/sieve +10 -0
  112. data/lib/rouge/demos/slim +17 -0
  113. data/lib/rouge/demos/smalltalk +6 -0
  114. data/lib/rouge/demos/smarty +12 -0
  115. data/lib/rouge/demos/sml +4 -0
  116. data/lib/rouge/demos/sql +1 -0
  117. data/lib/rouge/demos/swift +5 -0
  118. data/lib/rouge/demos/tap +5 -0
  119. data/lib/rouge/demos/tcl +1 -0
  120. data/lib/rouge/demos/tex +1 -0
  121. data/lib/rouge/demos/toml +9 -0
  122. data/lib/rouge/demos/tsx +17 -0
  123. data/lib/rouge/demos/tulip +13 -0
  124. data/lib/rouge/demos/turtle +26 -0
  125. data/lib/rouge/demos/twig +9 -0
  126. data/lib/rouge/demos/typescript +1 -0
  127. data/lib/rouge/demos/vala +8 -0
  128. data/lib/rouge/demos/vb +4 -0
  129. data/lib/rouge/demos/verilog +27 -0
  130. data/lib/rouge/demos/vhdl +23 -0
  131. data/lib/rouge/demos/viml +14 -0
  132. data/lib/rouge/demos/vue +11 -0
  133. data/lib/rouge/demos/wollok +11 -0
  134. data/lib/rouge/demos/xml +2 -0
  135. data/lib/rouge/demos/yaml +4 -0
  136. data/lib/rouge/formatter.rb +75 -0
  137. data/lib/rouge/formatters/html.rb +37 -0
  138. data/lib/rouge/formatters/html_inline.rb +30 -0
  139. data/lib/rouge/formatters/html_legacy.rb +44 -0
  140. data/lib/rouge/formatters/html_linewise.rb +27 -0
  141. data/lib/rouge/formatters/html_pygments.rb +16 -0
  142. data/lib/rouge/formatters/html_table.rb +61 -0
  143. data/lib/rouge/formatters/null.rb +19 -0
  144. data/lib/rouge/formatters/terminal256.rb +172 -0
  145. data/lib/rouge/guesser.rb +55 -0
  146. data/lib/rouge/guessers/filename.rb +25 -0
  147. data/lib/rouge/guessers/glob_mapping.rb +46 -0
  148. data/lib/rouge/guessers/mimetype.rb +14 -0
  149. data/lib/rouge/guessers/modeline.rb +42 -0
  150. data/lib/rouge/guessers/source.rb +39 -0
  151. data/lib/rouge/lexer.rb +452 -0
  152. data/lib/rouge/lexers/abap.rb +238 -0
  153. data/lib/rouge/lexers/actionscript.rb +195 -0
  154. data/lib/rouge/lexers/apache.rb +71 -0
  155. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  156. data/lib/rouge/lexers/apiblueprint.rb +51 -0
  157. data/lib/rouge/lexers/apple_script.rb +367 -0
  158. data/lib/rouge/lexers/awk.rb +161 -0
  159. data/lib/rouge/lexers/biml.rb +41 -0
  160. data/lib/rouge/lexers/bsl.rb +81 -0
  161. data/lib/rouge/lexers/c.rb +217 -0
  162. data/lib/rouge/lexers/ceylon.rb +123 -0
  163. data/lib/rouge/lexers/cfscript.rb +153 -0
  164. data/lib/rouge/lexers/clojure.rb +112 -0
  165. data/lib/rouge/lexers/cmake.rb +206 -0
  166. data/lib/rouge/lexers/coffeescript.rb +174 -0
  167. data/lib/rouge/lexers/common_lisp.rb +345 -0
  168. data/lib/rouge/lexers/conf.rb +24 -0
  169. data/lib/rouge/lexers/console.rb +136 -0
  170. data/lib/rouge/lexers/coq.rb +191 -0
  171. data/lib/rouge/lexers/cpp.rb +78 -0
  172. data/lib/rouge/lexers/csharp.rb +114 -0
  173. data/lib/rouge/lexers/css.rb +273 -0
  174. data/lib/rouge/lexers/d.rb +176 -0
  175. data/lib/rouge/lexers/dart.rb +104 -0
  176. data/lib/rouge/lexers/diff.rb +31 -0
  177. data/lib/rouge/lexers/digdag.rb +72 -0
  178. data/lib/rouge/lexers/docker.rb +50 -0
  179. data/lib/rouge/lexers/dot.rb +68 -0
  180. data/lib/rouge/lexers/eiffel.rb +65 -0
  181. data/lib/rouge/lexers/elixir.rb +133 -0
  182. data/lib/rouge/lexers/erb.rb +56 -0
  183. data/lib/rouge/lexers/erlang.rb +118 -0
  184. data/lib/rouge/lexers/factor.rb +302 -0
  185. data/lib/rouge/lexers/fortran.rb +170 -0
  186. data/lib/rouge/lexers/fsharp.rb +118 -0
  187. data/lib/rouge/lexers/gal.rb +50 -0
  188. data/lib/rouge/lexers/gherkin.rb +137 -0
  189. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  190. data/lib/rouge/lexers/glsl.rb +135 -0
  191. data/lib/rouge/lexers/go.rb +178 -0
  192. data/lib/rouge/lexers/gradle.rb +37 -0
  193. data/lib/rouge/lexers/graphql.rb +243 -0
  194. data/lib/rouge/lexers/groovy.rb +112 -0
  195. data/lib/rouge/lexers/haml.rb +233 -0
  196. data/lib/rouge/lexers/handlebars.rb +79 -0
  197. data/lib/rouge/lexers/haskell.rb +183 -0
  198. data/lib/rouge/lexers/html.rb +138 -0
  199. data/lib/rouge/lexers/http.rb +80 -0
  200. data/lib/rouge/lexers/hylang.rb +93 -0
  201. data/lib/rouge/lexers/idlang.rb +316 -0
  202. data/lib/rouge/lexers/igorpro.rb +407 -0
  203. data/lib/rouge/lexers/ini.rb +57 -0
  204. data/lib/rouge/lexers/io.rb +68 -0
  205. data/lib/rouge/lexers/irb.rb +66 -0
  206. data/lib/rouge/lexers/java.rb +87 -0
  207. data/lib/rouge/lexers/javascript.rb +269 -0
  208. data/lib/rouge/lexers/jinja.rb +137 -0
  209. data/lib/rouge/lexers/json.rb +29 -0
  210. data/lib/rouge/lexers/json_doc.rb +23 -0
  211. data/lib/rouge/lexers/jsonnet.rb +151 -0
  212. data/lib/rouge/lexers/jsx.rb +102 -0
  213. data/lib/rouge/lexers/julia.rb +172 -0
  214. data/lib/rouge/lexers/kotlin.rb +84 -0
  215. data/lib/rouge/lexers/lasso.rb +217 -0
  216. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  217. data/lib/rouge/lexers/liquid.rb +287 -0
  218. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  219. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  220. data/lib/rouge/lexers/llvm.rb +84 -0
  221. data/lib/rouge/lexers/lua.rb +125 -0
  222. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  223. data/lib/rouge/lexers/make.rb +116 -0
  224. data/lib/rouge/lexers/markdown.rb +154 -0
  225. data/lib/rouge/lexers/matlab.rb +75 -0
  226. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  227. data/lib/rouge/lexers/moonscript.rb +114 -0
  228. data/lib/rouge/lexers/mosel.rb +231 -0
  229. data/lib/rouge/lexers/mxml.rb +68 -0
  230. data/lib/rouge/lexers/nasm.rb +203 -0
  231. data/lib/rouge/lexers/nginx.rb +71 -0
  232. data/lib/rouge/lexers/nim.rb +152 -0
  233. data/lib/rouge/lexers/objective_c.rb +208 -0
  234. data/lib/rouge/lexers/ocaml.rb +100 -0
  235. data/lib/rouge/lexers/pascal.rb +66 -0
  236. data/lib/rouge/lexers/perl.rb +197 -0
  237. data/lib/rouge/lexers/php.rb +193 -0
  238. data/lib/rouge/lexers/php/builtins.rb +194 -0
  239. data/lib/rouge/lexers/plain_text.rb +26 -0
  240. data/lib/rouge/lexers/plist.rb +49 -0
  241. data/lib/rouge/lexers/pony.rb +93 -0
  242. data/lib/rouge/lexers/powershell.rb +132 -0
  243. data/lib/rouge/lexers/praat.rb +350 -0
  244. data/lib/rouge/lexers/prolog.rb +64 -0
  245. data/lib/rouge/lexers/prometheus.rb +121 -0
  246. data/lib/rouge/lexers/properties.rb +55 -0
  247. data/lib/rouge/lexers/protobuf.rb +70 -0
  248. data/lib/rouge/lexers/puppet.rb +128 -0
  249. data/lib/rouge/lexers/python.rb +231 -0
  250. data/lib/rouge/lexers/q.rb +124 -0
  251. data/lib/rouge/lexers/qml.rb +73 -0
  252. data/lib/rouge/lexers/r.rb +89 -0
  253. data/lib/rouge/lexers/racket.rb +542 -0
  254. data/lib/rouge/lexers/ruby.rb +437 -0
  255. data/lib/rouge/lexers/rust.rb +192 -0
  256. data/lib/rouge/lexers/sass.rb +74 -0
  257. data/lib/rouge/lexers/sass/common.rb +180 -0
  258. data/lib/rouge/lexers/scala.rb +142 -0
  259. data/lib/rouge/lexers/scheme.rb +112 -0
  260. data/lib/rouge/lexers/scss.rb +34 -0
  261. data/lib/rouge/lexers/sed.rb +172 -0
  262. data/lib/rouge/lexers/shell.rb +180 -0
  263. data/lib/rouge/lexers/sieve.rb +96 -0
  264. data/lib/rouge/lexers/slim.rb +228 -0
  265. data/lib/rouge/lexers/smalltalk.rb +116 -0
  266. data/lib/rouge/lexers/smarty.rb +91 -0
  267. data/lib/rouge/lexers/sml.rb +348 -0
  268. data/lib/rouge/lexers/sql.rb +140 -0
  269. data/lib/rouge/lexers/swift.rb +161 -0
  270. data/lib/rouge/lexers/tap.rb +91 -0
  271. data/lib/rouge/lexers/tcl.rb +192 -0
  272. data/lib/rouge/lexers/tex.rb +69 -0
  273. data/lib/rouge/lexers/toml.rb +71 -0
  274. data/lib/rouge/lexers/tsx.rb +19 -0
  275. data/lib/rouge/lexers/tulip.rb +107 -0
  276. data/lib/rouge/lexers/turtle.rb +72 -0
  277. data/lib/rouge/lexers/twig.rb +39 -0
  278. data/lib/rouge/lexers/typescript.rb +22 -0
  279. data/lib/rouge/lexers/typescript/common.rb +33 -0
  280. data/lib/rouge/lexers/vala.rb +77 -0
  281. data/lib/rouge/lexers/vb.rb +164 -0
  282. data/lib/rouge/lexers/verilog.rb +164 -0
  283. data/lib/rouge/lexers/vhdl.rb +97 -0
  284. data/lib/rouge/lexers/viml.rb +101 -0
  285. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  286. data/lib/rouge/lexers/vue.rb +124 -0
  287. data/lib/rouge/lexers/wollok.rb +107 -0
  288. data/lib/rouge/lexers/xml.rb +59 -0
  289. data/lib/rouge/lexers/yaml.rb +373 -0
  290. data/lib/rouge/plugins/redcarpet.rb +30 -0
  291. data/lib/rouge/regex_lexer.rb +441 -0
  292. data/lib/rouge/template_lexer.rb +20 -0
  293. data/lib/rouge/text_analyzer.rb +48 -0
  294. data/lib/rouge/theme.rb +213 -0
  295. data/lib/rouge/themes/base16.rb +130 -0
  296. data/lib/rouge/themes/colorful.rb +67 -0
  297. data/lib/rouge/themes/github.rb +71 -0
  298. data/lib/rouge/themes/gruvbox.rb +167 -0
  299. data/lib/rouge/themes/igor_pro.rb +20 -0
  300. data/lib/rouge/themes/molokai.rb +82 -0
  301. data/lib/rouge/themes/monokai.rb +92 -0
  302. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  303. data/lib/rouge/themes/pastie.rb +69 -0
  304. data/lib/rouge/themes/thankful_eyes.rb +74 -0
  305. data/lib/rouge/themes/tulip.rb +69 -0
  306. data/lib/rouge/token.rb +182 -0
  307. data/lib/rouge/util.rb +101 -0
  308. data/lib/rouge/version.rb +7 -0
  309. data/lib/rougegal.rb +80 -0
  310. data/rougegal.gemspec +18 -0
  311. metadata +356 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f9dd978789e1300afab6966f401f5c2e1ab5e389
4
+ data.tar.gz: abf0f6b74e7c2c19ee377867f3f84d40f302141b
5
+ SHA512:
6
+ metadata.gz: d389b693704093514efa64ecbedb4ac16682d0cef3954ffa4f9e824b96452e2569f1a0d8444ef0c7a09e9d8437997b546cd8a3bf1235d86614b275e0de5286fd
7
+ data.tar.gz: c86bec7607ce7a1442c8736a531e31e3dd79608b9ff35048620b4215f4a1d0d85703b482c969b9ebe4c5fe07d0832d600727f0e38d5aeb0481c9dd2ce49cf1d6
data/Gemfile ADDED
@@ -0,0 +1,26 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ gem 'minitest', '~> 4.0'
6
+ gem 'wrong'
7
+ gem 'json'
8
+
9
+ gem 'rubocop', '~> 0.49.1' if RUBY_VERSION >= '2.0.0'
10
+
11
+ gem 'rake'
12
+
13
+ # don't try to install redcarpet under jruby
14
+ gem 'redcarpet', :platforms => :ruby
15
+
16
+ group :development do
17
+ gem 'pry'
18
+
19
+ # docs
20
+ gem 'yard'
21
+ gem 'github-markup'
22
+
23
+ # for visual tests
24
+ gem 'sinatra'
25
+ gem 'shotgun'
26
+ end
data/LICENSE ADDED
@@ -0,0 +1,186 @@
1
+ # MIT license. See http://www.opensource.org/licenses/mit-license.php
2
+
3
+ Copyright (c) 2012 Jeanine Adkisson.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
22
+
23
+ # SPECIAL NOTE:
24
+ Many of the lexers in this project are adaptations of those in Pygments
25
+ (pygments.org). The license for Pygments is as follows:
26
+
27
+ # BEGIN pygments/LICENSE #
28
+
29
+ Copyright (c) 2006-2012 by the respective authors (see AUTHORS file).
30
+ All rights reserved.
31
+
32
+ Redistribution and use in source and binary forms, with or without
33
+ modification, are permitted provided that the following conditions are
34
+ met:
35
+
36
+ * Redistributions of source code must retain the above copyright
37
+ notice, this list of conditions and the following disclaimer.
38
+
39
+ * Redistributions in binary form must reproduce the above copyright
40
+ notice, this list of conditions and the following disclaimer in the
41
+ documentation and/or other materials provided with the distribution.
42
+
43
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
44
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
45
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
46
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
47
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
48
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
49
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
50
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
51
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
52
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
53
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
54
+
55
+ # END pygments/LICENSE #
56
+
57
+ The contents of the AUTHORS file at the time of porting was:
58
+
59
+ # BEGIN pygments/AUTHORS #
60
+
61
+ Pygments is written and maintained by Georg Brandl <georg@python.org>.
62
+
63
+ Major developers are Tim Hatch <tim@timhatch.com> and Armin Ronacher
64
+ <armin.ronacher@active-4.com>.
65
+
66
+ Other contributors, listed alphabetically, are:
67
+
68
+ * Sam Aaron -- Ioke lexer
69
+ * Kumar Appaiah -- Debian control lexer
70
+ * Ali Afshar -- image formatter
71
+ * Andreas Amann -- AppleScript lexer
72
+ * Jeffrey Arnold -- R/S lexer, BUGS lexers
73
+ * Jeremy Ashkenas -- CoffeeScript lexer
74
+ * Stefan Matthias Aust -- Smalltalk lexer
75
+ * Ben Bangert -- Mako lexers
76
+ * Max Battcher -- Darcs patch lexer
77
+ * Paul Baumgart, 280 North, Inc. -- Objective-J lexer
78
+ * Michael Bayer -- Myghty lexers
79
+ * John Benediktsson -- Factor lexer
80
+ * Christopher Bertels -- Fancy lexer
81
+ * Jarrett Billingsley -- MiniD lexer
82
+ * Adam Blinkinsop -- Haskell, Redcode lexers
83
+ * Frits van Bommel -- assembler lexers
84
+ * Pierre Bourdon -- bugfixes
85
+ * Hiram Chirino -- Scaml and Jade lexers
86
+ * Leaf Corcoran -- MoonScript lexer
87
+ * Christopher Creutzig -- MuPAD lexer
88
+ * Pete Curry -- bugfixes
89
+ * Owen Durni -- haXe lexer
90
+ * Nick Efford -- Python 3 lexer
91
+ * Sven Efftinge -- Xtend lexer
92
+ * Artem Egorkine -- terminal256 formatter
93
+ * James H. Fisher -- PostScript lexer
94
+ * Carlos Galdino -- Elixir and Elixir Console lexers
95
+ * Naveen Garg -- Autohotkey lexer
96
+ * Laurent Gautier -- R/S lexer
97
+ * Alex Gaynor -- PyPy log lexer
98
+ * Bertrand Goetzmann -- Groovy lexer
99
+ * Krzysiek Goj -- Scala lexer
100
+ * Matt Good -- Genshi, Cheetah lexers
101
+ * Patrick Gotthardt -- PHP namespaces support
102
+ * Olivier Guibe -- Asymptote lexer
103
+ * Martin Harriman -- SNOBOL lexer
104
+ * Matthew Harrison -- SVG formatter
105
+ * Steven Hazel -- Tcl lexer
106
+ * Aslak Hellesøy -- Gherkin lexer
107
+ * Greg Hendershott -- Racket lexer
108
+ * Jordi Gutiérrez Hermoso -- Octave lexer
109
+ * David Hess, Fish Software, Inc. -- Objective-J lexer
110
+ * Varun Hiremath -- Debian control lexer
111
+ * Doug Hogan -- Mscgen lexer
112
+ * Ben Hollis -- Mason lexer
113
+ * Tim Howard -- BlitzMax lexer
114
+ * Ivan Inozemtsev -- Fantom lexer
115
+ * Brian R. Jackson -- Tea lexer
116
+ * Dennis Kaarsemaker -- sources.list lexer
117
+ * Igor Kalnitsky -- vhdl lexer
118
+ * Eric Knibbe -- Lasso lexer
119
+ * Adam Koprowski -- Opa lexer
120
+ * Benjamin Kowarsch -- Modula-2 lexer
121
+ * Alexander Kriegisch -- Kconfig and AspectJ lexers
122
+ * Marek Kubica -- Scheme lexer
123
+ * Jochen Kupperschmidt -- Markdown processor
124
+ * Gerd Kurzbach -- Modelica lexer
125
+ * Olov Lassus -- Dart lexer
126
+ * Sylvestre Ledru -- Scilab lexer
127
+ * Mark Lee -- Vala lexer
128
+ * Ben Mabey -- Gherkin lexer
129
+ * Simone Margaritelli -- Hybris lexer
130
+ * Kirk McDonald -- D lexer
131
+ * Gordon McGregor -- SystemVerilog lexer
132
+ * Stephen McKamey -- Duel/JBST lexer
133
+ * Brian McKenna -- F# lexer
134
+ * Lukas Meuser -- BBCode formatter, Lua lexer
135
+ * Paul Miller -- LiveScript lexer
136
+ * Hong Minhee -- HTTP lexer
137
+ * Michael Mior -- Awk lexer
138
+ * Jon Morton -- Rust lexer
139
+ * Paulo Moura -- Logtalk lexer
140
+ * Mher Movsisyan -- DTD lexer
141
+ * Ana Nelson -- Ragel, ANTLR, R console lexers
142
+ * Nam T. Nguyen -- Monokai style
143
+ * Jesper Noehr -- HTML formatter "anchorlinenos"
144
+ * Mike Nolta -- Julia lexer
145
+ * Jonas Obrist -- BBCode lexer
146
+ * David Oliva -- Rebol lexer
147
+ * Jon Parise -- Protocol buffers lexer
148
+ * Ronny Pfannschmidt -- BBCode lexer
149
+ * Benjamin Peterson -- Test suite refactoring
150
+ * Dominik Picheta -- Nimrod lexer
151
+ * Clément Prévost -- UrbiScript lexer
152
+ * Kashif Rasul -- CUDA lexer
153
+ * Justin Reidy -- MXML lexer
154
+ * Norman Richards -- JSON lexer
155
+ * Lubomir Rintel -- GoodData MAQL and CL lexers
156
+ * Andre Roberge -- Tango style
157
+ * Konrad Rudolph -- LaTeX formatter enhancements
158
+ * Mario Ruggier -- Evoque lexers
159
+ * Stou Sandalski -- NumPy, FORTRAN, tcsh and XSLT lexers
160
+ * Matteo Sasso -- Common Lisp lexer
161
+ * Joe Schafer -- Ada lexer
162
+ * Ken Schutte -- Matlab lexers
163
+ * Tassilo Schweyer -- Io, MOOCode lexers
164
+ * Joerg Sieker -- ABAP lexer
165
+ * Robert Simmons -- Standard ML lexer
166
+ * Kirill Simonov -- YAML lexer
167
+ * Steve Spigarelli -- XQuery lexer
168
+ * Jerome St-Louis -- eC lexer
169
+ * James Strachan -- Kotlin lexer
170
+ * Tiberius Teng -- default style overhaul
171
+ * Jeremy Thurgood -- Erlang, Squid config lexers
172
+ * Erick Tryzelaar -- Felix lexer
173
+ * Daniele Varrazzo -- PostgreSQL lexers
174
+ * Abe Voelker -- OpenEdge ABL lexer
175
+ * Whitney Young -- ObjectiveC lexer
176
+ * Matthias Vallentin -- Bro lexer
177
+ * Nathan Weizenbaum -- Haml and Sass lexers
178
+ * Dietmar Winkler -- Modelica lexer
179
+ * Nils Winter -- Smalltalk lexer
180
+ * Davy Wybiral -- Clojure lexer
181
+ * Diego Zamboni -- CFengine3 lexer
182
+ * Alex Zimin -- Nemerle lexer
183
+
184
+ Many thanks for all contributions!
185
+
186
+ # END pygments/AUTHORS #
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pathname'
4
+ ROOT_DIR = Pathname.new(__FILE__).dirname.parent
5
+ load ROOT_DIR.join('lib/rougegal.rb')
6
+ load ROOT_DIR.join('lib/rouge/cli.rb')
7
+ Signal.trap('PIPE', 'SYSTEM_DEFAULT') if Signal.list.include? 'PIPE'
8
+
9
+ begin
10
+ Rouge::CLI.parse(ARGV).run
11
+ rescue Rouge::CLI::Error => e
12
+ puts e.message
13
+ exit e.status
14
+ rescue Interrupt
15
+ $stderr.puts "\nrouge: interrupted"
16
+ exit 2
17
+ end
@@ -0,0 +1,394 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ # not required by the main lib.
4
+ # to use this module, require 'rouge/cli'.
5
+
6
+ module Rouge
7
+ class FileReader
8
+ attr_reader :input
9
+ def initialize(input)
10
+ @input = input
11
+ end
12
+
13
+ def file
14
+ case input
15
+ when '-'
16
+ IO.new($stdin.fileno, 'r:utf-8')
17
+ when String
18
+ File.new(input, 'r:utf-8')
19
+ when ->(i){ i.respond_to? :read }
20
+ input
21
+ end
22
+ end
23
+
24
+ def read
25
+ @read ||= begin
26
+ file.read
27
+ rescue => e
28
+ $stderr.puts "unable to open #{input}: #{e.message}"
29
+ exit 1
30
+ ensure
31
+ file.close
32
+ end
33
+ end
34
+ end
35
+
36
+ class CLI
37
+ def self.doc
38
+ return enum_for(:doc) unless block_given?
39
+
40
+ yield %|usage: rougify [command] [args...]|
41
+ yield %||
42
+ yield %|where <command> is one of:|
43
+ yield %| highlight #{Highlight.desc}|
44
+ yield %| help #{Help.desc}|
45
+ yield %| style #{Style.desc}|
46
+ yield %| list #{List.desc}|
47
+ yield %| version #{Version.desc}|
48
+ yield %||
49
+ yield %|See `rougify help <command>` for more info.|
50
+ end
51
+
52
+ class Error < StandardError
53
+ attr_reader :message, :status
54
+ def initialize(message, status=1)
55
+ @message = message
56
+ @status = status
57
+ end
58
+ end
59
+
60
+ def self.parse(argv=ARGV)
61
+ argv = normalize_syntax(argv)
62
+
63
+ mode = argv.shift
64
+
65
+ klass = class_from_arg(mode)
66
+ return klass.parse(argv) if klass
67
+
68
+ case mode
69
+ when '-h', '--help', 'help', '-help', nil
70
+ Help.parse(argv)
71
+ else
72
+ argv.unshift(mode) if mode
73
+ Highlight.parse(argv)
74
+ end
75
+ end
76
+
77
+ def initialize(options={})
78
+ end
79
+
80
+ def self.error!(msg, status=1)
81
+ raise Error.new(msg, status)
82
+ end
83
+
84
+ def error!(*a)
85
+ self.class.error!(*a)
86
+ end
87
+
88
+ def self.class_from_arg(arg)
89
+ case arg
90
+ when 'version', '--version', '-v'
91
+ Version
92
+ when 'help'
93
+ Help
94
+ when 'highlight', 'hi'
95
+ Highlight
96
+ when 'style'
97
+ Style
98
+ when 'list'
99
+ List
100
+ end
101
+ end
102
+
103
+ class Version < CLI
104
+ def self.desc
105
+ "print the rouge version number"
106
+ end
107
+
108
+ def self.parse(*); new; end
109
+
110
+ def run
111
+ puts Rouge.version
112
+ end
113
+ end
114
+
115
+ class Help < CLI
116
+ def self.desc
117
+ "print help info"
118
+ end
119
+
120
+ def self.doc
121
+ return enum_for(:doc) unless block_given?
122
+
123
+ yield %|usage: rougify help <command>|
124
+ yield %||
125
+ yield %|print help info for <command>.|
126
+ end
127
+
128
+ def self.parse(argv)
129
+ opts = { :mode => CLI }
130
+ until argv.empty?
131
+ arg = argv.shift
132
+ klass = class_from_arg(arg)
133
+ if klass
134
+ opts[:mode] = klass
135
+ next
136
+ end
137
+ end
138
+ new(opts)
139
+ end
140
+
141
+ def initialize(opts={})
142
+ @mode = opts[:mode]
143
+ end
144
+
145
+ def run
146
+ @mode.doc.each(&method(:puts))
147
+ end
148
+ end
149
+
150
+ class Highlight < CLI
151
+ def self.desc
152
+ "highlight code"
153
+ end
154
+
155
+ def self.doc
156
+ return enum_for(:doc) unless block_given?
157
+
158
+ yield %[usage: rougify highlight <filename> [options...]]
159
+ yield %[ rougify highlight [options...]]
160
+ yield %[]
161
+ yield %[--input-file|-i <filename> specify a file to read, or - to use stdin]
162
+ yield %[]
163
+ yield %[--lexer|-l <lexer> specify the lexer to use.]
164
+ yield %[ If not provided, rougify will try to guess]
165
+ yield %[ based on --mimetype, the filename, and the]
166
+ yield %[ file contents.]
167
+ yield %[]
168
+ yield %[--formatter|-f <opts> specify the output formatter to use.]
169
+ yield %[ If not provided, rougify will default to]
170
+ yield %[ terminal256.]
171
+ yield %[]
172
+ yield %[--theme|-t <theme> specify the theme to use for highlighting]
173
+ yield %[ the file. (only applies to some formatters)]
174
+ yield %[]
175
+ yield %[--mimetype|-m <mimetype> specify a mimetype for lexer guessing]
176
+ yield %[]
177
+ yield %[--lexer-opts|-L <opts> specify lexer options in CGI format]
178
+ yield %[ (opt1=val1&opt2=val2)]
179
+ yield %[]
180
+ yield %[--formatter-opts|-F <opts> specify formatter options in CGI format]
181
+ yield %[ (opt1=val1&opt2=val2)]
182
+ yield %[]
183
+ yield %[--require|-r <filename> require a filename or library before]
184
+ yield %[ highlighting]
185
+ end
186
+
187
+ def self.parse(argv)
188
+ opts = {
189
+ :formatter => 'terminal256',
190
+ :theme => 'thankful_eyes',
191
+ :css_class => 'codehilite',
192
+ :input_file => '-',
193
+ :lexer_opts => {},
194
+ :formatter_opts => {},
195
+ :requires => [],
196
+ }
197
+
198
+ until argv.empty?
199
+ arg = argv.shift
200
+ case arg
201
+ when '-r', '--require'
202
+ opts[:requires] << argv.shift
203
+ when '--input-file', '-i'
204
+ opts[:input_file] = argv.shift
205
+ when '--mimetype', '-m'
206
+ opts[:mimetype] = argv.shift
207
+ when '--lexer', '-l'
208
+ opts[:lexer] = argv.shift
209
+ when '--formatter-preset', '-f'
210
+ opts[:formatter] = argv.shift
211
+ when '--theme', '-t'
212
+ opts[:theme] = argv.shift
213
+ when '--css-class', '-c'
214
+ opts[:css_class] = argv.shift
215
+ when '--lexer-opts', '-L'
216
+ opts[:lexer_opts] = parse_cgi(argv.shift)
217
+ when /^--/
218
+ error! "unknown option #{arg.inspect}"
219
+ else
220
+ opts[:input_file] = arg
221
+ end
222
+ end
223
+
224
+ new(opts)
225
+ end
226
+
227
+ def input_stream
228
+ @input_stream ||= FileReader.new(@input_file)
229
+ end
230
+
231
+ def input
232
+ @input ||= input_stream.read
233
+ end
234
+
235
+ def lexer_class
236
+ @lexer_class ||= Lexer.guess(
237
+ :filename => @input_file,
238
+ :mimetype => @mimetype,
239
+ :source => input_stream,
240
+ )
241
+ end
242
+
243
+ def lexer
244
+ @lexer ||= lexer_class.new(@lexer_opts)
245
+ end
246
+
247
+ attr_reader :input_file, :lexer_name, :mimetype, :formatter
248
+
249
+ def initialize(opts={})
250
+ Rouge::Lexer.enable_debug!
251
+
252
+ opts[:requires].each do |r|
253
+ require r
254
+ end
255
+
256
+ @input_file = opts[:input_file]
257
+
258
+ if opts[:lexer]
259
+ @lexer_class = Lexer.find(opts[:lexer]) \
260
+ or error! "unknown lexer #{opts[:lexer].inspect}"
261
+ else
262
+ @lexer_name = opts[:lexer]
263
+ @mimetype = opts[:mimetype]
264
+ end
265
+
266
+ @lexer_opts = opts[:lexer_opts]
267
+
268
+ theme = Theme.find(opts[:theme]).new or error! "unknown theme #{opts[:theme]}"
269
+
270
+ @formatter = case opts[:formatter]
271
+ when 'terminal256' then Formatters::Terminal256.new(theme)
272
+ when 'html' then Formatters::HTML.new
273
+ when 'html-pygments' then Formatters::HTMLPygments.new(Formatters::HTML.new, opts[:css_class])
274
+ when 'html-inline' then Formatters::HTMLInline.new(theme)
275
+ when 'html-table' then Formatters::HTMLTable.new(Formatters::HTML.new)
276
+ else
277
+ error! "unknown formatter preset #{opts[:formatter]}"
278
+ end
279
+ end
280
+
281
+ def run
282
+ formatter.format(lexer.lex(input), &method(:print))
283
+ end
284
+
285
+ private_class_method
286
+ def self.parse_cgi(str)
287
+ pairs = CGI.parse(str).map { |k, v| [k.to_sym, v.first] }
288
+ Hash[pairs]
289
+ end
290
+ end
291
+
292
+ class Style < CLI
293
+ def self.desc
294
+ "print CSS styles"
295
+ end
296
+
297
+ def self.doc
298
+ return enum_for(:doc) unless block_given?
299
+
300
+ yield %|usage: rougify style [<theme-name>] [<options>]|
301
+ yield %||
302
+ yield %|Print CSS styles for the given theme. Extra options are|
303
+ yield %|passed to the theme. Theme defaults to thankful_eyes.|
304
+ yield %||
305
+ yield %|options:|
306
+ yield %| --scope (default: .highlight) a css selector to scope by|
307
+ yield %||
308
+ yield %|available themes:|
309
+ yield %| #{Theme.registry.keys.sort.join(', ')}|
310
+ end
311
+
312
+ def self.parse(argv)
313
+ opts = { :theme_name => 'thankful_eyes' }
314
+
315
+ until argv.empty?
316
+ arg = argv.shift
317
+ case arg
318
+ when /--(\w+)/
319
+ opts[$1.tr('-', '_').to_sym] = argv.shift
320
+ else
321
+ opts[:theme_name] = arg
322
+ end
323
+ end
324
+
325
+ new(opts)
326
+ end
327
+
328
+ def initialize(opts)
329
+ theme_name = opts.delete(:theme_name)
330
+ theme_class = Theme.find(theme_name) \
331
+ or error! "unknown theme: #{theme_name}"
332
+
333
+ @theme = theme_class.new(opts)
334
+ end
335
+
336
+ def run
337
+ @theme.render(&method(:puts))
338
+ end
339
+ end
340
+
341
+ class List < CLI
342
+ def self.desc
343
+ "list available lexers"
344
+ end
345
+
346
+ def self.doc
347
+ return enum_for(:doc) unless block_given?
348
+
349
+ yield %|usage: rouge list|
350
+ yield %||
351
+ yield %|print a list of all available lexers with their descriptions.|
352
+ end
353
+
354
+ def self.parse(argv)
355
+ new
356
+ end
357
+
358
+ def run
359
+ puts "== Available Lexers =="
360
+
361
+ Lexer.all.sort_by(&:tag).each do |lexer|
362
+ desc = "#{lexer.desc}"
363
+ if lexer.aliases.any?
364
+ desc << " [aliases: #{lexer.aliases.join(',')}]"
365
+ end
366
+ puts "%s: %s" % [lexer.tag, desc]
367
+
368
+ lexer.option_docs.keys.sort.each do |option|
369
+ puts " ?#{option}= #{lexer.option_docs[option]}"
370
+ end
371
+
372
+ puts
373
+ end
374
+ end
375
+ end
376
+
377
+ private_class_method
378
+ def self.normalize_syntax(argv)
379
+ out = []
380
+ argv.each do |arg|
381
+ case arg
382
+ when /^(--\w+)=(.*)$/
383
+ out << $1 << $2
384
+ when /^(-\w)(.+)$/
385
+ out << $1 << $2
386
+ else
387
+ out << arg
388
+ end
389
+ end
390
+
391
+ out
392
+ end
393
+ end
394
+ end