rouge 3.2.0 → 3.18.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 (316) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +17 -3
  3. data/bin/rougify +1 -0
  4. data/lib/rouge.rb +67 -43
  5. data/lib/rouge/cli.rb +84 -17
  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/csvs +8 -0
  16. data/lib/rouge/demos/cuda +11 -0
  17. data/lib/rouge/demos/cypher +5 -0
  18. data/lib/rouge/demos/cython +6 -0
  19. data/lib/rouge/demos/datastudio +21 -0
  20. data/lib/rouge/demos/ecl +18 -0
  21. data/lib/rouge/demos/eex +1 -0
  22. data/lib/rouge/demos/epp +4 -0
  23. data/lib/rouge/demos/escape +3 -0
  24. data/lib/rouge/demos/freefem +16 -0
  25. data/lib/rouge/demos/gdscript +18 -0
  26. data/lib/rouge/demos/ghc-cmm +23 -0
  27. data/lib/rouge/demos/ghc-core +26 -0
  28. data/lib/rouge/demos/haxe +5 -0
  29. data/lib/rouge/demos/hocon +8 -0
  30. data/lib/rouge/demos/hql +5 -0
  31. data/lib/rouge/demos/isbl +4 -0
  32. data/lib/rouge/demos/jsl +3 -0
  33. data/lib/rouge/demos/jsp +29 -0
  34. data/lib/rouge/demos/liquid +0 -1
  35. data/lib/rouge/demos/lustre +6 -0
  36. data/lib/rouge/demos/lutin +18 -0
  37. data/lib/rouge/demos/m68k +16 -0
  38. data/lib/rouge/demos/magik +6 -0
  39. data/lib/rouge/demos/mason +22 -0
  40. data/lib/rouge/demos/mathematica +8 -0
  41. data/lib/rouge/demos/minizinc +23 -0
  42. data/lib/rouge/demos/msgtrans +4 -0
  43. data/lib/rouge/demos/nasm +6 -6
  44. data/lib/rouge/demos/nesasm +11 -0
  45. data/lib/rouge/demos/objective_cpp +17 -0
  46. data/lib/rouge/demos/openedge +4 -0
  47. data/lib/rouge/demos/opentype_feature_file +6 -0
  48. data/lib/rouge/demos/plist +1 -132
  49. data/lib/rouge/demos/powershell +12 -48
  50. data/lib/rouge/demos/q +6 -0
  51. data/lib/rouge/demos/reasonml +12 -0
  52. data/lib/rouge/demos/rego +8 -0
  53. data/lib/rouge/demos/robot_framework +27 -0
  54. data/lib/rouge/demos/sas +13 -0
  55. data/lib/rouge/demos/slice +10 -0
  56. data/lib/rouge/demos/solidity +13 -0
  57. data/lib/rouge/demos/sparql +6 -0
  58. data/lib/rouge/demos/sqf +14 -0
  59. data/lib/rouge/demos/supercollider +11 -0
  60. data/lib/rouge/demos/terraform +0 -15
  61. data/lib/rouge/demos/ttcn3 +6 -0
  62. data/lib/rouge/demos/vcl +12 -0
  63. data/lib/rouge/demos/xojo +14 -0
  64. data/lib/rouge/demos/xpath +2 -0
  65. data/lib/rouge/demos/xquery +22 -0
  66. data/lib/rouge/demos/yang +17 -0
  67. data/lib/rouge/formatter.rb +39 -2
  68. data/lib/rouge/formatters/html.rb +21 -2
  69. data/lib/rouge/formatters/html_inline.rb +1 -0
  70. data/lib/rouge/formatters/html_legacy.rb +1 -0
  71. data/lib/rouge/formatters/html_line_table.rb +53 -0
  72. data/lib/rouge/formatters/html_linewise.rb +7 -11
  73. data/lib/rouge/formatters/html_pygments.rb +2 -0
  74. data/lib/rouge/formatters/html_table.rb +21 -31
  75. data/lib/rouge/formatters/null.rb +1 -0
  76. data/lib/rouge/formatters/terminal256.rb +23 -5
  77. data/lib/rouge/formatters/terminal_truecolor.rb +37 -0
  78. data/lib/rouge/formatters/tex.rb +92 -0
  79. data/lib/rouge/guesser.rb +2 -0
  80. data/lib/rouge/guessers/disambiguation.rb +35 -0
  81. data/lib/rouge/guessers/filename.rb +2 -0
  82. data/lib/rouge/guessers/glob_mapping.rb +3 -1
  83. data/lib/rouge/guessers/mimetype.rb +2 -0
  84. data/lib/rouge/guessers/modeline.rb +3 -1
  85. data/lib/rouge/guessers/source.rb +3 -1
  86. data/lib/rouge/guessers/util.rb +2 -0
  87. data/lib/rouge/lexer.rb +71 -15
  88. data/lib/rouge/lexers/abap.rb +13 -11
  89. data/lib/rouge/lexers/actionscript.rb +35 -34
  90. data/lib/rouge/lexers/ada.rb +162 -0
  91. data/lib/rouge/lexers/apache.rb +13 -15
  92. data/lib/rouge/lexers/apache/keywords.rb +15 -0
  93. data/lib/rouge/lexers/apex.rb +126 -0
  94. data/lib/rouge/lexers/apiblueprint.rb +2 -0
  95. data/lib/rouge/lexers/apple_script.rb +17 -14
  96. data/lib/rouge/lexers/armasm.rb +145 -0
  97. data/lib/rouge/lexers/awk.rb +26 -25
  98. data/lib/rouge/lexers/batchfile.rb +164 -0
  99. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  100. data/lib/rouge/lexers/biml.rb +6 -4
  101. data/lib/rouge/lexers/bpf.rb +118 -0
  102. data/lib/rouge/lexers/brainfuck.rb +53 -0
  103. data/lib/rouge/lexers/bsl.rb +13 -12
  104. data/lib/rouge/lexers/c.rb +35 -57
  105. data/lib/rouge/lexers/ceylon.rb +7 -34
  106. data/lib/rouge/lexers/cfscript.rb +27 -26
  107. data/lib/rouge/lexers/clean.rb +156 -0
  108. data/lib/rouge/lexers/clojure.rb +15 -14
  109. data/lib/rouge/lexers/cmake.rb +16 -14
  110. data/lib/rouge/lexers/cmhg.rb +34 -0
  111. data/lib/rouge/lexers/coffeescript.rb +90 -49
  112. data/lib/rouge/lexers/common_lisp.rb +39 -38
  113. data/lib/rouge/lexers/conf.rb +7 -6
  114. data/lib/rouge/lexers/console.rb +92 -38
  115. data/lib/rouge/lexers/coq.rb +27 -23
  116. data/lib/rouge/lexers/cpp.rb +24 -13
  117. data/lib/rouge/lexers/crystal.rb +71 -70
  118. data/lib/rouge/lexers/csharp.rb +29 -29
  119. data/lib/rouge/lexers/css.rb +24 -23
  120. data/lib/rouge/lexers/csvs.rb +44 -0
  121. data/lib/rouge/lexers/cuda.rb +35 -0
  122. data/lib/rouge/lexers/cypher.rb +108 -0
  123. data/lib/rouge/lexers/cython.rb +151 -0
  124. data/lib/rouge/lexers/d.rb +64 -63
  125. data/lib/rouge/lexers/dart.rb +34 -33
  126. data/lib/rouge/lexers/datastudio.rb +138 -0
  127. data/lib/rouge/lexers/diff.rb +10 -4
  128. data/lib/rouge/lexers/digdag.rb +3 -1
  129. data/lib/rouge/lexers/docker.rb +12 -11
  130. data/lib/rouge/lexers/dot.rb +19 -18
  131. data/lib/rouge/lexers/ecl.rb +175 -0
  132. data/lib/rouge/lexers/eex.rb +52 -0
  133. data/lib/rouge/lexers/eiffel.rb +21 -20
  134. data/lib/rouge/lexers/elixir.rb +52 -36
  135. data/lib/rouge/lexers/elm.rb +30 -29
  136. data/lib/rouge/lexers/epp.rb +51 -0
  137. data/lib/rouge/lexers/erb.rb +5 -4
  138. data/lib/rouge/lexers/erlang.rb +1 -0
  139. data/lib/rouge/lexers/escape.rb +58 -0
  140. data/lib/rouge/lexers/factor.rb +41 -40
  141. data/lib/rouge/lexers/fortran.rb +34 -32
  142. data/lib/rouge/lexers/freefem.rb +240 -0
  143. data/lib/rouge/lexers/fsharp.rb +33 -31
  144. data/lib/rouge/lexers/gdscript.rb +171 -0
  145. data/lib/rouge/lexers/ghc_cmm.rb +340 -0
  146. data/lib/rouge/lexers/ghc_core.rb +151 -0
  147. data/lib/rouge/lexers/gherkin.rb +17 -14
  148. data/lib/rouge/lexers/gherkin/keywords.rb +2 -0
  149. data/lib/rouge/lexers/glsl.rb +2 -5
  150. data/lib/rouge/lexers/go.rb +3 -2
  151. data/lib/rouge/lexers/gradle.rb +1 -0
  152. data/lib/rouge/lexers/graphql.rb +78 -60
  153. data/lib/rouge/lexers/groovy.rb +24 -25
  154. data/lib/rouge/lexers/hack.rb +2 -1
  155. data/lib/rouge/lexers/haml.rb +26 -29
  156. data/lib/rouge/lexers/handlebars.rb +32 -20
  157. data/lib/rouge/lexers/haskell.rb +67 -65
  158. data/lib/rouge/lexers/haxe.rb +246 -0
  159. data/lib/rouge/lexers/hcl.rb +26 -25
  160. data/lib/rouge/lexers/hocon.rb +86 -0
  161. data/lib/rouge/lexers/hql.rb +139 -0
  162. data/lib/rouge/lexers/html.rb +33 -31
  163. data/lib/rouge/lexers/http.rb +10 -9
  164. data/lib/rouge/lexers/hylang.rb +15 -14
  165. data/lib/rouge/lexers/idlang.rb +34 -32
  166. data/lib/rouge/lexers/igorpro.rb +32 -31
  167. data/lib/rouge/lexers/ini.rb +13 -12
  168. data/lib/rouge/lexers/io.rb +10 -9
  169. data/lib/rouge/lexers/irb.rb +6 -5
  170. data/lib/rouge/lexers/isbl.rb +97 -0
  171. data/lib/rouge/lexers/isbl/builtins.rb +17 -0
  172. data/lib/rouge/lexers/java.rb +29 -25
  173. data/lib/rouge/lexers/javascript.rb +58 -61
  174. data/lib/rouge/lexers/jinja.rb +39 -22
  175. data/lib/rouge/lexers/jsl.rb +55 -0
  176. data/lib/rouge/lexers/json.rb +54 -11
  177. data/lib/rouge/lexers/json_doc.rb +8 -5
  178. data/lib/rouge/lexers/jsonnet.rb +19 -18
  179. data/lib/rouge/lexers/jsp.rb +120 -0
  180. data/lib/rouge/lexers/jsx.rb +18 -16
  181. data/lib/rouge/lexers/julia.rb +182 -58
  182. data/lib/rouge/lexers/kotlin.rb +78 -26
  183. data/lib/rouge/lexers/lasso.rb +54 -58
  184. data/lib/rouge/lexers/lasso/keywords.rb +14 -0
  185. data/lib/rouge/lexers/liquid.rb +116 -118
  186. data/lib/rouge/lexers/literate_coffeescript.rb +3 -2
  187. data/lib/rouge/lexers/literate_haskell.rb +6 -5
  188. data/lib/rouge/lexers/llvm.rb +66 -49
  189. data/lib/rouge/lexers/lua.rb +43 -4
  190. data/lib/rouge/lexers/lua/builtins.rb +2 -0
  191. data/lib/rouge/lexers/lustre.rb +79 -0
  192. data/lib/rouge/lexers/lutin.rb +33 -0
  193. data/lib/rouge/lexers/m68k.rb +143 -0
  194. data/lib/rouge/lexers/magik.rb +127 -0
  195. data/lib/rouge/lexers/make.rb +57 -34
  196. data/lib/rouge/lexers/markdown.rb +67 -39
  197. data/lib/rouge/lexers/mason.rb +110 -0
  198. data/lib/rouge/lexers/mathematica.rb +96 -0
  199. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  200. data/lib/rouge/lexers/matlab.rb +26 -17
  201. data/lib/rouge/lexers/matlab/builtins.rb +4 -4
  202. data/lib/rouge/lexers/minizinc.rb +87 -0
  203. data/lib/rouge/lexers/moonscript.rb +4 -3
  204. data/lib/rouge/lexers/mosel.rb +64 -63
  205. data/lib/rouge/lexers/msgtrans.rb +26 -0
  206. data/lib/rouge/lexers/mxml.rb +19 -18
  207. data/lib/rouge/lexers/nasm.rb +43 -169
  208. data/lib/rouge/lexers/nesasm.rb +78 -0
  209. data/lib/rouge/lexers/nginx.rb +15 -14
  210. data/lib/rouge/lexers/nim.rb +4 -2
  211. data/lib/rouge/lexers/nix.rb +44 -43
  212. data/lib/rouge/lexers/objective_c.rb +5 -178
  213. data/lib/rouge/lexers/objective_c/common.rb +184 -0
  214. data/lib/rouge/lexers/objective_cpp.rb +31 -0
  215. data/lib/rouge/lexers/ocaml.rb +29 -64
  216. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  217. data/lib/rouge/lexers/openedge.rb +429 -0
  218. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  219. data/lib/rouge/lexers/pascal.rb +6 -5
  220. data/lib/rouge/lexers/perl.rb +102 -67
  221. data/lib/rouge/lexers/php.rb +91 -53
  222. data/lib/rouge/lexers/php/builtins.rb +183 -174
  223. data/lib/rouge/lexers/plain_text.rb +2 -1
  224. data/lib/rouge/lexers/plist.rb +16 -14
  225. data/lib/rouge/lexers/pony.rb +21 -20
  226. data/lib/rouge/lexers/powershell.rb +190 -638
  227. data/lib/rouge/lexers/praat.rb +76 -75
  228. data/lib/rouge/lexers/prolog.rb +27 -19
  229. data/lib/rouge/lexers/prometheus.rb +32 -30
  230. data/lib/rouge/lexers/properties.rb +13 -12
  231. data/lib/rouge/lexers/protobuf.rb +23 -22
  232. data/lib/rouge/lexers/puppet.rb +33 -32
  233. data/lib/rouge/lexers/python.rb +124 -99
  234. data/lib/rouge/lexers/q.rb +17 -14
  235. data/lib/rouge/lexers/qml.rb +13 -12
  236. data/lib/rouge/lexers/r.rb +13 -13
  237. data/lib/rouge/lexers/racket.rb +47 -22
  238. data/lib/rouge/lexers/reasonml.rb +65 -0
  239. data/lib/rouge/lexers/rego.rb +45 -0
  240. data/lib/rouge/lexers/robot_framework.rb +249 -0
  241. data/lib/rouge/lexers/ruby.rb +88 -71
  242. data/lib/rouge/lexers/rust.rb +45 -44
  243. data/lib/rouge/lexers/sas.rb +563 -0
  244. data/lib/rouge/lexers/sass.rb +9 -8
  245. data/lib/rouge/lexers/sass/common.rb +41 -40
  246. data/lib/rouge/lexers/scala.rb +67 -40
  247. data/lib/rouge/lexers/scheme.rb +19 -18
  248. data/lib/rouge/lexers/scss.rb +4 -3
  249. data/lib/rouge/lexers/sed.rb +31 -30
  250. data/lib/rouge/lexers/shell.rb +67 -55
  251. data/lib/rouge/lexers/sieve.rb +10 -9
  252. data/lib/rouge/lexers/slice.rb +32 -0
  253. data/lib/rouge/lexers/slim.rb +27 -26
  254. data/lib/rouge/lexers/smalltalk.rb +34 -33
  255. data/lib/rouge/lexers/smarty.rb +20 -19
  256. data/lib/rouge/lexers/sml.rb +68 -67
  257. data/lib/rouge/lexers/solidity.rb +185 -0
  258. data/lib/rouge/lexers/sparql.rb +129 -0
  259. data/lib/rouge/lexers/sqf.rb +109 -0
  260. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  261. data/lib/rouge/lexers/sql.rb +47 -26
  262. data/lib/rouge/lexers/supercollider.rb +116 -0
  263. data/lib/rouge/lexers/swift.rb +49 -44
  264. data/lib/rouge/lexers/tap.rb +22 -20
  265. data/lib/rouge/lexers/tcl.rb +28 -27
  266. data/lib/rouge/lexers/terraform.rb +37 -13
  267. data/lib/rouge/lexers/tex.rb +20 -19
  268. data/lib/rouge/lexers/toml.rb +59 -20
  269. data/lib/rouge/lexers/tsx.rb +1 -0
  270. data/lib/rouge/lexers/ttcn3.rb +119 -0
  271. data/lib/rouge/lexers/tulip.rb +38 -36
  272. data/lib/rouge/lexers/turtle.rb +36 -38
  273. data/lib/rouge/lexers/twig.rb +1 -0
  274. data/lib/rouge/lexers/typescript.rb +12 -0
  275. data/lib/rouge/lexers/typescript/common.rb +1 -0
  276. data/lib/rouge/lexers/vala.rb +19 -18
  277. data/lib/rouge/lexers/varnish.rb +168 -0
  278. data/lib/rouge/lexers/vb.rb +28 -27
  279. data/lib/rouge/lexers/verilog.rb +27 -28
  280. data/lib/rouge/lexers/vhdl.rb +12 -11
  281. data/lib/rouge/lexers/viml.rb +15 -14
  282. data/lib/rouge/lexers/viml/keywords.rb +2 -0
  283. data/lib/rouge/lexers/vue.rb +15 -10
  284. data/lib/rouge/lexers/wollok.rb +27 -26
  285. data/lib/rouge/lexers/xml.rb +18 -21
  286. data/lib/rouge/lexers/xojo.rb +61 -0
  287. data/lib/rouge/lexers/xpath.rb +332 -0
  288. data/lib/rouge/lexers/xquery.rb +145 -0
  289. data/lib/rouge/lexers/yaml.rb +64 -61
  290. data/lib/rouge/lexers/yang.rb +147 -0
  291. data/lib/rouge/plugins/redcarpet.rb +9 -2
  292. data/lib/rouge/regex_lexer.rb +27 -25
  293. data/lib/rouge/template_lexer.rb +1 -0
  294. data/lib/rouge/tex_theme_renderer.rb +132 -0
  295. data/lib/rouge/text_analyzer.rb +1 -0
  296. data/lib/rouge/theme.rb +5 -0
  297. data/lib/rouge/themes/base16.rb +1 -0
  298. data/lib/rouge/themes/bw.rb +41 -0
  299. data/lib/rouge/themes/colorful.rb +1 -0
  300. data/lib/rouge/themes/github.rb +1 -0
  301. data/lib/rouge/themes/gruvbox.rb +1 -0
  302. data/lib/rouge/themes/igor_pro.rb +1 -0
  303. data/lib/rouge/themes/magritte.rb +78 -0
  304. data/lib/rouge/themes/molokai.rb +1 -0
  305. data/lib/rouge/themes/monokai.rb +1 -0
  306. data/lib/rouge/themes/monokai_sublime.rb +4 -1
  307. data/lib/rouge/themes/pastie.rb +2 -1
  308. data/lib/rouge/themes/thankful_eyes.rb +2 -1
  309. data/lib/rouge/themes/tulip.rb +2 -1
  310. data/lib/rouge/token.rb +31 -22
  311. data/lib/rouge/util.rb +3 -2
  312. data/lib/rouge/version.rb +2 -1
  313. data/rouge.gemspec +6 -3
  314. metadata +130 -8
  315. data/lib/rouge/lexers/apache/keywords.yml +0 -764
  316. data/lib/rouge/lexers/lasso/keywords.yml +0 -446
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3cb5bb343a9196b359989181d97b571f0448e99e
4
- data.tar.gz: eed1d68491017119f8d68103b62624143a67e633
2
+ SHA256:
3
+ metadata.gz: 579264110ed9ae2f82195af1d9d83d2ebf6288f8ce3cd6909c2a9d563ae0e1d5
4
+ data.tar.gz: 25a1809f05ec5aab6f04ee7b885a17cf8b1388e1247284e773bc166d13a9e296
5
5
  SHA512:
6
- metadata.gz: e500f0918908c3345cc7604977b06659e1225124dff3f9444d91a56a74c1659d6e9bf0e8add27cb6c4024134639f3bc312cfe919627cc5177e74a8910f55dcd0
7
- data.tar.gz: 1c0fe8631b0cb1a4ef332bf8e73a5164a195f301d6371827ec9fe1f162dd2cbf3ed382ff02efe8d93c98a44ed8c0c33d4b9fde3c71fc8b9f629deb8701ca010b
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,54 +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')
83
- load load_dir.join('rouge/themes/pastie.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
 
@@ -309,18 +360,30 @@ module Rouge
309
360
  yield %|respectively. Theme defaults to thankful_eyes.|
310
361
  yield %||
311
362
  yield %|options:|
312
- 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|
313
367
  yield %||
314
368
  yield %|available themes:|
315
369
  yield %| #{Theme.registry.keys.sort.join(', ')}|
316
370
  end
317
371
 
318
372
  def self.parse(argv)
319
- opts = { :theme_name => 'thankful_eyes' }
373
+ opts = {
374
+ :theme_name => 'thankful_eyes',
375
+ :tex => false,
376
+ :tex_prefix => 'RG'
377
+ }
320
378
 
321
379
  until argv.empty?
322
380
  arg = argv.shift
323
381
  case arg
382
+ when '--tex'
383
+ opts[:tex] = true
384
+ when '--tex-prefix'
385
+ opts[:tex] = true
386
+ opts[:tex_prefix] = argv.shift
324
387
  when /--(\w+)/
325
388
  opts[$1.tr('-', '_').to_sym] = argv.shift
326
389
  else
@@ -337,6 +400,10 @@ module Rouge
337
400
  or error! "unknown theme: #{theme_name}"
338
401
 
339
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
340
407
  end
341
408
 
342
409
  def run
@@ -365,7 +432,7 @@ module Rouge
365
432
  puts "== Available Lexers =="
366
433
 
367
434
  Lexer.all.sort_by(&:tag).each do |lexer|
368
- desc = "#{lexer.desc}"
435
+ desc = String.new("#{lexer.desc}")
369
436
  if lexer.aliases.any?
370
437
  desc << " [aliases: #{lexer.aliases.join(',')}]"
371
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
+ }