rouge 3.3.0 → 3.8.0

Sign up to get free protection for your applications and to get access to all the features.
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")