rouge-alda 3.3.0

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 (335) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +28 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +18 -0
  5. data/lib/rouge/cli.rb +432 -0
  6. data/lib/rouge/demos/abap +6 -0
  7. data/lib/rouge/demos/actionscript +4 -0
  8. data/lib/rouge/demos/alda +10 -0
  9. data/lib/rouge/demos/apache +21 -0
  10. data/lib/rouge/demos/apiblueprint +33 -0
  11. data/lib/rouge/demos/applescript +2 -0
  12. data/lib/rouge/demos/awk +4 -0
  13. data/lib/rouge/demos/biml +38 -0
  14. data/lib/rouge/demos/bsl +7 -0
  15. data/lib/rouge/demos/c +8 -0
  16. data/lib/rouge/demos/ceylon +7 -0
  17. data/lib/rouge/demos/cfscript +18 -0
  18. data/lib/rouge/demos/clojure +5 -0
  19. data/lib/rouge/demos/cmake +7 -0
  20. data/lib/rouge/demos/coffeescript +5 -0
  21. data/lib/rouge/demos/common_lisp +1 -0
  22. data/lib/rouge/demos/conf +4 -0
  23. data/lib/rouge/demos/console +6 -0
  24. data/lib/rouge/demos/coq +13 -0
  25. data/lib/rouge/demos/cpp +8 -0
  26. data/lib/rouge/demos/crystal +45 -0
  27. data/lib/rouge/demos/csharp +5 -0
  28. data/lib/rouge/demos/css +4 -0
  29. data/lib/rouge/demos/d +16 -0
  30. data/lib/rouge/demos/dart +6 -0
  31. data/lib/rouge/demos/diff +7 -0
  32. data/lib/rouge/demos/digdag +19 -0
  33. data/lib/rouge/demos/docker +9 -0
  34. data/lib/rouge/demos/dot +5 -0
  35. data/lib/rouge/demos/eiffel +30 -0
  36. data/lib/rouge/demos/elixir +1 -0
  37. data/lib/rouge/demos/elm +4 -0
  38. data/lib/rouge/demos/erb +1 -0
  39. data/lib/rouge/demos/erlang +7 -0
  40. data/lib/rouge/demos/factor +5 -0
  41. data/lib/rouge/demos/fortran +22 -0
  42. data/lib/rouge/demos/fsharp +12 -0
  43. data/lib/rouge/demos/gherkin +17 -0
  44. data/lib/rouge/demos/glsl +14 -0
  45. data/lib/rouge/demos/go +7 -0
  46. data/lib/rouge/demos/gradle +10 -0
  47. data/lib/rouge/demos/graphql +17 -0
  48. data/lib/rouge/demos/groovy +9 -0
  49. data/lib/rouge/demos/hack +5 -0
  50. data/lib/rouge/demos/haml +5 -0
  51. data/lib/rouge/demos/handlebars +7 -0
  52. data/lib/rouge/demos/haskell +6 -0
  53. data/lib/rouge/demos/hcl +7 -0
  54. data/lib/rouge/demos/html +8 -0
  55. data/lib/rouge/demos/http +14 -0
  56. data/lib/rouge/demos/hylang +10 -0
  57. data/lib/rouge/demos/idlang +8 -0
  58. data/lib/rouge/demos/igorpro +9 -0
  59. data/lib/rouge/demos/ini +4 -0
  60. data/lib/rouge/demos/io +11 -0
  61. data/lib/rouge/demos/irb +4 -0
  62. data/lib/rouge/demos/irb_output +2 -0
  63. data/lib/rouge/demos/java +5 -0
  64. data/lib/rouge/demos/javascript +1 -0
  65. data/lib/rouge/demos/jinja +9 -0
  66. data/lib/rouge/demos/json +1 -0
  67. data/lib/rouge/demos/json-doc +1 -0
  68. data/lib/rouge/demos/jsonnet +28 -0
  69. data/lib/rouge/demos/jsp +29 -0
  70. data/lib/rouge/demos/jsx +17 -0
  71. data/lib/rouge/demos/julia +11 -0
  72. data/lib/rouge/demos/kotlin +3 -0
  73. data/lib/rouge/demos/lasso +12 -0
  74. data/lib/rouge/demos/liquid +11 -0
  75. data/lib/rouge/demos/literate_coffeescript +3 -0
  76. data/lib/rouge/demos/literate_haskell +7 -0
  77. data/lib/rouge/demos/llvm +20 -0
  78. data/lib/rouge/demos/lua +12 -0
  79. data/lib/rouge/demos/m68k +16 -0
  80. data/lib/rouge/demos/make +6 -0
  81. data/lib/rouge/demos/markdown +4 -0
  82. data/lib/rouge/demos/mathematica +8 -0
  83. data/lib/rouge/demos/matlab +6 -0
  84. data/lib/rouge/demos/moonscript +16 -0
  85. data/lib/rouge/demos/mosel +10 -0
  86. data/lib/rouge/demos/mxml +22 -0
  87. data/lib/rouge/demos/nasm +26 -0
  88. data/lib/rouge/demos/nginx +5 -0
  89. data/lib/rouge/demos/nim +27 -0
  90. data/lib/rouge/demos/nix +19 -0
  91. data/lib/rouge/demos/objective_c +18 -0
  92. data/lib/rouge/demos/ocaml +12 -0
  93. data/lib/rouge/demos/pascal +14 -0
  94. data/lib/rouge/demos/perl +5 -0
  95. data/lib/rouge/demos/php +3 -0
  96. data/lib/rouge/demos/plaintext +1 -0
  97. data/lib/rouge/demos/plist +142 -0
  98. data/lib/rouge/demos/pony +17 -0
  99. data/lib/rouge/demos/powershell +49 -0
  100. data/lib/rouge/demos/praat +26 -0
  101. data/lib/rouge/demos/prolog +9 -0
  102. data/lib/rouge/demos/prometheus +9 -0
  103. data/lib/rouge/demos/properties +7 -0
  104. data/lib/rouge/demos/protobuf +5 -0
  105. data/lib/rouge/demos/puppet +6 -0
  106. data/lib/rouge/demos/python +6 -0
  107. data/lib/rouge/demos/q +2 -0
  108. data/lib/rouge/demos/qml +9 -0
  109. data/lib/rouge/demos/r +8 -0
  110. data/lib/rouge/demos/racket +24 -0
  111. data/lib/rouge/demos/ruby +9 -0
  112. data/lib/rouge/demos/rust +12 -0
  113. data/lib/rouge/demos/sass +3 -0
  114. data/lib/rouge/demos/scala +3 -0
  115. data/lib/rouge/demos/scheme +4 -0
  116. data/lib/rouge/demos/scss +5 -0
  117. data/lib/rouge/demos/sed +4 -0
  118. data/lib/rouge/demos/shell +2 -0
  119. data/lib/rouge/demos/sieve +10 -0
  120. data/lib/rouge/demos/slim +17 -0
  121. data/lib/rouge/demos/smalltalk +6 -0
  122. data/lib/rouge/demos/smarty +12 -0
  123. data/lib/rouge/demos/sml +4 -0
  124. data/lib/rouge/demos/sqf +14 -0
  125. data/lib/rouge/demos/sql +1 -0
  126. data/lib/rouge/demos/swift +5 -0
  127. data/lib/rouge/demos/tap +5 -0
  128. data/lib/rouge/demos/tcl +1 -0
  129. data/lib/rouge/demos/terraform +31 -0
  130. data/lib/rouge/demos/tex +1 -0
  131. data/lib/rouge/demos/toml +9 -0
  132. data/lib/rouge/demos/tsx +17 -0
  133. data/lib/rouge/demos/tulip +13 -0
  134. data/lib/rouge/demos/turtle +26 -0
  135. data/lib/rouge/demos/twig +9 -0
  136. data/lib/rouge/demos/typescript +1 -0
  137. data/lib/rouge/demos/vala +8 -0
  138. data/lib/rouge/demos/vb +4 -0
  139. data/lib/rouge/demos/verilog +27 -0
  140. data/lib/rouge/demos/vhdl +23 -0
  141. data/lib/rouge/demos/viml +14 -0
  142. data/lib/rouge/demos/vue +11 -0
  143. data/lib/rouge/demos/wollok +11 -0
  144. data/lib/rouge/demos/xml +2 -0
  145. data/lib/rouge/demos/yaml +4 -0
  146. data/lib/rouge/formatter.rb +76 -0
  147. data/lib/rouge/formatters/html.rb +38 -0
  148. data/lib/rouge/formatters/html_inline.rb +31 -0
  149. data/lib/rouge/formatters/html_legacy.rb +45 -0
  150. data/lib/rouge/formatters/html_linewise.rb +28 -0
  151. data/lib/rouge/formatters/html_pygments.rb +18 -0
  152. data/lib/rouge/formatters/html_table.rb +62 -0
  153. data/lib/rouge/formatters/null.rb +20 -0
  154. data/lib/rouge/formatters/terminal256.rb +181 -0
  155. data/lib/rouge/guesser.rb +57 -0
  156. data/lib/rouge/guessers/disambiguation.rb +106 -0
  157. data/lib/rouge/guessers/filename.rb +27 -0
  158. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  159. data/lib/rouge/guessers/mimetype.rb +16 -0
  160. data/lib/rouge/guessers/modeline.rb +46 -0
  161. data/lib/rouge/guessers/source.rb +31 -0
  162. data/lib/rouge/guessers/util.rb +34 -0
  163. data/lib/rouge/lexer.rb +462 -0
  164. data/lib/rouge/lexers/abap.rb +240 -0
  165. data/lib/rouge/lexers/actionscript.rb +196 -0
  166. data/lib/rouge/lexers/alda.rb +43 -0
  167. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  168. data/lib/rouge/lexers/apache.rb +73 -0
  169. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  170. data/lib/rouge/lexers/apple_script.rb +369 -0
  171. data/lib/rouge/lexers/awk.rb +162 -0
  172. data/lib/rouge/lexers/biml.rb +43 -0
  173. data/lib/rouge/lexers/bsl.rb +82 -0
  174. data/lib/rouge/lexers/c.rb +213 -0
  175. data/lib/rouge/lexers/ceylon.rb +124 -0
  176. data/lib/rouge/lexers/cfscript.rb +154 -0
  177. data/lib/rouge/lexers/clojure.rb +113 -0
  178. data/lib/rouge/lexers/cmake.rb +207 -0
  179. data/lib/rouge/lexers/coffeescript.rb +175 -0
  180. data/lib/rouge/lexers/common_lisp.rb +346 -0
  181. data/lib/rouge/lexers/conf.rb +25 -0
  182. data/lib/rouge/lexers/console.rb +137 -0
  183. data/lib/rouge/lexers/coq.rb +188 -0
  184. data/lib/rouge/lexers/cpp.rb +79 -0
  185. data/lib/rouge/lexers/crystal.rb +430 -0
  186. data/lib/rouge/lexers/csharp.rb +115 -0
  187. data/lib/rouge/lexers/css.rb +274 -0
  188. data/lib/rouge/lexers/d.rb +177 -0
  189. data/lib/rouge/lexers/dart.rb +105 -0
  190. data/lib/rouge/lexers/diff.rb +33 -0
  191. data/lib/rouge/lexers/digdag.rb +70 -0
  192. data/lib/rouge/lexers/docker.rb +51 -0
  193. data/lib/rouge/lexers/dot.rb +69 -0
  194. data/lib/rouge/lexers/eiffel.rb +66 -0
  195. data/lib/rouge/lexers/elixir.rb +134 -0
  196. data/lib/rouge/lexers/elm.rb +90 -0
  197. data/lib/rouge/lexers/erb.rb +53 -0
  198. data/lib/rouge/lexers/erlang.rb +115 -0
  199. data/lib/rouge/lexers/factor.rb +303 -0
  200. data/lib/rouge/lexers/fortran.rb +178 -0
  201. data/lib/rouge/lexers/fsharp.rb +119 -0
  202. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  203. data/lib/rouge/lexers/gherkin.rb +138 -0
  204. data/lib/rouge/lexers/glsl.rb +136 -0
  205. data/lib/rouge/lexers/go.rb +175 -0
  206. data/lib/rouge/lexers/gradle.rb +38 -0
  207. data/lib/rouge/lexers/graphql.rb +254 -0
  208. data/lib/rouge/lexers/groovy.rb +113 -0
  209. data/lib/rouge/lexers/hack.rb +49 -0
  210. data/lib/rouge/lexers/haml.rb +230 -0
  211. data/lib/rouge/lexers/handlebars.rb +80 -0
  212. data/lib/rouge/lexers/haskell.rb +198 -0
  213. data/lib/rouge/lexers/hcl.rb +163 -0
  214. data/lib/rouge/lexers/html.rb +140 -0
  215. data/lib/rouge/lexers/http.rb +81 -0
  216. data/lib/rouge/lexers/hylang.rb +94 -0
  217. data/lib/rouge/lexers/idlang.rb +312 -0
  218. data/lib/rouge/lexers/igorpro.rb +664 -0
  219. data/lib/rouge/lexers/ini.rb +54 -0
  220. data/lib/rouge/lexers/io.rb +69 -0
  221. data/lib/rouge/lexers/irb.rb +67 -0
  222. data/lib/rouge/lexers/java.rb +88 -0
  223. data/lib/rouge/lexers/javascript.rb +283 -0
  224. data/lib/rouge/lexers/jinja.rb +138 -0
  225. data/lib/rouge/lexers/json.rb +30 -0
  226. data/lib/rouge/lexers/json_doc.rb +24 -0
  227. data/lib/rouge/lexers/jsonnet.rb +152 -0
  228. data/lib/rouge/lexers/jsp.rb +120 -0
  229. data/lib/rouge/lexers/jsx.rb +104 -0
  230. data/lib/rouge/lexers/julia.rb +167 -0
  231. data/lib/rouge/lexers/kotlin.rb +127 -0
  232. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  233. data/lib/rouge/lexers/lasso.rb +215 -0
  234. data/lib/rouge/lexers/liquid.rb +288 -0
  235. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  236. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  237. data/lib/rouge/lexers/llvm.rb +81 -0
  238. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  239. data/lib/rouge/lexers/lua.rb +126 -0
  240. data/lib/rouge/lexers/m68k.rb +144 -0
  241. data/lib/rouge/lexers/make.rb +113 -0
  242. data/lib/rouge/lexers/markdown.rb +155 -0
  243. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  244. data/lib/rouge/lexers/mathematica.rb +96 -0
  245. data/lib/rouge/lexers/matlab/builtins.rb +13 -0
  246. data/lib/rouge/lexers/matlab.rb +72 -0
  247. data/lib/rouge/lexers/moonscript.rb +115 -0
  248. data/lib/rouge/lexers/mosel.rb +232 -0
  249. data/lib/rouge/lexers/mxml.rb +69 -0
  250. data/lib/rouge/lexers/nasm.rb +199 -0
  251. data/lib/rouge/lexers/nginx.rb +72 -0
  252. data/lib/rouge/lexers/nim.rb +153 -0
  253. data/lib/rouge/lexers/nix.rb +211 -0
  254. data/lib/rouge/lexers/objective_c.rb +195 -0
  255. data/lib/rouge/lexers/ocaml.rb +101 -0
  256. data/lib/rouge/lexers/pascal.rb +67 -0
  257. data/lib/rouge/lexers/perl.rb +201 -0
  258. data/lib/rouge/lexers/php/builtins.rb +196 -0
  259. data/lib/rouge/lexers/php.rb +194 -0
  260. data/lib/rouge/lexers/plain_text.rb +27 -0
  261. data/lib/rouge/lexers/plist.rb +47 -0
  262. data/lib/rouge/lexers/pony.rb +94 -0
  263. data/lib/rouge/lexers/powershell.rb +679 -0
  264. data/lib/rouge/lexers/praat.rb +351 -0
  265. data/lib/rouge/lexers/prolog.rb +61 -0
  266. data/lib/rouge/lexers/prometheus.rb +123 -0
  267. data/lib/rouge/lexers/properties.rb +52 -0
  268. data/lib/rouge/lexers/protobuf.rb +71 -0
  269. data/lib/rouge/lexers/puppet.rb +129 -0
  270. data/lib/rouge/lexers/python.rb +247 -0
  271. data/lib/rouge/lexers/q.rb +125 -0
  272. data/lib/rouge/lexers/qml.rb +74 -0
  273. data/lib/rouge/lexers/r.rb +90 -0
  274. data/lib/rouge/lexers/racket.rb +545 -0
  275. data/lib/rouge/lexers/ruby.rb +439 -0
  276. data/lib/rouge/lexers/rust.rb +198 -0
  277. data/lib/rouge/lexers/sass/common.rb +181 -0
  278. data/lib/rouge/lexers/sass.rb +75 -0
  279. data/lib/rouge/lexers/scala.rb +143 -0
  280. data/lib/rouge/lexers/scheme.rb +113 -0
  281. data/lib/rouge/lexers/scss.rb +35 -0
  282. data/lib/rouge/lexers/sed.rb +173 -0
  283. data/lib/rouge/lexers/shell.rb +190 -0
  284. data/lib/rouge/lexers/sieve.rb +97 -0
  285. data/lib/rouge/lexers/slim.rb +229 -0
  286. data/lib/rouge/lexers/smalltalk.rb +117 -0
  287. data/lib/rouge/lexers/smarty.rb +81 -0
  288. data/lib/rouge/lexers/sml.rb +345 -0
  289. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  290. data/lib/rouge/lexers/sqf.rb +109 -0
  291. data/lib/rouge/lexers/sql.rb +141 -0
  292. data/lib/rouge/lexers/swift.rb +182 -0
  293. data/lib/rouge/lexers/tap.rb +89 -0
  294. data/lib/rouge/lexers/tcl.rb +193 -0
  295. data/lib/rouge/lexers/terraform.rb +105 -0
  296. data/lib/rouge/lexers/tex.rb +70 -0
  297. data/lib/rouge/lexers/toml.rb +68 -0
  298. data/lib/rouge/lexers/tsx.rb +20 -0
  299. data/lib/rouge/lexers/tulip.rb +108 -0
  300. data/lib/rouge/lexers/turtle.rb +64 -0
  301. data/lib/rouge/lexers/twig.rb +40 -0
  302. data/lib/rouge/lexers/typescript/common.rb +34 -0
  303. data/lib/rouge/lexers/typescript.rb +23 -0
  304. data/lib/rouge/lexers/vala.rb +78 -0
  305. data/lib/rouge/lexers/vb.rb +165 -0
  306. data/lib/rouge/lexers/verilog.rb +165 -0
  307. data/lib/rouge/lexers/vhdl.rb +98 -0
  308. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  309. data/lib/rouge/lexers/viml.rb +102 -0
  310. data/lib/rouge/lexers/vue.rb +124 -0
  311. data/lib/rouge/lexers/wollok.rb +104 -0
  312. data/lib/rouge/lexers/xml.rb +58 -0
  313. data/lib/rouge/lexers/yaml.rb +374 -0
  314. data/lib/rouge/plugins/redcarpet.rb +31 -0
  315. data/lib/rouge/regex_lexer.rb +442 -0
  316. data/lib/rouge/template_lexer.rb +21 -0
  317. data/lib/rouge/text_analyzer.rb +50 -0
  318. data/lib/rouge/theme.rb +214 -0
  319. data/lib/rouge/themes/base16.rb +131 -0
  320. data/lib/rouge/themes/colorful.rb +68 -0
  321. data/lib/rouge/themes/github.rb +72 -0
  322. data/lib/rouge/themes/gruvbox.rb +168 -0
  323. data/lib/rouge/themes/igor_pro.rb +21 -0
  324. data/lib/rouge/themes/molokai.rb +83 -0
  325. data/lib/rouge/themes/monokai.rb +93 -0
  326. data/lib/rouge/themes/monokai_sublime.rb +92 -0
  327. data/lib/rouge/themes/pastie.rb +70 -0
  328. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  329. data/lib/rouge/themes/tulip.rb +70 -0
  330. data/lib/rouge/token.rb +183 -0
  331. data/lib/rouge/util.rb +102 -0
  332. data/lib/rouge/version.rb +8 -0
  333. data/lib/rouge.rb +84 -0
  334. data/rouge.gemspec +25 -0
  335. metadata +384 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 832157ee3088afe3a8bd9ed2b8de012c844a27aa956668a6a4b8c5905fd7f385
4
+ data.tar.gz: e7fa788e26daa2c847ea925474372b3220a1765f7d9375ada1656bc141acc6b9
5
+ SHA512:
6
+ metadata.gz: b09b609d766b8e8e3d70db8a3fa507116f4a8d10e0441aacb56ccbaf3c88ae487dfc23d6f820af95ff8de51391a9ba1774df13fa40db08a4d9f6bc643454e542
7
+ data.tar.gz: a47375dbe70cea58959a4398544ed40e7f164f4e114ba123484c25a3007baa9e53cdcbfcc596c4949bfaf4a3c794608cc9b83f6f372ef57dec997208b49939df
data/Gemfile ADDED
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'http://rubygems.org'
4
+
5
+ gemspec
6
+
7
+ gem 'bundler', '~> 1.15'
8
+ gem 'rake'
9
+
10
+ gem 'minitest', '>= 5.0'
11
+ gem 'minitest-power_assert'
12
+
13
+ gem 'rubocop', '~> 0.49.1'
14
+
15
+ # don't try to install redcarpet under jruby
16
+ gem 'redcarpet', :platforms => :ruby
17
+
18
+ group :development do
19
+ gem 'pry'
20
+
21
+ # docs
22
+ gem 'yard'
23
+ gem 'github-markup'
24
+
25
+ # for visual tests
26
+ gem 'sinatra'
27
+ gem 'shotgun'
28
+ 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 #
data/bin/rougify ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'pathname'
5
+ ROOT_DIR = Pathname.new(__FILE__).dirname.parent
6
+ load ROOT_DIR.join('lib/rouge.rb')
7
+ load ROOT_DIR.join('lib/rouge/cli.rb')
8
+ Signal.trap('PIPE', 'SYSTEM_DEFAULT') if Signal.list.include? 'PIPE'
9
+
10
+ begin
11
+ Rouge::CLI.parse(ARGV).run
12
+ rescue Rouge::CLI::Error => e
13
+ puts e.message
14
+ exit e.status
15
+ rescue Interrupt
16
+ $stderr.puts "\nrouge: interrupted"
17
+ exit 2
18
+ end
data/lib/rouge/cli.rb ADDED
@@ -0,0 +1,432 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ # not required by the main lib.
5
+ # to use this module, require 'rouge/cli'.
6
+
7
+ module Rouge
8
+ class FileReader
9
+ attr_reader :input
10
+ def initialize(input)
11
+ @input = input
12
+ end
13
+
14
+ def file
15
+ case input
16
+ when '-'
17
+ IO.new($stdin.fileno, 'rt:bom|utf-8')
18
+ when String
19
+ File.new(input, 'rt:bom|utf-8')
20
+ when ->(i){ i.respond_to? :read }
21
+ input
22
+ end
23
+ end
24
+
25
+ def read
26
+ @read ||= begin
27
+ file.read
28
+ rescue => e
29
+ $stderr.puts "unable to open #{input}: #{e.message}"
30
+ exit 1
31
+ ensure
32
+ file.close
33
+ end
34
+ end
35
+ end
36
+
37
+ class CLI
38
+ def self.doc
39
+ return enum_for(:doc) unless block_given?
40
+
41
+ yield %|usage: rougify [command] [args...]|
42
+ yield %||
43
+ yield %|where <command> is one of:|
44
+ yield %| highlight #{Highlight.desc}|
45
+ yield %| help #{Help.desc}|
46
+ yield %| style #{Style.desc}|
47
+ yield %| list #{List.desc}|
48
+ yield %| guess #{Guess.desc}|
49
+ yield %| version #{Version.desc}|
50
+ yield %||
51
+ yield %|See `rougify help <command>` for more info.|
52
+ end
53
+
54
+ class Error < StandardError
55
+ attr_reader :message, :status
56
+ def initialize(message, status=1)
57
+ @message = message
58
+ @status = status
59
+ end
60
+ end
61
+
62
+ def self.parse(argv=ARGV)
63
+ argv = normalize_syntax(argv)
64
+
65
+ mode = argv.shift
66
+
67
+ klass = class_from_arg(mode)
68
+ return klass.parse(argv) if klass
69
+
70
+ case mode
71
+ when '-h', '--help', 'help', '-help', nil
72
+ Help.parse(argv)
73
+ else
74
+ argv.unshift(mode) if mode
75
+ Highlight.parse(argv)
76
+ end
77
+ end
78
+
79
+ def initialize(options={})
80
+ end
81
+
82
+ def self.error!(msg, status=1)
83
+ raise Error.new(msg, status)
84
+ end
85
+
86
+ def error!(*a)
87
+ self.class.error!(*a)
88
+ end
89
+
90
+ def self.class_from_arg(arg)
91
+ case arg
92
+ when 'version', '--version', '-v'
93
+ Version
94
+ when 'help'
95
+ Help
96
+ when 'highlight', 'hi'
97
+ Highlight
98
+ when 'style'
99
+ Style
100
+ when 'list'
101
+ List
102
+ when 'guess'
103
+ Guess
104
+ end
105
+ end
106
+
107
+ class Version < CLI
108
+ def self.desc
109
+ "print the rouge version number"
110
+ end
111
+
112
+ def self.parse(*); new; end
113
+
114
+ def run
115
+ puts Rouge.version
116
+ end
117
+ end
118
+
119
+ class Help < CLI
120
+ def self.desc
121
+ "print help info"
122
+ end
123
+
124
+ def self.doc
125
+ return enum_for(:doc) unless block_given?
126
+
127
+ yield %|usage: rougify help <command>|
128
+ yield %||
129
+ yield %|print help info for <command>.|
130
+ end
131
+
132
+ def self.parse(argv)
133
+ opts = { :mode => CLI }
134
+ until argv.empty?
135
+ arg = argv.shift
136
+ klass = class_from_arg(arg)
137
+ if klass
138
+ opts[:mode] = klass
139
+ next
140
+ end
141
+ end
142
+ new(opts)
143
+ end
144
+
145
+ def initialize(opts={})
146
+ @mode = opts[:mode]
147
+ end
148
+
149
+ def run
150
+ @mode.doc.each(&method(:puts))
151
+ end
152
+ end
153
+
154
+ class Highlight < CLI
155
+ def self.desc
156
+ "highlight code"
157
+ end
158
+
159
+ def self.doc
160
+ return enum_for(:doc) unless block_given?
161
+
162
+ yield %[usage: rougify highlight <filename> [options...]]
163
+ yield %[ rougify highlight [options...]]
164
+ yield %[]
165
+ yield %[--input-file|-i <filename> specify a file to read, or - to use stdin]
166
+ yield %[]
167
+ yield %[--lexer|-l <lexer> specify the lexer to use.]
168
+ yield %[ If not provided, rougify will try to guess]
169
+ yield %[ based on --mimetype, the filename, and the]
170
+ yield %[ file contents.]
171
+ yield %[]
172
+ yield %[--formatter|-f <opts> specify the output formatter to use.]
173
+ yield %[ If not provided, rougify will default to]
174
+ yield %[ terminal256.]
175
+ yield %[]
176
+ yield %[--theme|-t <theme> specify the theme to use for highlighting]
177
+ yield %[ the file. (only applies to some formatters)]
178
+ yield %[]
179
+ yield %[--mimetype|-m <mimetype> specify a mimetype for lexer guessing]
180
+ yield %[]
181
+ yield %[--lexer-opts|-L <opts> specify lexer options in CGI format]
182
+ yield %[ (opt1=val1&opt2=val2)]
183
+ yield %[]
184
+ yield %[--formatter-opts|-F <opts> specify formatter options in CGI format]
185
+ yield %[ (opt1=val1&opt2=val2)]
186
+ yield %[]
187
+ yield %[--require|-r <filename> require a filename or library before]
188
+ yield %[ highlighting]
189
+ end
190
+
191
+ def self.parse(argv)
192
+ opts = {
193
+ :formatter => 'terminal256',
194
+ :theme => 'thankful_eyes',
195
+ :css_class => 'codehilite',
196
+ :input_file => '-',
197
+ :lexer_opts => {},
198
+ :formatter_opts => {},
199
+ :requires => [],
200
+ }
201
+
202
+ until argv.empty?
203
+ arg = argv.shift
204
+ case arg
205
+ when '-r', '--require'
206
+ opts[:requires] << argv.shift
207
+ when '--input-file', '-i'
208
+ opts[:input_file] = argv.shift
209
+ when '--mimetype', '-m'
210
+ opts[:mimetype] = argv.shift
211
+ when '--lexer', '-l'
212
+ opts[:lexer] = argv.shift
213
+ when '--formatter-preset', '-f'
214
+ opts[:formatter] = argv.shift
215
+ when '--theme', '-t'
216
+ opts[:theme] = argv.shift
217
+ when '--css-class', '-c'
218
+ opts[:css_class] = argv.shift
219
+ when '--lexer-opts', '-L'
220
+ opts[:lexer_opts] = parse_cgi(argv.shift)
221
+ when /^--/
222
+ error! "unknown option #{arg.inspect}"
223
+ else
224
+ opts[:input_file] = arg
225
+ end
226
+ end
227
+
228
+ new(opts)
229
+ end
230
+
231
+ def input_stream
232
+ @input_stream ||= FileReader.new(@input_file)
233
+ end
234
+
235
+ def input
236
+ @input ||= input_stream.read
237
+ end
238
+
239
+ def lexer_class
240
+ @lexer_class ||= Lexer.guess(
241
+ :filename => @input_file,
242
+ :mimetype => @mimetype,
243
+ :source => input_stream,
244
+ )
245
+ end
246
+
247
+ def lexer
248
+ @lexer ||= lexer_class.new(@lexer_opts)
249
+ end
250
+
251
+ attr_reader :input_file, :lexer_name, :mimetype, :formatter
252
+
253
+ def initialize(opts={})
254
+ Rouge::Lexer.enable_debug!
255
+
256
+ opts[:requires].each do |r|
257
+ require r
258
+ end
259
+
260
+ @input_file = opts[:input_file]
261
+
262
+ if opts[:lexer]
263
+ @lexer_class = Lexer.find(opts[:lexer]) \
264
+ or error! "unknown lexer #{opts[:lexer].inspect}"
265
+ else
266
+ @lexer_name = opts[:lexer]
267
+ @mimetype = opts[:mimetype]
268
+ end
269
+
270
+ @lexer_opts = opts[:lexer_opts]
271
+
272
+ theme = Theme.find(opts[:theme]).new or error! "unknown theme #{opts[:theme]}"
273
+
274
+ @formatter = case opts[:formatter]
275
+ when 'terminal256' then Formatters::Terminal256.new(theme)
276
+ when 'html' then Formatters::HTML.new
277
+ when 'html-pygments' then Formatters::HTMLPygments.new(Formatters::HTML.new, opts[:css_class])
278
+ when 'html-inline' then Formatters::HTMLInline.new(theme)
279
+ when 'html-table' then Formatters::HTMLTable.new(Formatters::HTML.new)
280
+ when 'null', 'raw', 'tokens' then Formatters::Null.new
281
+ else
282
+ error! "unknown formatter preset #{opts[:formatter]}"
283
+ end
284
+ end
285
+
286
+ def run
287
+ formatter.format(lexer.lex(input), &method(:print))
288
+ end
289
+
290
+ private_class_method
291
+ def self.parse_cgi(str)
292
+ pairs = CGI.parse(str).map { |k, v| [k.to_sym, v.first] }
293
+ Hash[pairs]
294
+ end
295
+ end
296
+
297
+ class Style < CLI
298
+ def self.desc
299
+ "print CSS styles"
300
+ end
301
+
302
+ def self.doc
303
+ return enum_for(:doc) unless block_given?
304
+
305
+ yield %|usage: rougify style [<theme-name>] [<options>]|
306
+ yield %||
307
+ yield %|Print CSS styles for the given theme. Extra options are|
308
+ yield %|passed to the theme. To select a mode (light/dark) for the|
309
+ yield %|theme, append '.light' or '.dark' to the <theme-name>|
310
+ yield %|respectively. Theme defaults to thankful_eyes.|
311
+ yield %||
312
+ yield %|options:|
313
+ yield %| --scope (default: .highlight) a css selector to scope by|
314
+ yield %||
315
+ yield %|available themes:|
316
+ yield %| #{Theme.registry.keys.sort.join(', ')}|
317
+ end
318
+
319
+ def self.parse(argv)
320
+ opts = { :theme_name => 'thankful_eyes' }
321
+
322
+ until argv.empty?
323
+ arg = argv.shift
324
+ case arg
325
+ when /--(\w+)/
326
+ opts[$1.tr('-', '_').to_sym] = argv.shift
327
+ else
328
+ opts[:theme_name] = arg
329
+ end
330
+ end
331
+
332
+ new(opts)
333
+ end
334
+
335
+ def initialize(opts)
336
+ theme_name = opts.delete(:theme_name)
337
+ theme_class = Theme.find(theme_name) \
338
+ or error! "unknown theme: #{theme_name}"
339
+
340
+ @theme = theme_class.new(opts)
341
+ end
342
+
343
+ def run
344
+ @theme.render(&method(:puts))
345
+ end
346
+ end
347
+
348
+ class List < CLI
349
+ def self.desc
350
+ "list available lexers"
351
+ end
352
+
353
+ def self.doc
354
+ return enum_for(:doc) unless block_given?
355
+
356
+ yield %|usage: rouge list|
357
+ yield %||
358
+ yield %|print a list of all available lexers with their descriptions.|
359
+ end
360
+
361
+ def self.parse(argv)
362
+ new
363
+ end
364
+
365
+ def run
366
+ puts "== Available Lexers =="
367
+
368
+ Lexer.all.sort_by(&:tag).each do |lexer|
369
+ desc = String.new("#{lexer.desc}")
370
+ if lexer.aliases.any?
371
+ desc << " [aliases: #{lexer.aliases.join(',')}]"
372
+ end
373
+ puts "%s: %s" % [lexer.tag, desc]
374
+
375
+ lexer.option_docs.keys.sort.each do |option|
376
+ puts " ?#{option}= #{lexer.option_docs[option]}"
377
+ end
378
+
379
+ puts
380
+ end
381
+ end
382
+ end
383
+
384
+ class Guess < CLI
385
+ def self.desc
386
+ "guess the languages of file"
387
+ end
388
+
389
+ def self.parse(args)
390
+ new(input_file: args.shift)
391
+ end
392
+
393
+ attr_reader :input_file, :input_source
394
+
395
+ def initialize(opts)
396
+ @input_file = opts[:input_file] || '-'
397
+ @input_source = FileReader.new(@input_file).read
398
+ end
399
+
400
+ def lexers
401
+ Lexer.guesses(
402
+ filename: input_file,
403
+ source: input_source,
404
+ )
405
+ end
406
+
407
+ def run
408
+ lexers.each do |l|
409
+ puts "{ tag: #{l.tag.inspect}, title: #{l.title.inspect}, desc: #{l.desc.inspect} }"
410
+ end
411
+ end
412
+ end
413
+
414
+
415
+ private_class_method
416
+ def self.normalize_syntax(argv)
417
+ out = []
418
+ argv.each do |arg|
419
+ case arg
420
+ when /^(--\w+)=(.*)$/
421
+ out << $1 << $2
422
+ when /^(-\w)(.+)$/
423
+ out << $1 << $2
424
+ else
425
+ out << arg
426
+ end
427
+ end
428
+
429
+ out
430
+ end
431
+ end
432
+ end
@@ -0,0 +1,6 @@
1
+ lo_obj ?= lo_obj->do_nothing( 'Char' && ` String` ).
2
+
3
+ SELECT SINGLE * FROM mara INTO ls_mara WHERE matkl EQ '1324'.
4
+ LOOP AT lt_mara ASSIGNING <mara>.
5
+ CHECK <mara>-mtart EQ '0001'.
6
+ ENDLOOP.
@@ -0,0 +1,4 @@
1
+ function hello(name:String):void
2
+ {
3
+ trace("hello " + name);
4
+ }
@@ -0,0 +1,10 @@
1
+ # Across the Sea
2
+
3
+ (tempo! 90)
4
+ (quant! 95)
5
+
6
+ piano:
7
+ o5 g- > g- g-/f > e- d-4. < b-8 d-2 | c-4 e- d- d- <b-1/>g-
8
+
9
+ flute:
10
+ r2 g-4 a- b-2. > d-32~ e-16.~8 < b-2 a- g-1