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
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -12,10 +13,10 @@ module Rouge
12
13
  mimetypes 'text/x-scss'
13
14
 
14
15
  state :root do
15
- rule /\s+/, Text
16
+ rule %r/\s+/, Text
16
17
  rule %r(//.*?$), Comment::Single
17
18
  rule %r(/[*].*?[*]/)m, Comment::Multiline
18
- rule /@import\b/, Keyword, :value
19
+ rule %r/@import\b/, Keyword, :value
19
20
 
20
21
  mixin :content_common
21
22
 
@@ -26,7 +27,7 @@ module Rouge
26
27
  end
27
28
 
28
29
  state :end_section do
29
- rule /\n/, Text
30
+ rule %r/\n/, Text
30
31
  rule(/[;{}]/) { token Punctuation; reset_stack }
31
32
  end
32
33
  end
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -16,15 +17,15 @@ module Rouge
16
17
 
17
18
  class Regex < RegexLexer
18
19
  state :root do
19
- rule /\\./, Str::Escape
20
- rule /\[/, Punctuation, :brackets
21
- rule /[$^.*]/, Operator
22
- rule /[()]/, Punctuation
23
- rule /./, Str::Regex
20
+ rule %r/\\./, Str::Escape
21
+ rule %r/\[/, Punctuation, :brackets
22
+ rule %r/[$^.*]/, Operator
23
+ rule %r/[()]/, Punctuation
24
+ rule %r/./, Str::Regex
24
25
  end
25
26
 
26
27
  state :brackets do
27
- rule /\^/ do
28
+ rule %r/\^/ do
28
29
  token Punctuation
29
30
  goto :brackets_int
30
31
  end
@@ -34,17 +35,17 @@ module Rouge
34
35
 
35
36
  state :brackets_int do
36
37
  # ranges
37
- rule /.-./, Name::Variable
38
- rule /\]/, Punctuation, :pop!
39
- rule /./, Str::Regex
38
+ rule %r/.-./, Name::Variable
39
+ rule %r/\]/, Punctuation, :pop!
40
+ rule %r/./, Str::Regex
40
41
  end
41
42
  end
42
43
 
43
44
  class Replacement < RegexLexer
44
45
  state :root do
45
- rule /\\./m, Str::Escape
46
- rule /&/, Operator
47
- rule /[^\\&]+/m, Text
46
+ rule %r/\\./m, Str::Escape
47
+ rule %r/&/, Operator
48
+ rule %r/[^\\&]+/m, Text
48
49
  end
49
50
  end
50
51
 
@@ -59,7 +60,7 @@ module Rouge
59
60
  start { regex.reset!; replacement.reset! }
60
61
 
61
62
  state :whitespace do
62
- rule /\s+/m, Text
63
+ rule %r/\s+/m, Text
63
64
  rule(/#.*?\n/) { token Comment; reset_stack }
64
65
  rule(/\n/) { token Text; reset_stack }
65
66
  rule(/;/) { token Punctuation; reset_stack }
@@ -75,7 +76,7 @@ module Rouge
75
76
  mixin :whitespace
76
77
 
77
78
  # subst and transliteration
78
- rule /(s)(.)(#{edot}*?)(\2)(#{edot}*?)(\2)/m do |m|
79
+ rule %r/(s)(.)(#{edot}*?)(\2)(#{edot}*?)(\2)/m do |m|
79
80
  token Keyword, m[1]
80
81
  token Punctuation, m[2]
81
82
  delegate regex, m[3]
@@ -87,7 +88,7 @@ module Rouge
87
88
  goto :flags
88
89
  end
89
90
 
90
- rule /(y)(.)(#{edot}*?)(\2)(#{edot}*?)(\2)/m do |m|
91
+ rule %r/(y)(.)(#{edot}*?)(\2)(#{edot}*?)(\2)/m do |m|
91
92
  token Keyword, m[1]
92
93
  token Punctuation, m[2]
93
94
  delegate replacement, m[3]
@@ -99,29 +100,29 @@ module Rouge
99
100
  end
100
101
 
101
102
  # commands that take a text segment as an argument
102
- rule /([aic])(\s*)/ do
103
+ rule %r/([aic])(\s*)/ do
103
104
  groups Keyword, Text; goto :text
104
105
  end
105
106
 
106
- rule /[pd]/, Keyword
107
+ rule %r/[pd]/, Keyword
107
108
 
108
109
  # commands that take a number argument
109
- rule /([qQl])(\s+)(\d+)/i do
110
+ rule %r/([qQl])(\s+)(\d+)/i do
110
111
  groups Keyword, Text, Num
111
112
  pop!
112
113
  end
113
114
 
114
115
  # no-argument commands
115
- rule /[={}dDgGhHlnpPqx]/, Keyword, :pop!
116
+ rule %r/[={}dDgGhHlnpPqx]/, Keyword, :pop!
116
117
 
117
118
  # commands that take a filename argument
118
- rule /([rRwW])(\s+)(\S+)/ do
119
+ rule %r/([rRwW])(\s+)(\S+)/ do
119
120
  groups Keyword, Text, Name
120
121
  pop!
121
122
  end
122
123
 
123
124
  # commands that take a label argument
124
- rule /([:btT])(\s+)(\S+)/ do
125
+ rule %r/([:btT])(\s+)(\S+)/ do
125
126
  groups Keyword, Text, Name::Label
126
127
  pop!
127
128
  end
@@ -132,15 +133,15 @@ module Rouge
132
133
 
133
134
  ### address ranges ###
134
135
  addr_tok = Keyword::Namespace
135
- rule /\d+/, addr_tok
136
- rule /[$,~+!]/, addr_tok
136
+ rule %r/\d+/, addr_tok
137
+ rule %r/[$,~+!]/, addr_tok
137
138
 
138
139
  rule %r((/)((?:\\.|.)*?)(/)) do |m|
139
140
  token addr_tok, m[1]; delegate regex, m[2]; token addr_tok, m[3]
140
141
  end
141
142
 
142
143
  # alternate regex rage delimiters
143
- rule %r((\\)(.)(\\.|.)*?(\2)) do |m|
144
+ rule %r((\\)(.)((?:\\.|.)*?)(\2)) do |m|
144
145
  token addr_tok, m[1] + m[2]
145
146
  delegate regex, m[3]
146
147
  token addr_tok, m[4]
@@ -150,18 +151,18 @@ module Rouge
150
151
  end
151
152
 
152
153
  state :text do
153
- rule /[^\\\n]+/, Str
154
- rule /\\\n/, Str::Escape
155
- rule /\\/, Str
156
- rule /\n/, Text, :pop!
154
+ rule %r/[^\\\n]+/, Str
155
+ rule %r/\\\n/, Str::Escape
156
+ rule %r/\\/, Str
157
+ rule %r/\n/, Text, :pop!
157
158
  end
158
159
 
159
160
  state :flags do
160
- rule /[gp]+/, Keyword, :pop!
161
+ rule %r/[gp]+/, Keyword, :pop!
161
162
 
162
163
  # writing to a file with the subst command.
163
164
  # who'da thunk...?
164
- rule /([wW])(\s+)(\S+)/ do
165
+ rule %r/([wW])(\s+)(\S+)/ do
165
166
  token Keyword; token Text; token Name
166
167
  end
167
168
 
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -8,10 +9,12 @@ module Rouge
8
9
 
9
10
  tag 'shell'
10
11
  aliases 'bash', 'zsh', 'ksh', 'sh'
11
- filenames '*.sh', '*.bash', '*.zsh', '*.ksh',
12
- '.bashrc', '.zshrc', '.kshrc', '.profile', 'PKGBUILD'
12
+ filenames '*.sh', '*.bash', '*.zsh', '*.ksh', '.bashrc', '.zshrc',
13
+ '.kshrc', '.profile', 'APKBUILD', 'PKGBUILD', '*.ebuild',
14
+ '*.eclass', '*.exheres-0', '*.exlib'
13
15
 
14
- mimetypes 'application/x-sh', 'application/x-shellscript'
16
+ mimetypes 'application/x-sh', 'application/x-shellscript', 'text/x-sh',
17
+ 'text/x-shellscript'
15
18
 
16
19
  def self.detect?(text)
17
20
  return true if text.shebang?(/(ba|z|k)?sh/)
@@ -43,25 +46,25 @@ module Rouge
43
46
  ).join('|')
44
47
 
45
48
  state :basic do
46
- rule /#.*$/, Comment
49
+ rule %r/#.*$/, Comment
47
50
 
48
- rule /\b(#{KEYWORDS})\s*\b/, Keyword
49
- rule /\bcase\b/, Keyword, :case
51
+ rule %r/\b(#{KEYWORDS})\s*\b/, Keyword
52
+ rule %r/\bcase\b/, Keyword, :case
50
53
 
51
- rule /\b(#{BUILTINS})\s*\b(?!(\.|-))/, Name::Builtin
52
- rule /[.](?=\s)/, Name::Builtin
54
+ rule %r/\b(#{BUILTINS})\s*\b(?!(\.|-))/, Name::Builtin
55
+ rule %r/[.](?=\s)/, Name::Builtin
53
56
 
54
- rule /(\b\w+)(=)/ do |m|
57
+ rule %r/(\b\w+)(=)/ do
55
58
  groups Name::Variable, Operator
56
59
  end
57
60
 
58
- rule /[\[\]{}()!=>]/, Operator
59
- rule /&&|\|\|/, Operator
61
+ rule %r/[\[\]{}()!=>]/, Operator
62
+ rule %r/&&|\|\|/, Operator
60
63
 
61
64
  # here-string
62
- rule /<<</, Operator
65
+ rule %r/<<</, Operator
63
66
 
64
- rule /(<<-?)(\s*)(\'?)(\\?)(\w+)(\3)/ do |m|
67
+ rule %r/(<<-?)(\s*)(['"]?)(\\?)(\w+)(\3)/ do |m|
65
68
  groups Operator, Text, Str::Heredoc, Str::Heredoc, Name::Constant, Str::Heredoc
66
69
  @heredocstr = Regexp.escape(m[5])
67
70
  push :heredoc
@@ -69,14 +72,14 @@ module Rouge
69
72
  end
70
73
 
71
74
  state :heredoc do
72
- rule /\n/, Str::Heredoc, :heredoc_nl
73
- rule /[^$\n]+/, Str::Heredoc
75
+ rule %r/\n/, Str::Heredoc, :heredoc_nl
76
+ rule %r/[^$\n\\]+/, Str::Heredoc
74
77
  mixin :interp
75
- rule /[$]/, Str::Heredoc
78
+ rule %r/[$]/, Str::Heredoc
76
79
  end
77
80
 
78
81
  state :heredoc_nl do
79
- rule /\s*(\w+)\s*\n/ do |m|
82
+ rule %r/\s*(\w+)\s*\n/ do |m|
80
83
  if m[1] == @heredocstr
81
84
  token Name::Constant
82
85
  pop! 2
@@ -92,92 +95,101 @@ module Rouge
92
95
  state :double_quotes do
93
96
  # NB: "abc$" is literally the string abc$.
94
97
  # Here we prevent :interp from interpreting $" as a variable.
95
- rule /(?:\$#?)?"/, Str::Double, :pop!
98
+ rule %r/(?:\$#?)?"/, Str::Double, :pop!
96
99
  mixin :interp
97
- rule /[^"`\\$]+/, Str::Double
100
+ rule %r/[^"`\\$]+/, Str::Double
98
101
  end
99
102
 
100
103
  state :ansi_string do
101
- rule /\\./, Str::Escape
102
- rule /[^\\']+/, Str::Single
104
+ rule %r/\\./, Str::Escape
105
+ rule %r/[^\\']+/, Str::Single
103
106
  mixin :single_quotes
104
107
  end
105
108
 
106
109
  state :single_quotes do
107
- rule /'/, Str::Single, :pop!
108
- rule /[^']+/, Str::Single
110
+ rule %r/'/, Str::Single, :pop!
111
+ rule %r/[^']+/, Str::Single
109
112
  end
110
113
 
111
114
  state :data do
112
- rule /\s+/, Text
113
- rule /\\./, Str::Escape
114
- rule /\$?"/, Str::Double, :double_quotes
115
- rule /\$'/, Str::Single, :ansi_string
115
+ rule %r/\s+/, Text
116
+ rule %r/\\./, Str::Escape
117
+ rule %r/\$?"/, Str::Double, :double_quotes
118
+ rule %r/\$'/, Str::Single, :ansi_string
116
119
 
117
120
  # single quotes are much easier than double quotes - we can
118
121
  # literally just scan until the next single quote.
119
122
  # POSIX: Enclosing characters in single-quotes ( '' )
120
123
  # shall preserve the literal value of each character within the
121
124
  # single-quotes. A single-quote cannot occur within single-quotes.
122
- rule /'/, Str::Single, :single_quotes
125
+ rule %r/'/, Str::Single, :single_quotes
123
126
 
124
- rule /\*/, Keyword
127
+ rule %r/\*/, Keyword
125
128
 
126
- rule /;/, Punctuation
129
+ rule %r/;/, Punctuation
127
130
 
128
- rule /--?[\w-]+/, Name::Tag
129
- rule /[^=\*\s{}()$"'`;\\<]+/, Text
130
- rule /\d+(?= |\Z)/, Num
131
- rule /</, Text
131
+ rule %r/--?[\w-]+/, Name::Tag
132
+ rule %r/[^=\*\s{}()$"'`;\\<]+/, Text
133
+ rule %r/\d+(?= |\Z)/, Num
134
+ rule %r/</, Text
132
135
  mixin :interp
133
136
  end
134
137
 
135
138
  state :curly do
136
- rule /}/, Keyword, :pop!
137
- rule /:-/, Keyword
138
- rule /[a-zA-Z0-9_]+/, Name::Variable
139
- rule /[^}:"`'$]+/, Punctuation
139
+ rule %r/}/, Keyword, :pop!
140
+ rule %r/:-/, Keyword
141
+ rule %r/[a-zA-Z0-9_]+/, Name::Variable
142
+ rule %r/[^}:"`'$]+/, Punctuation
140
143
  mixin :root
141
144
  end
142
145
 
143
- state :paren do
144
- rule /\)/, Keyword, :pop!
146
+ # the state inside $(...)
147
+ state :paren_interp do
148
+ rule %r/\)/, Str::Interpol, :pop!
149
+ rule %r/\(/, Operator, :paren_inner
150
+ mixin :root
151
+ end
152
+
153
+ # used to balance parentheses inside interpolation
154
+ state :paren_inner do
155
+ rule %r/\(/, Operator, :push
156
+ rule %r/\)/, Operator, :pop!
145
157
  mixin :root
146
158
  end
147
159
 
148
160
  state :math do
149
- rule /\)\)/, Keyword, :pop!
161
+ rule %r/\)\)/, Keyword, :pop!
150
162
  rule %r([-+*/%^|&!]|\*\*|\|\|), Operator
151
- rule /\d+(#\w+)?/, Num
163
+ rule %r/\d+(#\w+)?/, Num
152
164
  mixin :root
153
165
  end
154
166
 
155
167
  state :case do
156
- rule /\besac\b/, Keyword, :pop!
157
- rule /\|/, Punctuation
158
- rule /\)/, Punctuation, :case_stanza
168
+ rule %r/\besac\b/, Keyword, :pop!
169
+ rule %r/\|/, Punctuation
170
+ rule %r/\)/, Punctuation, :case_stanza
159
171
  mixin :root
160
172
  end
161
173
 
162
174
  state :case_stanza do
163
- rule /;;/, Punctuation, :pop!
175
+ rule %r/;;/, Punctuation, :pop!
164
176
  mixin :root
165
177
  end
166
178
 
167
179
  state :backticks do
168
- rule /`/, Str::Backtick, :pop!
180
+ rule %r/`/, Str::Backtick, :pop!
169
181
  mixin :root
170
182
  end
171
183
 
172
184
  state :interp do
173
- rule /\\$/, Str::Escape # line continuation
174
- rule /\\./, Str::Escape
175
- rule /\$\(\(/, Keyword, :math
176
- rule /\$\(/, Keyword, :paren
177
- rule /\${#?/, Keyword, :curly
178
- rule /`/, Str::Backtick, :backticks
179
- rule /\$#?(\w+|.)/, Name::Variable
180
- rule /\$[*@]/, Name::Variable
185
+ rule %r/\\$/, Str::Escape # line continuation
186
+ rule %r/\\./, Str::Escape
187
+ rule %r/\$\(\(/, Keyword, :math
188
+ rule %r/\$\(/, Str::Interpol, :paren_interp
189
+ rule %r/\${#?/, Keyword, :curly
190
+ rule %r/`/, Str::Backtick, :backticks
191
+ rule %r/\$#?(\w+|.)/, Name::Variable
192
+ rule %r/\$[*@]/, Name::Variable
181
193
  end
182
194
 
183
195
  state :root do
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -56,23 +57,23 @@ module Rouge
56
57
  end
57
58
 
58
59
  state :comments_and_whitespace do
59
- rule /\s+/, Text
60
- rule %r(#.*?\n), Comment::Single
60
+ rule %r/\s+/, Text
61
+ rule %r(#.*), Comment::Single
61
62
  rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
62
63
  end
63
64
 
64
65
  state :string do
65
- rule /\\./, Str::Escape
66
- rule /"/, Str::Double, :pop!
66
+ rule %r/\\./, Str::Escape
67
+ rule %r/"/, Str::Double, :pop!
67
68
  # Variables Extension (rfc5229)
68
- rule /\${(?:[0-9][.0-9]*|[a-zA-Z_][.a-zA-Z0-9_]*)}/, Str::Interpol
69
- rule /./, Str::Double
69
+ rule %r/\${(?:[0-9][.0-9]*|[a-zA-Z_][.a-zA-Z0-9_]*)}/, Str::Interpol
70
+ rule %r/./, Str::Double
70
71
  end
71
72
 
72
73
  state :root do
73
74
  mixin :comments_and_whitespace
74
75
 
75
- rule /[\[\](),;{}]/, Punctuation
76
+ rule %r/[\[\](),;{}]/, Punctuation
76
77
 
77
78
  rule id do |m|
78
79
  if self.class.controls.include? m[0]
@@ -88,8 +89,8 @@ module Rouge
88
89
  end
89
90
  end
90
91
 
91
- rule /"/, Str::Double, :string
92
- rule /[0-9]+[KMG]/, Num::Integer
92
+ rule %r/"/, Str::Double, :string
93
+ rule %r/[0-9]+[KMG]/, Num::Integer
93
94
  end
94
95
  end
95
96
  end
@@ -0,0 +1,32 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'c.rb'
7
+
8
+ class Slice < C
9
+ tag 'slice'
10
+ filenames '*.ice'
11
+ mimetypes 'text/slice'
12
+
13
+ title "Slice"
14
+ desc "Specification Language for Ice (doc.zeroc.com)"
15
+
16
+ def self.keywords
17
+ @keywords ||= Set.new %w(
18
+ extends implements enum interface struct class module dictionary
19
+ const optional out throws exception local idempotent sequence
20
+
21
+ Object LocalObject Value
22
+ )
23
+ end
24
+
25
+ def self.keywords_type
26
+ @keywords_type ||= Set.new %w(
27
+ bool string byte long float double int void short
28
+ )
29
+ end
30
+ end
31
+ end
32
+ end