rouge 3.1.0 → 3.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (318) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +17 -3
  3. data/bin/rougify +1 -0
  4. data/lib/rouge.rb +67 -42
  5. data/lib/rouge/cli.rb +87 -18
  6. data/lib/rouge/demos/ada +26 -0
  7. data/lib/rouge/demos/apex +9 -0
  8. data/lib/rouge/demos/armasm +12 -0
  9. data/lib/rouge/demos/batchfile +3 -0
  10. data/lib/rouge/demos/bbcbasic +6 -0
  11. data/lib/rouge/demos/bpf +7 -0
  12. data/lib/rouge/demos/brainfuck +5 -0
  13. data/lib/rouge/demos/clean +6 -0
  14. data/lib/rouge/demos/cmhg +8 -0
  15. data/lib/rouge/demos/crystal +45 -0
  16. data/lib/rouge/demos/csvs +8 -0
  17. data/lib/rouge/demos/cuda +11 -0
  18. data/lib/rouge/demos/cypher +5 -0
  19. data/lib/rouge/demos/cython +6 -0
  20. data/lib/rouge/demos/datastudio +21 -0
  21. data/lib/rouge/demos/ecl +18 -0
  22. data/lib/rouge/demos/eex +1 -0
  23. data/lib/rouge/demos/epp +4 -0
  24. data/lib/rouge/demos/escape +3 -0
  25. data/lib/rouge/demos/freefem +16 -0
  26. data/lib/rouge/demos/gdscript +18 -0
  27. data/lib/rouge/demos/ghc-cmm +23 -0
  28. data/lib/rouge/demos/ghc-core +26 -0
  29. data/lib/rouge/demos/haxe +5 -0
  30. data/lib/rouge/demos/hcl +7 -0
  31. data/lib/rouge/demos/hocon +8 -0
  32. data/lib/rouge/demos/hql +5 -0
  33. data/lib/rouge/demos/isbl +4 -0
  34. data/lib/rouge/demos/jsl +3 -0
  35. data/lib/rouge/demos/jsp +29 -0
  36. data/lib/rouge/demos/liquid +0 -1
  37. data/lib/rouge/demos/lustre +6 -0
  38. data/lib/rouge/demos/lutin +18 -0
  39. data/lib/rouge/demos/m68k +16 -0
  40. data/lib/rouge/demos/magik +6 -0
  41. data/lib/rouge/demos/mason +22 -0
  42. data/lib/rouge/demos/mathematica +8 -0
  43. data/lib/rouge/demos/minizinc +23 -0
  44. data/lib/rouge/demos/msgtrans +4 -0
  45. data/lib/rouge/demos/nasm +6 -6
  46. data/lib/rouge/demos/nesasm +11 -0
  47. data/lib/rouge/demos/objective_cpp +17 -0
  48. data/lib/rouge/demos/openedge +4 -0
  49. data/lib/rouge/demos/opentype_feature_file +6 -0
  50. data/lib/rouge/demos/plist +1 -132
  51. data/lib/rouge/demos/powershell +12 -48
  52. data/lib/rouge/demos/q +6 -0
  53. data/lib/rouge/demos/reasonml +12 -0
  54. data/lib/rouge/demos/rego +8 -0
  55. data/lib/rouge/demos/robot_framework +27 -0
  56. data/lib/rouge/demos/sas +13 -0
  57. data/lib/rouge/demos/slice +10 -0
  58. data/lib/rouge/demos/solidity +13 -0
  59. data/lib/rouge/demos/sparql +6 -0
  60. data/lib/rouge/demos/sqf +14 -0
  61. data/lib/rouge/demos/supercollider +11 -0
  62. data/lib/rouge/demos/terraform +16 -0
  63. data/lib/rouge/demos/ttcn3 +6 -0
  64. data/lib/rouge/demos/vcl +12 -0
  65. data/lib/rouge/demos/xojo +14 -0
  66. data/lib/rouge/demos/xpath +2 -0
  67. data/lib/rouge/demos/xquery +22 -0
  68. data/lib/rouge/demos/yang +17 -0
  69. data/lib/rouge/formatter.rb +39 -2
  70. data/lib/rouge/formatters/html.rb +21 -2
  71. data/lib/rouge/formatters/html_inline.rb +1 -0
  72. data/lib/rouge/formatters/html_legacy.rb +1 -0
  73. data/lib/rouge/formatters/html_line_table.rb +53 -0
  74. data/lib/rouge/formatters/html_linewise.rb +7 -11
  75. data/lib/rouge/formatters/html_pygments.rb +2 -0
  76. data/lib/rouge/formatters/html_table.rb +21 -31
  77. data/lib/rouge/formatters/null.rb +1 -0
  78. data/lib/rouge/formatters/terminal256.rb +23 -5
  79. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  80. data/lib/rouge/formatters/tex.rb +92 -0
  81. data/lib/rouge/guesser.rb +2 -0
  82. data/lib/rouge/guessers/disambiguation.rb +35 -0
  83. data/lib/rouge/guessers/filename.rb +2 -0
  84. data/lib/rouge/guessers/glob_mapping.rb +3 -1
  85. data/lib/rouge/guessers/mimetype.rb +2 -0
  86. data/lib/rouge/guessers/modeline.rb +3 -1
  87. data/lib/rouge/guessers/source.rb +3 -1
  88. data/lib/rouge/guessers/util.rb +2 -0
  89. data/lib/rouge/lexer.rb +71 -15
  90. data/lib/rouge/lexers/abap.rb +13 -11
  91. data/lib/rouge/lexers/actionscript.rb +35 -34
  92. data/lib/rouge/lexers/ada.rb +162 -0
  93. data/lib/rouge/lexers/apache.rb +13 -15
  94. data/lib/rouge/lexers/apache/keywords.rb +15 -0
  95. data/lib/rouge/lexers/apex.rb +126 -0
  96. data/lib/rouge/lexers/apiblueprint.rb +2 -0
  97. data/lib/rouge/lexers/apple_script.rb +17 -14
  98. data/lib/rouge/lexers/armasm.rb +145 -0
  99. data/lib/rouge/lexers/awk.rb +26 -25
  100. data/lib/rouge/lexers/batchfile.rb +164 -0
  101. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  102. data/lib/rouge/lexers/biml.rb +6 -4
  103. data/lib/rouge/lexers/bpf.rb +118 -0
  104. data/lib/rouge/lexers/brainfuck.rb +53 -0
  105. data/lib/rouge/lexers/bsl.rb +13 -12
  106. data/lib/rouge/lexers/c.rb +35 -57
  107. data/lib/rouge/lexers/ceylon.rb +7 -34
  108. data/lib/rouge/lexers/cfscript.rb +27 -26
  109. data/lib/rouge/lexers/clean.rb +156 -0
  110. data/lib/rouge/lexers/clojure.rb +15 -14
  111. data/lib/rouge/lexers/cmake.rb +16 -14
  112. data/lib/rouge/lexers/cmhg.rb +34 -0
  113. data/lib/rouge/lexers/coffeescript.rb +90 -49
  114. data/lib/rouge/lexers/common_lisp.rb +39 -38
  115. data/lib/rouge/lexers/conf.rb +7 -6
  116. data/lib/rouge/lexers/console.rb +92 -38
  117. data/lib/rouge/lexers/coq.rb +27 -23
  118. data/lib/rouge/lexers/cpp.rb +24 -13
  119. data/lib/rouge/lexers/crystal.rb +430 -0
  120. data/lib/rouge/lexers/csharp.rb +29 -29
  121. data/lib/rouge/lexers/css.rb +24 -23
  122. data/lib/rouge/lexers/csvs.rb +44 -0
  123. data/lib/rouge/lexers/cuda.rb +35 -0
  124. data/lib/rouge/lexers/cypher.rb +108 -0
  125. data/lib/rouge/lexers/cython.rb +151 -0
  126. data/lib/rouge/lexers/d.rb +64 -63
  127. data/lib/rouge/lexers/dart.rb +34 -33
  128. data/lib/rouge/lexers/datastudio.rb +138 -0
  129. data/lib/rouge/lexers/diff.rb +10 -4
  130. data/lib/rouge/lexers/digdag.rb +3 -1
  131. data/lib/rouge/lexers/docker.rb +12 -11
  132. data/lib/rouge/lexers/dot.rb +19 -18
  133. data/lib/rouge/lexers/ecl.rb +175 -0
  134. data/lib/rouge/lexers/eex.rb +52 -0
  135. data/lib/rouge/lexers/eiffel.rb +21 -20
  136. data/lib/rouge/lexers/elixir.rb +52 -36
  137. data/lib/rouge/lexers/elm.rb +30 -29
  138. data/lib/rouge/lexers/epp.rb +51 -0
  139. data/lib/rouge/lexers/erb.rb +5 -4
  140. data/lib/rouge/lexers/erlang.rb +1 -0
  141. data/lib/rouge/lexers/escape.rb +58 -0
  142. data/lib/rouge/lexers/factor.rb +41 -40
  143. data/lib/rouge/lexers/fortran.rb +36 -34
  144. data/lib/rouge/lexers/freefem.rb +240 -0
  145. data/lib/rouge/lexers/fsharp.rb +33 -31
  146. data/lib/rouge/lexers/gdscript.rb +171 -0
  147. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  148. data/lib/rouge/lexers/ghc_core.rb +151 -0
  149. data/lib/rouge/lexers/gherkin.rb +17 -14
  150. data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
  151. data/lib/rouge/lexers/glsl.rb +2 -5
  152. data/lib/rouge/lexers/go.rb +3 -2
  153. data/lib/rouge/lexers/gradle.rb +1 -0
  154. data/lib/rouge/lexers/graphql.rb +78 -60
  155. data/lib/rouge/lexers/groovy.rb +24 -25
  156. data/lib/rouge/lexers/hack.rb +2 -1
  157. data/lib/rouge/lexers/haml.rb +26 -29
  158. data/lib/rouge/lexers/handlebars.rb +32 -20
  159. data/lib/rouge/lexers/haskell.rb +78 -61
  160. data/lib/rouge/lexers/haxe.rb +246 -0
  161. data/lib/rouge/lexers/hcl.rb +163 -0
  162. data/lib/rouge/lexers/hocon.rb +86 -0
  163. data/lib/rouge/lexers/hql.rb +139 -0
  164. data/lib/rouge/lexers/html.rb +36 -33
  165. data/lib/rouge/lexers/http.rb +10 -9
  166. data/lib/rouge/lexers/hylang.rb +15 -14
  167. data/lib/rouge/lexers/idlang.rb +34 -32
  168. data/lib/rouge/lexers/igorpro.rb +481 -225
  169. data/lib/rouge/lexers/ini.rb +13 -12
  170. data/lib/rouge/lexers/io.rb +10 -9
  171. data/lib/rouge/lexers/irb.rb +6 -5
  172. data/lib/rouge/lexers/isbl.rb +97 -0
  173. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  174. data/lib/rouge/lexers/java.rb +30 -26
  175. data/lib/rouge/lexers/javascript.rb +59 -61
  176. data/lib/rouge/lexers/jinja.rb +39 -22
  177. data/lib/rouge/lexers/jsl.rb +55 -0
  178. data/lib/rouge/lexers/json.rb +54 -11
  179. data/lib/rouge/lexers/json_doc.rb +8 -5
  180. data/lib/rouge/lexers/jsonnet.rb +19 -18
  181. data/lib/rouge/lexers/jsp.rb +120 -0
  182. data/lib/rouge/lexers/jsx.rb +18 -16
  183. data/lib/rouge/lexers/julia.rb +192 -74
  184. data/lib/rouge/lexers/kotlin.rb +79 -27
  185. data/lib/rouge/lexers/lasso.rb +54 -58
  186. data/lib/rouge/lexers/lasso/keywords.rb +14 -0
  187. data/lib/rouge/lexers/liquid.rb +116 -118
  188. data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
  189. data/lib/rouge/lexers/literate_haskell.rb +6 -5
  190. data/lib/rouge/lexers/llvm.rb +66 -49
  191. data/lib/rouge/lexers/lua.rb +43 -4
  192. data/lib/rouge/lexers/lua/builtins.rb +2 -0
  193. data/lib/rouge/lexers/lustre.rb +79 -0
  194. data/lib/rouge/lexers/lutin.rb +33 -0
  195. data/lib/rouge/lexers/m68k.rb +143 -0
  196. data/lib/rouge/lexers/magik.rb +127 -0
  197. data/lib/rouge/lexers/make.rb +57 -34
  198. data/lib/rouge/lexers/markdown.rb +67 -39
  199. data/lib/rouge/lexers/mason.rb +110 -0
  200. data/lib/rouge/lexers/mathematica.rb +96 -0
  201. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  202. data/lib/rouge/lexers/matlab.rb +26 -17
  203. data/lib/rouge/lexers/matlab/builtins.rb +4 -4
  204. data/lib/rouge/lexers/minizinc.rb +87 -0
  205. data/lib/rouge/lexers/moonscript.rb +4 -3
  206. data/lib/rouge/lexers/mosel.rb +64 -63
  207. data/lib/rouge/lexers/msgtrans.rb +26 -0
  208. data/lib/rouge/lexers/mxml.rb +19 -18
  209. data/lib/rouge/lexers/nasm.rb +43 -169
  210. data/lib/rouge/lexers/nesasm.rb +78 -0
  211. data/lib/rouge/lexers/nginx.rb +15 -14
  212. data/lib/rouge/lexers/nim.rb +4 -2
  213. data/lib/rouge/lexers/nix.rb +48 -42
  214. data/lib/rouge/lexers/objective_c.rb +5 -178
  215. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  216. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  217. data/lib/rouge/lexers/ocaml.rb +29 -64
  218. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  219. data/lib/rouge/lexers/openedge.rb +429 -0
  220. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  221. data/lib/rouge/lexers/pascal.rb +6 -5
  222. data/lib/rouge/lexers/perl.rb +103 -68
  223. data/lib/rouge/lexers/php.rb +91 -53
  224. data/lib/rouge/lexers/php/builtins.rb +183 -174
  225. data/lib/rouge/lexers/plain_text.rb +2 -1
  226. data/lib/rouge/lexers/plist.rb +16 -14
  227. data/lib/rouge/lexers/pony.rb +21 -20
  228. data/lib/rouge/lexers/powershell.rb +190 -638
  229. data/lib/rouge/lexers/praat.rb +76 -75
  230. data/lib/rouge/lexers/prolog.rb +27 -19
  231. data/lib/rouge/lexers/prometheus.rb +32 -30
  232. data/lib/rouge/lexers/properties.rb +13 -12
  233. data/lib/rouge/lexers/protobuf.rb +23 -22
  234. data/lib/rouge/lexers/puppet.rb +33 -32
  235. data/lib/rouge/lexers/python.rb +124 -99
  236. data/lib/rouge/lexers/q.rb +17 -14
  237. data/lib/rouge/lexers/qml.rb +13 -12
  238. data/lib/rouge/lexers/r.rb +13 -13
  239. data/lib/rouge/lexers/racket.rb +47 -22
  240. data/lib/rouge/lexers/reasonml.rb +65 -0
  241. data/lib/rouge/lexers/rego.rb +45 -0
  242. data/lib/rouge/lexers/robot_framework.rb +249 -0
  243. data/lib/rouge/lexers/ruby.rb +88 -71
  244. data/lib/rouge/lexers/rust.rb +45 -44
  245. data/lib/rouge/lexers/sas.rb +563 -0
  246. data/lib/rouge/lexers/sass.rb +9 -8
  247. data/lib/rouge/lexers/sass/common.rb +41 -40
  248. data/lib/rouge/lexers/scala.rb +67 -40
  249. data/lib/rouge/lexers/scheme.rb +19 -18
  250. data/lib/rouge/lexers/scss.rb +4 -3
  251. data/lib/rouge/lexers/sed.rb +31 -30
  252. data/lib/rouge/lexers/shell.rb +67 -55
  253. data/lib/rouge/lexers/sieve.rb +10 -9
  254. data/lib/rouge/lexers/slice.rb +32 -0
  255. data/lib/rouge/lexers/slim.rb +27 -26
  256. data/lib/rouge/lexers/smalltalk.rb +34 -33
  257. data/lib/rouge/lexers/smarty.rb +20 -19
  258. data/lib/rouge/lexers/sml.rb +68 -67
  259. data/lib/rouge/lexers/solidity.rb +185 -0
  260. data/lib/rouge/lexers/sparql.rb +129 -0
  261. data/lib/rouge/lexers/sqf.rb +109 -0
  262. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  263. data/lib/rouge/lexers/sql.rb +47 -26
  264. data/lib/rouge/lexers/supercollider.rb +116 -0
  265. data/lib/rouge/lexers/swift.rb +50 -45
  266. data/lib/rouge/lexers/tap.rb +22 -20
  267. data/lib/rouge/lexers/tcl.rb +28 -27
  268. data/lib/rouge/lexers/terraform.rb +128 -0
  269. data/lib/rouge/lexers/tex.rb +20 -19
  270. data/lib/rouge/lexers/toml.rb +59 -20
  271. data/lib/rouge/lexers/tsx.rb +1 -0
  272. data/lib/rouge/lexers/ttcn3.rb +119 -0
  273. data/lib/rouge/lexers/tulip.rb +38 -36
  274. data/lib/rouge/lexers/turtle.rb +36 -38
  275. data/lib/rouge/lexers/twig.rb +1 -0
  276. data/lib/rouge/lexers/typescript.rb +12 -0
  277. data/lib/rouge/lexers/typescript/common.rb +1 -0
  278. data/lib/rouge/lexers/vala.rb +19 -18
  279. data/lib/rouge/lexers/varnish.rb +168 -0
  280. data/lib/rouge/lexers/vb.rb +28 -27
  281. data/lib/rouge/lexers/verilog.rb +27 -28
  282. data/lib/rouge/lexers/vhdl.rb +13 -12
  283. data/lib/rouge/lexers/viml.rb +15 -14
  284. data/lib/rouge/lexers/viml/keywords.rb +2 -0
  285. data/lib/rouge/lexers/vue.rb +19 -12
  286. data/lib/rouge/lexers/wollok.rb +27 -26
  287. data/lib/rouge/lexers/xml.rb +18 -21
  288. data/lib/rouge/lexers/xojo.rb +61 -0
  289. data/lib/rouge/lexers/xpath.rb +332 -0
  290. data/lib/rouge/lexers/xquery.rb +145 -0
  291. data/lib/rouge/lexers/yaml.rb +64 -61
  292. data/lib/rouge/lexers/yang.rb +147 -0
  293. data/lib/rouge/plugins/redcarpet.rb +9 -2
  294. data/lib/rouge/regex_lexer.rb +27 -25
  295. data/lib/rouge/template_lexer.rb +1 -0
  296. data/lib/rouge/tex_theme_renderer.rb +132 -0
  297. data/lib/rouge/text_analyzer.rb +1 -0
  298. data/lib/rouge/theme.rb +5 -0
  299. data/lib/rouge/themes/base16.rb +1 -0
  300. data/lib/rouge/themes/bw.rb +41 -0
  301. data/lib/rouge/themes/colorful.rb +1 -0
  302. data/lib/rouge/themes/github.rb +1 -0
  303. data/lib/rouge/themes/gruvbox.rb +1 -0
  304. data/lib/rouge/themes/igor_pro.rb +1 -0
  305. data/lib/rouge/themes/magritte.rb +78 -0
  306. data/lib/rouge/themes/molokai.rb +1 -0
  307. data/lib/rouge/themes/monokai.rb +1 -0
  308. data/lib/rouge/themes/monokai_sublime.rb +4 -1
  309. data/lib/rouge/themes/pastie.rb +2 -1
  310. data/lib/rouge/themes/thankful_eyes.rb +2 -1
  311. data/lib/rouge/themes/tulip.rb +2 -1
  312. data/lib/rouge/token.rb +31 -22
  313. data/lib/rouge/util.rb +3 -2
  314. data/lib/rouge/version.rb +2 -1
  315. data/rouge.gemspec +6 -3
  316. metadata +136 -8
  317. data/lib/rouge/lexers/apache/keywords.yml +0 -764
  318. data/lib/rouge/lexers/lasso/keywords.yml +0 -446
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ddf4afdd370e299029a9ec6d47a7742cb94208a1
4
- data.tar.gz: a5cb0844af8b6be69ec296679c9ae5d28ed59034
2
+ SHA256:
3
+ metadata.gz: 579264110ed9ae2f82195af1d9d83d2ebf6288f8ce3cd6909c2a9d563ae0e1d5
4
+ data.tar.gz: 25a1809f05ec5aab6f04ee7b885a17cf8b1388e1247284e773bc166d13a9e296
5
5
  SHA512:
6
- metadata.gz: 7fa77ad742055077ee715ec202ad8fd4d8929dbd8397d1c9d16b0ea0e8a84d6b118b13dbb255dfb643ab89c88d348f22d80d157b836d350555b2f4afe1989ba6
7
- data.tar.gz: a5c77e2ab64220fcf42c8afc71185f5f03c8dee74dd6dc27fb54e5a88002806d3b63aeadb9db121507e0a8b539c1e36d4235ee4c82d9f4c0f4ae8262bc92233c
6
+ metadata.gz: 832c13a7236b814d53a5a6b170fc00b4961efb2cdee91053bfc3a6386a9bc6c7b071f9fa51606321e94249b57c6f549f6e4bb420e7647ab68ca6a3c6e49d8c63
7
+ data.tar.gz: 5889f29c2788788120fd698ec004b847c5bafb7df0b22af36c9f1d2a78218c81e7fd136b359b586ed8f586e0a65eceb156721efcb95d95e3af7df34d0b174038
data/Gemfile CHANGED
@@ -1,26 +1,40 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'http://rubygems.org'
2
4
 
3
5
  gemspec
4
6
 
5
- gem 'bundler', '~> 1.15'
6
7
  gem 'rake'
7
8
 
8
9
  gem 'minitest', '>= 5.0'
9
10
  gem 'minitest-power_assert'
10
11
 
12
+ gem 'parallel', '~> 1.13.0' if RUBY_VERSION < '2.2.0'
11
13
  gem 'rubocop', '~> 0.49.1'
12
14
 
13
15
  # don't try to install redcarpet under jruby
14
16
  gem 'redcarpet', :platforms => :ruby
15
17
 
18
+ # Profiling
19
+ if RUBY_VERSION >= '2.3.0'
20
+ gem 'memory_profiler', :require => false
21
+ end
22
+
23
+ # Needed for a Rake task
24
+ gem 'git'
25
+ gem 'yard'
26
+
16
27
  group :development do
17
28
  gem 'pry'
18
29
 
19
30
  # docs
20
- gem 'yard'
21
31
  gem 'github-markup'
22
32
 
23
33
  # for visual tests
24
- gem 'sinatra'
34
+ if RUBY_VERSION < '2.2.0'
35
+ gem 'sinatra', '~> 1.4.8'
36
+ else
37
+ gem 'sinatra'
38
+ end
25
39
  gem 'shotgun'
26
40
  end
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'pathname'
4
5
  ROOT_DIR = Pathname.new(__FILE__).dirname.parent
@@ -1,10 +1,15 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  # stdlib
4
5
  require 'pathname'
5
6
 
6
7
  # The containing module for Rouge
7
8
  module Rouge
9
+ # cache value in a constant since `__dir__` allocates a new string
10
+ # on every call.
11
+ LIB_DIR = __dir__.freeze
12
+
8
13
  class << self
9
14
  def reload!
10
15
  Object.send :remove_const, :Rouge
@@ -30,53 +35,73 @@ module Rouge
30
35
 
31
36
  formatter.format(lexer.lex(text), &b)
32
37
  end
33
- end
34
- end
35
38
 
36
- load_dir = Pathname.new(__FILE__).dirname
37
- load load_dir.join('rouge/version.rb')
39
+ # Load a file relative to the `lib/rouge` path.
40
+ #
41
+ # @api private
42
+ def load_file(path)
43
+ load File.join(LIB_DIR, "rouge/#{path}.rb")
44
+ end
38
45
 
39
- load load_dir.join('rouge/util.rb')
46
+ # Load the lexers in the `lib/rouge/lexers` directory.
47
+ #
48
+ # @api private
49
+ def load_lexers
50
+ # The trailing slash is necessary to avoid lexers being loaded multiple
51
+ # times by `Lexers.load_lexer`
52
+ lexer_dir = File.join(LIB_DIR, "rouge/lexers/")
53
+ Dir.glob(File.join(lexer_dir, '*.rb')).each do |f|
54
+ Lexers.load_lexer(f.sub(lexer_dir, ''))
55
+ end
56
+ end
57
+ end
58
+ end
40
59
 
41
- load load_dir.join('rouge/text_analyzer.rb')
42
- load load_dir.join('rouge/token.rb')
60
+ Rouge.load_file 'version'
61
+ Rouge.load_file 'util'
62
+ Rouge.load_file 'text_analyzer'
63
+ Rouge.load_file 'token'
43
64
 
44
- load load_dir.join('rouge/lexer.rb')
45
- load load_dir.join('rouge/regex_lexer.rb')
46
- load load_dir.join('rouge/template_lexer.rb')
65
+ Rouge.load_file 'lexer'
66
+ Rouge.load_file 'regex_lexer'
67
+ Rouge.load_file 'template_lexer'
47
68
 
48
- lexers_dir = load_dir.join('rouge/lexers')
49
- Dir.glob(lexers_dir.join('*.rb')).each do |f|
50
- Rouge::Lexers.load_lexer(Pathname.new(f).relative_path_from(lexers_dir).to_s)
51
- end
69
+ Rouge.load_lexers
52
70
 
53
- load load_dir.join('rouge/guesser.rb')
54
- load load_dir.join('rouge/guessers/util.rb')
55
- load load_dir.join('rouge/guessers/glob_mapping.rb')
56
- load load_dir.join('rouge/guessers/modeline.rb')
57
- load load_dir.join('rouge/guessers/filename.rb')
58
- load load_dir.join('rouge/guessers/mimetype.rb')
59
- load load_dir.join('rouge/guessers/source.rb')
60
- load load_dir.join('rouge/guessers/disambiguation.rb')
71
+ Rouge.load_file 'guesser'
72
+ Rouge.load_file 'guessers/util'
73
+ Rouge.load_file 'guessers/glob_mapping'
74
+ Rouge.load_file 'guessers/modeline'
75
+ Rouge.load_file 'guessers/filename'
76
+ Rouge.load_file 'guessers/mimetype'
77
+ Rouge.load_file 'guessers/source'
78
+ Rouge.load_file 'guessers/disambiguation'
61
79
 
62
- load load_dir.join('rouge/formatter.rb')
63
- load load_dir.join('rouge/formatters/html.rb')
64
- load load_dir.join('rouge/formatters/html_table.rb')
65
- load load_dir.join('rouge/formatters/html_pygments.rb')
66
- load load_dir.join('rouge/formatters/html_legacy.rb')
67
- load load_dir.join('rouge/formatters/html_linewise.rb')
68
- load load_dir.join('rouge/formatters/html_inline.rb')
69
- load load_dir.join('rouge/formatters/terminal256.rb')
70
- load load_dir.join('rouge/formatters/null.rb')
80
+ Rouge.load_file 'formatter'
81
+ Rouge.load_file 'formatters/html'
82
+ Rouge.load_file 'formatters/html_table'
83
+ Rouge.load_file 'formatters/html_pygments'
84
+ Rouge.load_file 'formatters/html_legacy'
85
+ Rouge.load_file 'formatters/html_linewise'
86
+ Rouge.load_file 'formatters/html_line_table'
87
+ Rouge.load_file 'formatters/html_inline'
88
+ Rouge.load_file 'formatters/terminal256'
89
+ Rouge.load_file 'formatters/terminal_truecolor'
90
+ Rouge.load_file 'formatters/tex'
91
+ Rouge.load_file 'formatters/null'
71
92
 
72
- load load_dir.join('rouge/theme.rb')
73
- load load_dir.join('rouge/themes/thankful_eyes.rb')
74
- load load_dir.join('rouge/themes/colorful.rb')
75
- load load_dir.join('rouge/themes/base16.rb')
76
- load load_dir.join('rouge/themes/github.rb')
77
- load load_dir.join('rouge/themes/igor_pro.rb')
78
- load load_dir.join('rouge/themes/monokai.rb')
79
- load load_dir.join('rouge/themes/molokai.rb')
80
- load load_dir.join('rouge/themes/monokai_sublime.rb')
81
- load load_dir.join('rouge/themes/gruvbox.rb')
82
- load load_dir.join('rouge/themes/tulip.rb')
93
+ Rouge.load_file 'theme'
94
+ Rouge.load_file 'tex_theme_renderer'
95
+ Rouge.load_file 'themes/thankful_eyes'
96
+ Rouge.load_file 'themes/colorful'
97
+ Rouge.load_file 'themes/base16'
98
+ Rouge.load_file 'themes/github'
99
+ Rouge.load_file 'themes/igor_pro'
100
+ Rouge.load_file 'themes/monokai'
101
+ Rouge.load_file 'themes/molokai'
102
+ Rouge.load_file 'themes/monokai_sublime'
103
+ Rouge.load_file 'themes/gruvbox'
104
+ Rouge.load_file 'themes/tulip'
105
+ Rouge.load_file 'themes/pastie'
106
+ Rouge.load_file 'themes/bw'
107
+ Rouge.load_file 'themes/magritte'
@@ -1,8 +1,11 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  # not required by the main lib.
4
5
  # to use this module, require 'rouge/cli'.
5
6
 
7
+ require 'rbconfig'
8
+
6
9
  module Rouge
7
10
  class FileReader
8
11
  attr_reader :input
@@ -37,7 +40,7 @@ module Rouge
37
40
  def self.doc
38
41
  return enum_for(:doc) unless block_given?
39
42
 
40
- yield %|usage: rougify [command] [args...]|
43
+ yield %|usage: rougify {global options} [command] [args...]|
41
44
  yield %||
42
45
  yield %|where <command> is one of:|
43
46
  yield %| highlight #{Highlight.desc}|
@@ -47,6 +50,9 @@ module Rouge
47
50
  yield %| guess #{Guess.desc}|
48
51
  yield %| version #{Version.desc}|
49
52
  yield %||
53
+ yield %|global options:|
54
+ yield %[ --require|-r <fname> require <fname> after loading rouge]
55
+ yield %||
50
56
  yield %|See `rougify help <command>` for more info.|
51
57
  end
52
58
 
@@ -61,18 +67,22 @@ module Rouge
61
67
  def self.parse(argv=ARGV)
62
68
  argv = normalize_syntax(argv)
63
69
 
64
- mode = argv.shift
70
+ while (head = argv.shift)
71
+ case head
72
+ when '-h', '--help', 'help', '-help'
73
+ return Help.parse(argv)
74
+ when '--require', '-r'
75
+ require argv.shift
76
+ else
77
+ break
78
+ end
79
+ end
65
80
 
66
- klass = class_from_arg(mode)
81
+ klass = class_from_arg(head)
67
82
  return klass.parse(argv) if klass
68
83
 
69
- case mode
70
- when '-h', '--help', 'help', '-help', nil
71
- Help.parse(argv)
72
- else
73
- argv.unshift(mode) if mode
74
- Highlight.parse(argv)
75
- end
84
+ argv.unshift(head) if head
85
+ Highlight.parse(argv)
76
86
  end
77
87
 
78
88
  def initialize(options={})
@@ -90,7 +100,7 @@ module Rouge
90
100
  case arg
91
101
  when 'version', '--version', '-v'
92
102
  Version
93
- when 'help'
103
+ when 'help', nil
94
104
  Help
95
105
  when 'highlight', 'hi'
96
106
  Highlight
@@ -185,11 +195,29 @@ module Rouge
185
195
  yield %[]
186
196
  yield %[--require|-r <filename> require a filename or library before]
187
197
  yield %[ highlighting]
198
+ yield %[]
199
+ yield %[--escape allow the use of escapes between <! and !>]
200
+ yield %[]
201
+ yield %[--escape-with <l> <r> allow the use of escapes between custom]
202
+ yield %[ delimiters. implies --escape]
203
+ end
204
+
205
+ # There is no consistent way to do this, but this is used elsewhere,
206
+ # and we provide explicit opt-in and opt-out with $COLORTERM
207
+ def self.supports_truecolor?
208
+ return true if %w(24bit truecolor).include?(ENV['COLORTERM'])
209
+ return false if ENV['COLORTERM'] && ENV['COLORTERM'] =~ /256/
210
+
211
+ if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
212
+ ENV['ConEmuANSI'] == 'ON' && !ENV['ANSICON']
213
+ else
214
+ ENV['TERM'] !~ /(^rxvt)|(-color$)/
215
+ end
188
216
  end
189
217
 
190
218
  def self.parse(argv)
191
219
  opts = {
192
- :formatter => 'terminal256',
220
+ :formatter => supports_truecolor? ? 'terminal-truecolor' : 'terminal256',
193
221
  :theme => 'thankful_eyes',
194
222
  :css_class => 'codehilite',
195
223
  :input_file => '-',
@@ -217,6 +245,10 @@ module Rouge
217
245
  opts[:css_class] = argv.shift
218
246
  when '--lexer-opts', '-L'
219
247
  opts[:lexer_opts] = parse_cgi(argv.shift)
248
+ when '--escape'
249
+ opts[:escape] = ['<!', '!>']
250
+ when '--escape-with'
251
+ opts[:escape] = [argv.shift, argv.shift]
220
252
  when /^--/
221
253
  error! "unknown option #{arg.inspect}"
222
254
  else
@@ -243,11 +275,23 @@ module Rouge
243
275
  )
244
276
  end
245
277
 
278
+ def raw_lexer
279
+ lexer_class.new(@lexer_opts)
280
+ end
281
+
282
+ def escape_lexer
283
+ Rouge::Lexers::Escape.new(
284
+ start: @escape[0],
285
+ end: @escape[1],
286
+ lang: raw_lexer,
287
+ )
288
+ end
289
+
246
290
  def lexer
247
- @lexer ||= lexer_class.new(@lexer_opts)
291
+ @lexer ||= @escape ? escape_lexer : raw_lexer
248
292
  end
249
293
 
250
- attr_reader :input_file, :lexer_name, :mimetype, :formatter
294
+ attr_reader :input_file, :lexer_name, :mimetype, :formatter, :escape
251
295
 
252
296
  def initialize(opts={})
253
297
  Rouge::Lexer.enable_debug!
@@ -270,19 +314,26 @@ module Rouge
270
314
 
271
315
  theme = Theme.find(opts[:theme]).new or error! "unknown theme #{opts[:theme]}"
272
316
 
317
+ # TODO: document this in --help
273
318
  @formatter = case opts[:formatter]
274
319
  when 'terminal256' then Formatters::Terminal256.new(theme)
320
+ when 'terminal-truecolor' then Formatters::TerminalTruecolor.new(theme)
275
321
  when 'html' then Formatters::HTML.new
276
322
  when 'html-pygments' then Formatters::HTMLPygments.new(Formatters::HTML.new, opts[:css_class])
277
323
  when 'html-inline' then Formatters::HTMLInline.new(theme)
324
+ when 'html-line-table' then Formatters::HTMLLineTable.new(Formatters::HTML.new)
278
325
  when 'html-table' then Formatters::HTMLTable.new(Formatters::HTML.new)
279
326
  when 'null', 'raw', 'tokens' then Formatters::Null.new
327
+ when 'tex' then Formatters::Tex.new
280
328
  else
281
329
  error! "unknown formatter preset #{opts[:formatter]}"
282
330
  end
331
+
332
+ @escape = opts[:escape]
283
333
  end
284
334
 
285
335
  def run
336
+ Formatter.enable_escape! if @escape
286
337
  formatter.format(lexer.lex(input), &method(:print))
287
338
  end
288
339
 
@@ -304,21 +355,35 @@ module Rouge
304
355
  yield %|usage: rougify style [<theme-name>] [<options>]|
305
356
  yield %||
306
357
  yield %|Print CSS styles for the given theme. Extra options are|
307
- yield %|passed to the theme. Theme defaults to thankful_eyes.|
358
+ yield %|passed to the theme. To select a mode (light/dark) for the|
359
+ yield %|theme, append '.light' or '.dark' to the <theme-name>|
360
+ yield %|respectively. Theme defaults to thankful_eyes.|
308
361
  yield %||
309
362
  yield %|options:|
310
- yield %| --scope (default: .highlight) a css selector to scope by|
363
+ yield %| --scope (default: .highlight) a css selector to scope by|
364
+ yield %| --tex (default: false) render as TeX|
365
+ yield %| --tex-prefix (default: RG) a command prefix for TeX|
366
+ yield %| implies --tex if specified|
311
367
  yield %||
312
368
  yield %|available themes:|
313
369
  yield %| #{Theme.registry.keys.sort.join(', ')}|
314
370
  end
315
371
 
316
372
  def self.parse(argv)
317
- opts = { :theme_name => 'thankful_eyes' }
373
+ opts = {
374
+ :theme_name => 'thankful_eyes',
375
+ :tex => false,
376
+ :tex_prefix => 'RG'
377
+ }
318
378
 
319
379
  until argv.empty?
320
380
  arg = argv.shift
321
381
  case arg
382
+ when '--tex'
383
+ opts[:tex] = true
384
+ when '--tex-prefix'
385
+ opts[:tex] = true
386
+ opts[:tex_prefix] = argv.shift
322
387
  when /--(\w+)/
323
388
  opts[$1.tr('-', '_').to_sym] = argv.shift
324
389
  else
@@ -335,6 +400,10 @@ module Rouge
335
400
  or error! "unknown theme: #{theme_name}"
336
401
 
337
402
  @theme = theme_class.new(opts)
403
+ if opts[:tex]
404
+ tex_prefix = opts[:tex_prefix]
405
+ @theme = TexThemeRenderer.new(@theme, prefix: tex_prefix)
406
+ end
338
407
  end
339
408
 
340
409
  def run
@@ -363,7 +432,7 @@ module Rouge
363
432
  puts "== Available Lexers =="
364
433
 
365
434
  Lexer.all.sort_by(&:tag).each do |lexer|
366
- desc = "#{lexer.desc}"
435
+ desc = String.new("#{lexer.desc}")
367
436
  if lexer.aliases.any?
368
437
  desc << " [aliases: #{lexer.aliases.join(',')}]"
369
438
  end
@@ -0,0 +1,26 @@
1
+ with Ada.Directories;
2
+ with Ada.Direct_IO;
3
+ with Ada.Text_IO;
4
+
5
+ procedure Extra_IO.Read_File (Name : String) is
6
+
7
+ package Dirs renames Ada.Directories;
8
+ package Text_IO renames Ada.Text_IO;
9
+
10
+ -- Get the size of the file for a new string.
11
+ Size : Natural := Natural (Dirs.Size (Name));
12
+ subtype File_String is String (1 .. Size);
13
+
14
+ -- Instantiate Direct_IO for our file type.
15
+ package FIO is new Ada.Direct_IO (File_String);
16
+
17
+ File : FIO.File_Type;
18
+ Contents : File_String;
19
+
20
+ begin
21
+ FIO.Open (File, FIO.In_File, Name);
22
+ FIO.Read (File, Contents);
23
+ FIO.Close (File);
24
+
25
+ Text_IO.Put (Contents);
26
+ end Extra_IO.Read_File;
@@ -0,0 +1,9 @@
1
+ public class with sharing Trigger {
2
+ @Deprecated
3
+ public void resolveSum(int x, int y) {
4
+ System.debug('x is ' + x);
5
+ System.debug('y is ' + y);
6
+
7
+ System.debug('x + y = ' + (x+y));
8
+ }
9
+ }