rouge 3.3.0 → 3.8.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 (216) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +15 -3
  3. data/lib/rouge.rb +49 -41
  4. data/lib/rouge/cli.rb +64 -15
  5. data/lib/rouge/demos/ada +26 -0
  6. data/lib/rouge/demos/armasm +12 -0
  7. data/lib/rouge/demos/batchfile +3 -0
  8. data/lib/rouge/demos/bbcbasic +6 -0
  9. data/lib/rouge/demos/bpf +7 -0
  10. data/lib/rouge/demos/brainfuck +5 -0
  11. data/lib/rouge/demos/cmhg +8 -0
  12. data/lib/rouge/demos/cuda +11 -0
  13. data/lib/rouge/demos/cython +6 -0
  14. data/lib/rouge/demos/epp +4 -0
  15. data/lib/rouge/demos/escape +3 -0
  16. data/lib/rouge/demos/gdscript +18 -0
  17. data/lib/rouge/demos/hocon +8 -0
  18. data/lib/rouge/demos/magik +6 -0
  19. data/lib/rouge/demos/mason +22 -0
  20. data/lib/rouge/demos/msgtrans +4 -0
  21. data/lib/rouge/demos/openedge +4 -0
  22. data/lib/rouge/demos/opentype_feature_file +6 -0
  23. data/lib/rouge/demos/plist +1 -132
  24. data/lib/rouge/demos/powershell +12 -48
  25. data/lib/rouge/demos/reasonml +12 -0
  26. data/lib/rouge/demos/sas +13 -0
  27. data/lib/rouge/demos/supercollider +11 -0
  28. data/lib/rouge/demos/xojo +14 -0
  29. data/lib/rouge/demos/xpath +2 -0
  30. data/lib/rouge/demos/xquery +22 -0
  31. data/lib/rouge/formatter.rb +37 -1
  32. data/lib/rouge/formatters/html.rb +20 -2
  33. data/lib/rouge/formatters/html_line_table.rb +53 -0
  34. data/lib/rouge/formatters/html_linewise.rb +6 -11
  35. data/lib/rouge/formatters/html_table.rb +20 -31
  36. data/lib/rouge/formatters/terminal256.rb +1 -0
  37. data/lib/rouge/formatters/tex.rb +92 -0
  38. data/lib/rouge/guessers/disambiguation.rb +25 -0
  39. data/lib/rouge/guessers/glob_mapping.rb +1 -1
  40. data/lib/rouge/guessers/modeline.rb +1 -1
  41. data/lib/rouge/guessers/source.rb +1 -1
  42. data/lib/rouge/lexer.rb +64 -14
  43. data/lib/rouge/lexers/abap.rb +11 -11
  44. data/lib/rouge/lexers/actionscript.rb +34 -34
  45. data/lib/rouge/lexers/ada.rb +162 -0
  46. data/lib/rouge/lexers/apache.rb +8 -8
  47. data/lib/rouge/lexers/apple_script.rb +15 -14
  48. data/lib/rouge/lexers/armasm.rb +145 -0
  49. data/lib/rouge/lexers/awk.rb +25 -25
  50. data/lib/rouge/lexers/batchfile.rb +164 -0
  51. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  52. data/lib/rouge/lexers/biml.rb +4 -4
  53. data/lib/rouge/lexers/bpf.rb +104 -0
  54. data/lib/rouge/lexers/brainfuck.rb +53 -0
  55. data/lib/rouge/lexers/bsl.rb +12 -12
  56. data/lib/rouge/lexers/c.rb +34 -57
  57. data/lib/rouge/lexers/ceylon.rb +6 -34
  58. data/lib/rouge/lexers/cfscript.rb +26 -26
  59. data/lib/rouge/lexers/clojure.rb +14 -14
  60. data/lib/rouge/lexers/cmake.rb +14 -14
  61. data/lib/rouge/lexers/cmhg.rb +34 -0
  62. data/lib/rouge/lexers/coffeescript.rb +43 -35
  63. data/lib/rouge/lexers/common_lisp.rb +37 -37
  64. data/lib/rouge/lexers/conf.rb +6 -6
  65. data/lib/rouge/lexers/console.rb +3 -3
  66. data/lib/rouge/lexers/coq.rb +18 -18
  67. data/lib/rouge/lexers/cpp.rb +12 -9
  68. data/lib/rouge/lexers/crystal.rb +70 -70
  69. data/lib/rouge/lexers/csharp.rb +28 -29
  70. data/lib/rouge/lexers/css.rb +23 -23
  71. data/lib/rouge/lexers/cuda.rb +35 -0
  72. data/lib/rouge/lexers/cython.rb +151 -0
  73. data/lib/rouge/lexers/d.rb +59 -59
  74. data/lib/rouge/lexers/dart.rb +33 -33
  75. data/lib/rouge/lexers/diff.rb +8 -4
  76. data/lib/rouge/lexers/digdag.rb +1 -1
  77. data/lib/rouge/lexers/docker.rb +11 -11
  78. data/lib/rouge/lexers/dot.rb +16 -16
  79. data/lib/rouge/lexers/eiffel.rb +20 -20
  80. data/lib/rouge/lexers/elixir.rb +34 -30
  81. data/lib/rouge/lexers/elm.rb +29 -29
  82. data/lib/rouge/lexers/epp.rb +51 -0
  83. data/lib/rouge/lexers/erb.rb +4 -4
  84. data/lib/rouge/lexers/escape.rb +58 -0
  85. data/lib/rouge/lexers/factor.rb +40 -40
  86. data/lib/rouge/lexers/fortran.rb +32 -32
  87. data/lib/rouge/lexers/fsharp.rb +30 -30
  88. data/lib/rouge/lexers/gdscript.rb +171 -0
  89. data/lib/rouge/lexers/gherkin.rb +16 -14
  90. data/lib/rouge/lexers/glsl.rb +1 -5
  91. data/lib/rouge/lexers/go.rb +2 -2
  92. data/lib/rouge/lexers/graphql.rb +77 -60
  93. data/lib/rouge/lexers/groovy.rb +23 -25
  94. data/lib/rouge/lexers/hack.rb +1 -1
  95. data/lib/rouge/lexers/haml.rb +25 -29
  96. data/lib/rouge/lexers/handlebars.rb +31 -20
  97. data/lib/rouge/lexers/haskell.rb +66 -65
  98. data/lib/rouge/lexers/hcl.rb +25 -25
  99. data/lib/rouge/lexers/hocon.rb +86 -0
  100. data/lib/rouge/lexers/html.rb +32 -31
  101. data/lib/rouge/lexers/http.rb +4 -4
  102. data/lib/rouge/lexers/hylang.rb +14 -14
  103. data/lib/rouge/lexers/idlang.rb +32 -32
  104. data/lib/rouge/lexers/igorpro.rb +31 -31
  105. data/lib/rouge/lexers/ini.rb +12 -12
  106. data/lib/rouge/lexers/io.rb +7 -7
  107. data/lib/rouge/lexers/irb.rb +5 -5
  108. data/lib/rouge/lexers/java.rb +28 -24
  109. data/lib/rouge/lexers/javascript.rb +57 -61
  110. data/lib/rouge/lexers/jinja.rb +34 -20
  111. data/lib/rouge/lexers/json.rb +50 -11
  112. data/lib/rouge/lexers/json_doc.rb +2 -2
  113. data/lib/rouge/lexers/jsonnet.rb +18 -18
  114. data/lib/rouge/lexers/jsp.rb +30 -30
  115. data/lib/rouge/lexers/jsx.rb +16 -16
  116. data/lib/rouge/lexers/julia.rb +181 -58
  117. data/lib/rouge/lexers/kotlin.rb +14 -7
  118. data/lib/rouge/lexers/lasso.rb +50 -50
  119. data/lib/rouge/lexers/liquid.rb +76 -53
  120. data/lib/rouge/lexers/literate_coffeescript.rb +2 -2
  121. data/lib/rouge/lexers/literate_haskell.rb +5 -5
  122. data/lib/rouge/lexers/llvm.rb +23 -16
  123. data/lib/rouge/lexers/lua.rb +3 -3
  124. data/lib/rouge/lexers/m68k.rb +18 -19
  125. data/lib/rouge/lexers/magik.rb +127 -0
  126. data/lib/rouge/lexers/make.rb +56 -34
  127. data/lib/rouge/lexers/markdown.rb +55 -38
  128. data/lib/rouge/lexers/mason.rb +115 -0
  129. data/lib/rouge/lexers/mathematica.rb +11 -11
  130. data/lib/rouge/lexers/matlab.rb +23 -16
  131. data/lib/rouge/lexers/moonscript.rb +3 -3
  132. data/lib/rouge/lexers/mosel.rb +63 -63
  133. data/lib/rouge/lexers/msgtrans.rb +26 -0
  134. data/lib/rouge/lexers/mxml.rb +18 -18
  135. data/lib/rouge/lexers/nasm.rb +24 -25
  136. data/lib/rouge/lexers/nginx.rb +14 -14
  137. data/lib/rouge/lexers/nim.rb +3 -2
  138. data/lib/rouge/lexers/nix.rb +43 -43
  139. data/lib/rouge/lexers/objective_c.rb +43 -48
  140. data/lib/rouge/lexers/ocaml.rb +28 -64
  141. data/lib/rouge/lexers/ocaml/common.rb +53 -0
  142. data/lib/rouge/lexers/openedge.rb +429 -0
  143. data/lib/rouge/lexers/opentype_feature_file.rb +113 -0
  144. data/lib/rouge/lexers/pascal.rb +4 -4
  145. data/lib/rouge/lexers/perl.rb +98 -68
  146. data/lib/rouge/lexers/php.rb +66 -44
  147. data/lib/rouge/lexers/php/builtins.rb +181 -174
  148. data/lib/rouge/lexers/plain_text.rb +1 -1
  149. data/lib/rouge/lexers/plist.rb +14 -14
  150. data/lib/rouge/lexers/pony.rb +19 -19
  151. data/lib/rouge/lexers/powershell.rb +184 -638
  152. data/lib/rouge/lexers/praat.rb +75 -75
  153. data/lib/rouge/lexers/prolog.rb +26 -20
  154. data/lib/rouge/lexers/prometheus.rb +30 -30
  155. data/lib/rouge/lexers/properties.rb +12 -12
  156. data/lib/rouge/lexers/protobuf.rb +22 -22
  157. data/lib/rouge/lexers/puppet.rb +32 -32
  158. data/lib/rouge/lexers/python.rb +52 -52
  159. data/lib/rouge/lexers/q.rb +12 -12
  160. data/lib/rouge/lexers/qml.rb +12 -12
  161. data/lib/rouge/lexers/r.rb +12 -13
  162. data/lib/rouge/lexers/racket.rb +22 -22
  163. data/lib/rouge/lexers/reasonml.rb +65 -0
  164. data/lib/rouge/lexers/ruby.rb +72 -70
  165. data/lib/rouge/lexers/rust.rb +38 -35
  166. data/lib/rouge/lexers/sas.rb +563 -0
  167. data/lib/rouge/lexers/sass.rb +8 -8
  168. data/lib/rouge/lexers/sass/common.rb +40 -40
  169. data/lib/rouge/lexers/scala.rb +63 -37
  170. data/lib/rouge/lexers/scheme.rb +18 -18
  171. data/lib/rouge/lexers/scss.rb +3 -3
  172. data/lib/rouge/lexers/sed.rb +30 -30
  173. data/lib/rouge/lexers/shell.rb +62 -53
  174. data/lib/rouge/lexers/sieve.rb +8 -8
  175. data/lib/rouge/lexers/slim.rb +26 -26
  176. data/lib/rouge/lexers/smalltalk.rb +33 -33
  177. data/lib/rouge/lexers/smarty.rb +19 -19
  178. data/lib/rouge/lexers/sml.rb +67 -67
  179. data/lib/rouge/lexers/sqf.rb +1 -1
  180. data/lib/rouge/lexers/sql.rb +21 -21
  181. data/lib/rouge/lexers/supercollider.rb +116 -0
  182. data/lib/rouge/lexers/swift.rb +46 -43
  183. data/lib/rouge/lexers/tap.rb +20 -20
  184. data/lib/rouge/lexers/tcl.rb +27 -27
  185. data/lib/rouge/lexers/terraform.rb +13 -13
  186. data/lib/rouge/lexers/tex.rb +19 -19
  187. data/lib/rouge/lexers/toml.rb +19 -19
  188. data/lib/rouge/lexers/tulip.rb +36 -36
  189. data/lib/rouge/lexers/turtle.rb +35 -38
  190. data/lib/rouge/lexers/vala.rb +18 -18
  191. data/lib/rouge/lexers/vb.rb +27 -27
  192. data/lib/rouge/lexers/verilog.rb +25 -27
  193. data/lib/rouge/lexers/vhdl.rb +11 -11
  194. data/lib/rouge/lexers/viml.rb +14 -14
  195. data/lib/rouge/lexers/vue.rb +9 -9
  196. data/lib/rouge/lexers/wollok.rb +26 -26
  197. data/lib/rouge/lexers/xml.rb +17 -21
  198. data/lib/rouge/lexers/xojo.rb +61 -0
  199. data/lib/rouge/lexers/xpath.rb +332 -0
  200. data/lib/rouge/lexers/xquery.rb +145 -0
  201. data/lib/rouge/lexers/yaml.rb +63 -61
  202. data/lib/rouge/plugins/redcarpet.rb +1 -1
  203. data/lib/rouge/regex_lexer.rb +26 -25
  204. data/lib/rouge/tex_theme_renderer.rb +132 -0
  205. data/lib/rouge/theme.rb +4 -0
  206. data/lib/rouge/themes/bw.rb +41 -0
  207. data/lib/rouge/themes/magritte.rb +78 -0
  208. data/lib/rouge/themes/monokai_sublime.rb +2 -1
  209. data/lib/rouge/themes/pastie.rb +1 -1
  210. data/lib/rouge/themes/thankful_eyes.rb +1 -1
  211. data/lib/rouge/themes/tulip.rb +1 -1
  212. data/lib/rouge/token.rb +30 -22
  213. data/lib/rouge/util.rb +2 -2
  214. data/lib/rouge/version.rb +1 -1
  215. data/rouge.gemspec +4 -3
  216. metadata +61 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 48cc6c6c6d8f17128a0b1347b6871a2553f5742d
4
- data.tar.gz: 7f0d0d895becf6c8a6f52c9e029ea4d1ccceb861
2
+ SHA256:
3
+ metadata.gz: 4041f8ac950b427b35d8d3147b6d9aed3743655daaaf09f57d303932b11259a6
4
+ data.tar.gz: cddd94af18b0f7ba578fa4c57f75415233d5518095b29202a7c12afd2662b804
5
5
  SHA512:
6
- metadata.gz: 073ba0c6ed9e932fd4ab069b99b2cef3d7efcb49dd7841caa71d48ce2faf5cf645eeba1937f56e831c2856ec88f23236ef7a9795e2a453f22c6a22adc36cf47e
7
- data.tar.gz: 68e38b4636dc835270f420b884f3f71ceb2bc87d41cc0ed8d811e03e6cd28d6357977911f8e8df3e95f924fa8ddda710af1cc384fd54b7c5eb1aba61fa97438b
6
+ metadata.gz: 68b649f1f965e5cd21fd722263bdff8720ba04119b8fff2245bb9c4178648d255362c3a18129c6724dd56893f777a518d1ff74ade223697530f5a6595d20f2aa
7
+ data.tar.gz: 182df2ef3e868eb95132022309db218e34f2cd19e9e874a7d119f6250db0971e7ba6fd28ddea2ebfa8fdb759504dfe8a8401e085e95386748c7a00de347fc5d9
data/Gemfile CHANGED
@@ -4,25 +4,37 @@ source 'http://rubygems.org'
4
4
 
5
5
  gemspec
6
6
 
7
- gem 'bundler', '~> 1.15'
8
7
  gem 'rake'
9
8
 
10
9
  gem 'minitest', '>= 5.0'
11
10
  gem 'minitest-power_assert'
12
11
 
12
+ gem 'parallel', '~> 1.13.0' if RUBY_VERSION < '2.2.0'
13
13
  gem 'rubocop', '~> 0.49.1'
14
14
 
15
15
  # don't try to install redcarpet under jruby
16
16
  gem 'redcarpet', :platforms => :ruby
17
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
+
18
27
  group :development do
19
28
  gem 'pry'
20
29
 
21
30
  # docs
22
- gem 'yard'
23
31
  gem 'github-markup'
24
32
 
25
33
  # for visual tests
26
- gem 'sinatra'
34
+ if RUBY_VERSION < '2.2.0'
35
+ gem 'sinatra', '~> 1.4.8'
36
+ else
37
+ gem 'sinatra'
38
+ end
27
39
  gem 'shotgun'
28
40
  end
@@ -34,51 +34,59 @@ module Rouge
34
34
  end
35
35
  end
36
36
 
37
- load_dir = Pathname.new(__FILE__).dirname
38
- load load_dir.join('rouge/version.rb')
37
+ # mimic Kernel#require_relative API
38
+ def load_relative(path)
39
+ load File.join(__dir__, "#{path}.rb")
40
+ end
39
41
 
40
- load load_dir.join('rouge/util.rb')
42
+ def lexer_dir(path = '')
43
+ File.join(__dir__, 'rouge', 'lexers', path)
44
+ end
41
45
 
42
- load load_dir.join('rouge/text_analyzer.rb')
43
- load load_dir.join('rouge/token.rb')
46
+ load_relative 'rouge/version'
47
+ load_relative 'rouge/util'
48
+ load_relative 'rouge/text_analyzer'
49
+ load_relative 'rouge/token'
44
50
 
45
- load load_dir.join('rouge/lexer.rb')
46
- load load_dir.join('rouge/regex_lexer.rb')
47
- load load_dir.join('rouge/template_lexer.rb')
51
+ load_relative 'rouge/lexer'
52
+ load_relative 'rouge/regex_lexer'
53
+ load_relative 'rouge/template_lexer'
48
54
 
49
- lexers_dir = load_dir.join('rouge/lexers')
50
- Dir.glob(lexers_dir.join('*.rb')).each do |f|
51
- Rouge::Lexers.load_lexer(Pathname.new(f).relative_path_from(lexers_dir).to_s)
52
- end
55
+ Dir.glob(lexer_dir('*rb')).each { |f| Rouge::Lexers.load_lexer(f.sub(lexer_dir, '')) }
53
56
 
54
- load load_dir.join('rouge/guesser.rb')
55
- load load_dir.join('rouge/guessers/util.rb')
56
- load load_dir.join('rouge/guessers/glob_mapping.rb')
57
- load load_dir.join('rouge/guessers/modeline.rb')
58
- load load_dir.join('rouge/guessers/filename.rb')
59
- load load_dir.join('rouge/guessers/mimetype.rb')
60
- load load_dir.join('rouge/guessers/source.rb')
61
- load load_dir.join('rouge/guessers/disambiguation.rb')
57
+ load_relative 'rouge/guesser'
58
+ load_relative 'rouge/guessers/util'
59
+ load_relative 'rouge/guessers/glob_mapping'
60
+ load_relative 'rouge/guessers/modeline'
61
+ load_relative 'rouge/guessers/filename'
62
+ load_relative 'rouge/guessers/mimetype'
63
+ load_relative 'rouge/guessers/source'
64
+ load_relative 'rouge/guessers/disambiguation'
62
65
 
63
- load load_dir.join('rouge/formatter.rb')
64
- load load_dir.join('rouge/formatters/html.rb')
65
- load load_dir.join('rouge/formatters/html_table.rb')
66
- load load_dir.join('rouge/formatters/html_pygments.rb')
67
- load load_dir.join('rouge/formatters/html_legacy.rb')
68
- load load_dir.join('rouge/formatters/html_linewise.rb')
69
- load load_dir.join('rouge/formatters/html_inline.rb')
70
- load load_dir.join('rouge/formatters/terminal256.rb')
71
- load load_dir.join('rouge/formatters/null.rb')
66
+ load_relative 'rouge/formatter'
67
+ load_relative 'rouge/formatters/html'
68
+ load_relative 'rouge/formatters/html_table'
69
+ load_relative 'rouge/formatters/html_pygments'
70
+ load_relative 'rouge/formatters/html_legacy'
71
+ load_relative 'rouge/formatters/html_linewise'
72
+ load_relative 'rouge/formatters/html_line_table'
73
+ load_relative 'rouge/formatters/html_inline'
74
+ load_relative 'rouge/formatters/terminal256'
75
+ load_relative 'rouge/formatters/tex'
76
+ load_relative 'rouge/formatters/null'
72
77
 
73
- load load_dir.join('rouge/theme.rb')
74
- load load_dir.join('rouge/themes/thankful_eyes.rb')
75
- load load_dir.join('rouge/themes/colorful.rb')
76
- load load_dir.join('rouge/themes/base16.rb')
77
- load load_dir.join('rouge/themes/github.rb')
78
- load load_dir.join('rouge/themes/igor_pro.rb')
79
- load load_dir.join('rouge/themes/monokai.rb')
80
- load load_dir.join('rouge/themes/molokai.rb')
81
- load load_dir.join('rouge/themes/monokai_sublime.rb')
82
- load load_dir.join('rouge/themes/gruvbox.rb')
83
- load load_dir.join('rouge/themes/tulip.rb')
84
- load load_dir.join('rouge/themes/pastie.rb')
78
+ load_relative 'rouge/theme'
79
+ load_relative 'rouge/tex_theme_renderer'
80
+ load_relative 'rouge/themes/thankful_eyes'
81
+ load_relative 'rouge/themes/colorful'
82
+ load_relative 'rouge/themes/base16'
83
+ load_relative 'rouge/themes/github'
84
+ load_relative 'rouge/themes/igor_pro'
85
+ load_relative 'rouge/themes/monokai'
86
+ load_relative 'rouge/themes/molokai'
87
+ load_relative 'rouge/themes/monokai_sublime'
88
+ load_relative 'rouge/themes/gruvbox'
89
+ load_relative 'rouge/themes/tulip'
90
+ load_relative 'rouge/themes/pastie'
91
+ load_relative 'rouge/themes/bw'
92
+ load_relative 'rouge/themes/magritte'
@@ -38,7 +38,7 @@ module Rouge
38
38
  def self.doc
39
39
  return enum_for(:doc) unless block_given?
40
40
 
41
- yield %|usage: rougify [command] [args...]|
41
+ yield %|usage: rougify {global options} [command] [args...]|
42
42
  yield %||
43
43
  yield %|where <command> is one of:|
44
44
  yield %| highlight #{Highlight.desc}|
@@ -48,6 +48,9 @@ module Rouge
48
48
  yield %| guess #{Guess.desc}|
49
49
  yield %| version #{Version.desc}|
50
50
  yield %||
51
+ yield %|global options:|
52
+ yield %[ --require|-r <fname> require <fname> after loading rouge]
53
+ yield %||
51
54
  yield %|See `rougify help <command>` for more info.|
52
55
  end
53
56
 
@@ -62,18 +65,22 @@ module Rouge
62
65
  def self.parse(argv=ARGV)
63
66
  argv = normalize_syntax(argv)
64
67
 
65
- mode = argv.shift
68
+ while (head = argv.shift)
69
+ case head
70
+ when '-h', '--help', 'help', '-help'
71
+ return Help.parse(argv)
72
+ when '--require', '-r'
73
+ require argv.shift
74
+ else
75
+ break
76
+ end
77
+ end
66
78
 
67
- klass = class_from_arg(mode)
79
+ klass = class_from_arg(head)
68
80
  return klass.parse(argv) if klass
69
81
 
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
82
+ argv.unshift(head) if head
83
+ Highlight.parse(argv)
77
84
  end
78
85
 
79
86
  def initialize(options={})
@@ -91,7 +98,7 @@ module Rouge
91
98
  case arg
92
99
  when 'version', '--version', '-v'
93
100
  Version
94
- when 'help'
101
+ when 'help', nil
95
102
  Help
96
103
  when 'highlight', 'hi'
97
104
  Highlight
@@ -186,6 +193,11 @@ module Rouge
186
193
  yield %[]
187
194
  yield %[--require|-r <filename> require a filename or library before]
188
195
  yield %[ highlighting]
196
+ yield %[]
197
+ yield %[--escape allow the use of escapes between <! and !>]
198
+ yield %[]
199
+ yield %[--escape-with <l> <r> allow the use of escapes between custom]
200
+ yield %[ delimiters. implies --escape]
189
201
  end
190
202
 
191
203
  def self.parse(argv)
@@ -218,6 +230,10 @@ module Rouge
218
230
  opts[:css_class] = argv.shift
219
231
  when '--lexer-opts', '-L'
220
232
  opts[:lexer_opts] = parse_cgi(argv.shift)
233
+ when '--escape'
234
+ opts[:escape] = ['<!', '!>']
235
+ when '--escape-with'
236
+ opts[:escape] = [argv.shift, argv.shift]
221
237
  when /^--/
222
238
  error! "unknown option #{arg.inspect}"
223
239
  else
@@ -244,11 +260,23 @@ module Rouge
244
260
  )
245
261
  end
246
262
 
263
+ def raw_lexer
264
+ lexer_class.new(@lexer_opts)
265
+ end
266
+
267
+ def escape_lexer
268
+ Rouge::Lexers::Escape.new(
269
+ start: @escape[0],
270
+ end: @escape[1],
271
+ lang: raw_lexer,
272
+ )
273
+ end
274
+
247
275
  def lexer
248
- @lexer ||= lexer_class.new(@lexer_opts)
276
+ @lexer ||= @escape ? escape_lexer : raw_lexer
249
277
  end
250
278
 
251
- attr_reader :input_file, :lexer_name, :mimetype, :formatter
279
+ attr_reader :input_file, :lexer_name, :mimetype, :formatter, :escape
252
280
 
253
281
  def initialize(opts={})
254
282
  Rouge::Lexer.enable_debug!
@@ -276,14 +304,19 @@ module Rouge
276
304
  when 'html' then Formatters::HTML.new
277
305
  when 'html-pygments' then Formatters::HTMLPygments.new(Formatters::HTML.new, opts[:css_class])
278
306
  when 'html-inline' then Formatters::HTMLInline.new(theme)
307
+ when 'html-line-table' then Formatters::HTMLLineTable.new(Formatters::HTML.new)
279
308
  when 'html-table' then Formatters::HTMLTable.new(Formatters::HTML.new)
280
309
  when 'null', 'raw', 'tokens' then Formatters::Null.new
310
+ when 'tex' then Formatters::Tex.new
281
311
  else
282
312
  error! "unknown formatter preset #{opts[:formatter]}"
283
313
  end
314
+
315
+ @escape = opts[:escape]
284
316
  end
285
317
 
286
318
  def run
319
+ Formatter.enable_escape! if @escape
287
320
  formatter.format(lexer.lex(input), &method(:print))
288
321
  end
289
322
 
@@ -310,18 +343,30 @@ module Rouge
310
343
  yield %|respectively. Theme defaults to thankful_eyes.|
311
344
  yield %||
312
345
  yield %|options:|
313
- yield %| --scope (default: .highlight) a css selector to scope by|
346
+ yield %| --scope (default: .highlight) a css selector to scope by|
347
+ yield %| --tex (default: false) render as TeX|
348
+ yield %| --tex-prefix (default: RG) a command prefix for TeX|
349
+ yield %| implies --tex if specified|
314
350
  yield %||
315
351
  yield %|available themes:|
316
352
  yield %| #{Theme.registry.keys.sort.join(', ')}|
317
353
  end
318
354
 
319
355
  def self.parse(argv)
320
- opts = { :theme_name => 'thankful_eyes' }
356
+ opts = {
357
+ :theme_name => 'thankful_eyes',
358
+ :tex => false,
359
+ :tex_prefix => 'RG'
360
+ }
321
361
 
322
362
  until argv.empty?
323
363
  arg = argv.shift
324
364
  case arg
365
+ when '--tex'
366
+ opts[:tex] = true
367
+ when '--tex-prefix'
368
+ opts[:tex] = true
369
+ opts[:tex_prefix] = argv.shift
325
370
  when /--(\w+)/
326
371
  opts[$1.tr('-', '_').to_sym] = argv.shift
327
372
  else
@@ -338,6 +383,10 @@ module Rouge
338
383
  or error! "unknown theme: #{theme_name}"
339
384
 
340
385
  @theme = theme_class.new(opts)
386
+ if opts[:tex]
387
+ tex_prefix = opts[:tex_prefix]
388
+ @theme = TexThemeRenderer.new(@theme, prefix: tex_prefix)
389
+ end
341
390
  end
342
391
 
343
392
  def run
@@ -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,12 @@
1
+ GET common.s
2
+
3
+ RetVal * 0x123 :SHL: 4
4
+
5
+ AREA |Area$$Name|, CODE, READONLY
6
+
7
+ MyFunction ROUT ; This is a comment
8
+ ASSERT RetVal <> 0
9
+ 1 MOVW r0, #RetVal
10
+ BX lr
11
+
12
+ END
@@ -0,0 +1,3 @@
1
+ @echo off
2
+ setlocal enableextensions enabledelayedexpansion
3
+ for /f "tokens=*" %%a in ("hello !username! hi") do echo %%~a
@@ -0,0 +1,6 @@
1
+ REM > DefaultFilename
2
+ REM Ordinary comment
3
+ FOR n=1 TO 10
4
+ PRINTTAB(n)"Hello there ";FNnumber(n)DIV3+1
5
+ NEXT:END
6
+ DEFFNnumber(x%)=ABS(x%-4)
@@ -0,0 +1,7 @@
1
+ r0 = *(u8 *)skb[23]
2
+ *(u32 *)(r10 - 4) = r0
3
+ r1 = *(u32 *)(r6 + 4)
4
+ r1 = 0 ll
5
+ call 1 /* lookup */
6
+ if r0 == 0 goto +2 <LBB0_3>
7
+ lock *(u64 *)(r0 + 0) += r1
@@ -0,0 +1,5 @@
1
+ [
2
+ This is a sample
3
+ comment.
4
+ ]
5
+ .[>+<-]>,
@@ -0,0 +1,8 @@
1
+ ; Header comments
2
+
3
+ #include "definitions.h"
4
+
5
+ command-keyword-table: command_handler
6
+ foo(min-args:0, max-args:0,; comment
7
+ international:,
8
+ invalid-syntax: "syntaxtoken" help-text: "helptoken")
@@ -0,0 +1,11 @@
1
+ #include <cstdio>
2
+
3
+ __global__ void helloFromGPU() {
4
+ std::printf("Hello World\n");
5
+ __syncthreads();
6
+ }
7
+
8
+ int main() {
9
+ dim3 block(1, 10);
10
+ helloFromGPU<<<1, block>>>();
11
+ }
@@ -0,0 +1,6 @@
1
+ cdef extern from 'foo.h':
2
+ int foo_int
3
+ struct foo_struct:
4
+ pass
5
+
6
+ ctypedef int word
@@ -0,0 +1,4 @@
1
+ <%- |
2
+ Optional[String] $title,
3
+ | -%>
4
+ <title><%= $title %></title>
@@ -0,0 +1,3 @@
1
+ If Formatter.enable_escape! is called, this allows escaping into html
2
+ or the parent format with a special delimiter. For example:
3
+ <!<span style="text-decoration: underline">!>underlined text!<!</span>!>
@@ -0,0 +1,18 @@
1
+ extends Node
2
+
3
+ # Variables & Built-in Types
4
+
5
+ var a = 5
6
+ var b = true
7
+ var s = "Hello"
8
+ var arr = [1, 2, 3]
9
+
10
+ # Constants & Enums
11
+
12
+ const ANSWER = 42
13
+ enum { UNIT_NEUTRAL, UNIT_ENEMY, UNIT_ALLY }
14
+
15
+ # Functions
16
+
17
+ func _ready():
18
+ print("Hello, World")