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
@@ -17,7 +18,7 @@ module Rouge
17
18
  id = /[\w-]+/
18
19
 
19
20
  state :root do
20
- rule /[ \t]*\n/, Text
21
+ rule %r/[ \t]*\n/, Text
21
22
  rule(/[ \t]*/) { |m| token Text; indentation(m[0]) }
22
23
  end
23
24
 
@@ -33,14 +34,14 @@ module Rouge
33
34
  pop!; starts_block :multi_comment
34
35
  end
35
36
 
36
- rule /@import\b/, Keyword, :import
37
+ rule %r/@import\b/, Keyword, :import
37
38
 
38
39
  mixin :content_common
39
40
 
40
41
  rule %r(=#{id}), Name::Function, :value
41
42
  rule %r([+]#{id}), Name::Decorator, :value
42
43
 
43
- rule /:/, Name::Attribute, :old_style_attr
44
+ rule %r/:/, Name::Attribute, :old_style_attr
44
45
 
45
46
  rule(/(?=[^\[\n]+?:([^a-z]|$))/) { push :attribute }
46
47
 
@@ -48,17 +49,17 @@ module Rouge
48
49
  end
49
50
 
50
51
  state :single_comment do
51
- rule /.*?$/, Comment::Single, :pop!
52
+ rule %r/.*?$/, Comment::Single, :pop!
52
53
  end
53
54
 
54
55
  state :multi_comment do
55
- rule /.*?\n/, Comment::Multiline, :pop!
56
+ rule %r/.*?\n/, Comment::Multiline, :pop!
56
57
  end
57
58
 
58
59
  state :import do
59
- rule /[ \t]+/, Text
60
- rule /\S+/, Str
61
- rule /\n/, Text, :pop!
60
+ rule %r/[ \t]+/, Text
61
+ rule %r/\S+/, Str
62
+ rule %r/\n/, Text, :pop!
62
63
  end
63
64
 
64
65
  state :old_style_attr 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
@@ -7,30 +8,30 @@ module Rouge
7
8
  id = /[\w-]+/
8
9
 
9
10
  state :content_common do
10
- rule /@for\b/, Keyword, :for
11
- rule /@(debug|warn|if|each|while|else|return|media)/, Keyword, :value
11
+ rule %r/@for\b/, Keyword, :for
12
+ rule %r/@(debug|warn|if|each|while|else|return|media)/, Keyword, :value
12
13
 
13
- rule /(@mixin)(\s+)(#{id})/ do
14
+ rule %r/(@mixin)(\s+)(#{id})/ do
14
15
  groups Keyword, Text, Name::Function
15
16
  push :value
16
17
  end
17
18
 
18
- rule /(@function)(\s+)(#{id})/ do
19
+ rule %r/(@function)(\s+)(#{id})/ do
19
20
  groups Keyword, Text, Name::Function
20
21
  push :value
21
22
  end
22
23
 
23
- rule /@extend\b/, Keyword, :selector
24
+ rule %r/@extend\b/, Keyword, :selector
24
25
 
25
- rule /(@include)(\s+)(#{id})/ do
26
+ rule %r/(@include)(\s+)(#{id})/ do
26
27
  groups Keyword, Text, Name::Decorator
27
28
  push :value
28
29
  end
29
30
 
30
- rule /@#{id}/, Keyword, :selector
31
+ rule %r/@#{id}/, Keyword, :selector
31
32
 
32
33
  # $variable: assignment
33
- rule /([$]#{id})([ \t]*)(:)/ do
34
+ rule %r/([$]#{id})([ \t]*)(:)/ do
34
35
  groups Name::Variable, Text, Punctuation
35
36
  push :value
36
37
  end
@@ -38,26 +39,26 @@ module Rouge
38
39
 
39
40
  state :value do
40
41
  mixin :end_section
41
- rule /[ \t]+/, Text
42
- rule /[$]#{id}/, Name::Variable
43
- rule /url[(]/, Str::Other, :string_url
44
- rule /#{id}(?=\s*[(])/, Name::Function
45
- rule /%#{id}/, Name::Decorator
42
+ rule %r/[ \t]+/, Text
43
+ rule %r/[$]#{id}/, Name::Variable
44
+ rule %r/url[(]/, Str::Other, :string_url
45
+ rule %r/#{id}(?=\s*[(])/, Name::Function
46
+ rule %r/%#{id}/, Name::Decorator
46
47
 
47
48
  # named literals
48
- rule /(true|false)\b/, Name::Builtin::Pseudo
49
- rule /(and|or|not)\b/, Operator::Word
49
+ rule %r/(true|false)\b/, Name::Builtin::Pseudo
50
+ rule %r/(and|or|not)\b/, Operator::Word
50
51
 
51
52
  # colors and numbers
52
- rule /#[a-z0-9]{1,6}/i, Num::Hex
53
- rule /-?\d+(%|[a-z]+)?/, Num
54
- rule /-?\d*\.\d+(%|[a-z]+)?/, Num::Integer
53
+ rule %r/#[a-z0-9]{1,6}/i, Num::Hex
54
+ rule %r/-?\d+(%|[a-z]+)?/, Num
55
+ rule %r/-?\d*\.\d+(%|[a-z]+)?/, Num::Integer
55
56
 
56
57
  mixin :has_strings
57
58
  mixin :has_interp
58
59
 
59
- rule /[~^*!&%<>\|+=@:,.\/?-]+/, Operator
60
- rule /[\[\]()]+/, Punctuation
60
+ rule %r/[~^*!&%<>\|+=@:,.\/?-]+/, Operator
61
+ rule %r/[\[\]()]+/, Punctuation
61
62
  rule %r(/[*]), Comment::Multiline, :inline_comment
62
63
  rule %r(//[^\n]*), Comment::Single
63
64
 
@@ -74,16 +75,16 @@ module Rouge
74
75
  end
75
76
 
76
77
  state :has_interp do
77
- rule /[#][{]/, Str::Interpol, :interpolation
78
+ rule %r/[#][{]/, Str::Interpol, :interpolation
78
79
  end
79
80
 
80
81
  state :has_strings do
81
- rule /"/, Str::Double, :dq
82
- rule /'/, Str::Single, :sq
82
+ rule %r/"/, Str::Double, :dq
83
+ rule %r/'/, Str::Single, :sq
83
84
  end
84
85
 
85
86
  state :interpolation do
86
- rule /}/, Str::Interpol, :pop!
87
+ rule %r/}/, Str::Interpol, :pop!
87
88
  mixin :value
88
89
  end
89
90
 
@@ -92,31 +93,31 @@ module Rouge
92
93
 
93
94
  mixin :has_strings
94
95
  mixin :has_interp
95
- rule /[ \t]+/, Text
96
- rule /:/, Name::Decorator, :pseudo_class
97
- rule /[.]/, Name::Class, :class
98
- rule /#/, Name::Namespace, :id
99
- rule /%/, Name::Variable, :placeholder
96
+ rule %r/[ \t]+/, Text
97
+ rule %r/:/, Name::Decorator, :pseudo_class
98
+ rule %r/[.]/, Name::Class, :class
99
+ rule %r/#/, Name::Namespace, :id
100
+ rule %r/%/, Name::Variable, :placeholder
100
101
  rule id, Name::Tag
101
- rule /&/, Keyword
102
- rule /[~^*!&\[\]()<>\|+=@:;,.\/?-]/, Operator
102
+ rule %r/&/, Keyword
103
+ rule %r/[~^*!&\[\]()<>\|+=@:;,.\/?-]/, Operator
103
104
  end
104
105
 
105
106
  state :dq do
106
- rule /"/, Str::Double, :pop!
107
+ rule %r/"/, Str::Double, :pop!
107
108
  mixin :has_interp
108
- rule /(\\.|#(?![{])|[^\n"#])+/, Str::Double
109
+ rule %r/(\\.|#(?![{])|[^\n"#])+/, Str::Double
109
110
  end
110
111
 
111
112
  state :sq do
112
- rule /'/, Str::Single, :pop!
113
+ rule %r/'/, Str::Single, :pop!
113
114
  mixin :has_interp
114
- rule /(\\.|#(?![{])|[^\n'#])+/, Str::Single
115
+ rule %r/(\\.|#(?![{])|[^\n'#])+/, Str::Single
115
116
  end
116
117
 
117
118
  state :string_url do
118
- rule /[)]/, Str::Other, :pop!
119
- rule /(\\.|#(?![{])|[^\n)#])+/, Str::Other
119
+ rule %r/[)]/, Str::Other, :pop!
120
+ rule %r/(\\.|#(?![{])|[^\n)#])+/, Str::Other
120
121
  mixin :has_interp
121
122
  end
122
123
 
@@ -146,7 +147,7 @@ module Rouge
146
147
  end
147
148
 
148
149
  state :for do
149
- rule /(from|to|through)/, Operator::Word
150
+ rule %r/(from|to|through)/, Operator::Word
150
151
  mixin :value
151
152
  end
152
153
 
@@ -164,14 +165,14 @@ module Rouge
164
165
  state :attribute do
165
166
  mixin :attr_common
166
167
 
167
- rule /([ \t]*)(:)/ do
168
+ rule %r/([ \t]*)(:)/ do
168
169
  groups Text, Punctuation
169
170
  push :value
170
171
  end
171
172
  end
172
173
 
173
174
  state :inline_comment do
174
- rule /(\\#|#(?=[^\n{])|\*(?=[^\n\/])|[^\n#*])+/, Comment::Multiline
175
+ rule %r/(\\#|#(?=[^\n{])|\*(?=[^\n\/])|[^\n#*])+/, Comment::Multiline
175
176
  mixin :has_interp
176
177
  rule %r([*]/), Comment::Multiline, :pop!
177
178
  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
@@ -35,96 +36,122 @@ module Rouge
35
36
  )
36
37
 
37
38
  state :root do
38
- rule /(class|trait|object)(\s+)/ do
39
+ rule %r/(class|trait|object)(\s+)/ do
39
40
  groups Keyword, Text
40
41
  push :class
41
42
  end
42
- rule /'#{idrest}[^']/, Str::Symbol
43
- rule /[^\S\n]+/, Text
43
+ rule %r/'#{idrest}(?!')/, Str::Symbol
44
+ rule %r/[^\S\n]+/, Text
44
45
 
45
- rule %r(//.*?\n), Comment::Single
46
+ rule %r(//.*), Comment::Single
46
47
  rule %r(/\*), Comment::Multiline, :comment
47
48
 
48
- rule /@#{idrest}/, Name::Decorator
49
+ rule %r/@#{idrest}/, Name::Decorator
50
+
51
+ rule %r/(def)(\s+)(#{idrest}|#{op}+|`[^`]+`)(\s*)/ do
52
+ groups Keyword, Text, Name::Function, Text
53
+ end
54
+
55
+ rule %r/(val)(\s+)(#{idrest}|#{op}+|`[^`]+`)(\s*)/ do
56
+ groups Keyword, Text, Name::Variable, Text
57
+ end
58
+
59
+ rule %r/(this)(\n*)(\.)(#{idrest})/ do
60
+ groups Keyword, Text, Operator, Name::Property
61
+ end
62
+
63
+ rule %r/(#{idrest}|_)(\n*)(\.)(#{idrest})/ do
64
+ groups Name::Variable, Text, Operator, Name::Property
65
+ end
66
+
67
+ rule %r/#{upper}#{idrest}\b/, Name::Class
68
+
69
+ rule %r/(#{idrest})(#{whitespace}*)(\()/ do
70
+ groups Name::Function, Text, Operator
71
+ end
72
+
73
+ rule %r/(\.)(#{idrest})/ do
74
+ groups Operator, Name::Property
75
+ end
76
+
49
77
  rule %r(
50
78
  (#{keywords.join("|")})\b|
51
79
  (<[%:-]|=>|>:|[#=@_\u21D2\u2190])(\b|(?=\s)|$)
52
80
  )x, Keyword
53
- rule /:(?!#{op})/, Keyword, :type
54
- rule /#{upper}#{idrest}\b/, Name::Class
55
- rule /(true|false|null)\b/, Keyword::Constant
56
- rule /(import|package)(\s+)/ do
81
+ rule %r/:(?!#{op})/, Keyword, :type
82
+ rule %r/(true|false|null)\b/, Keyword::Constant
83
+ rule %r/(import|package)(\s+)/ do
57
84
  groups Keyword, Text
58
85
  push :import
59
86
  end
60
87
 
61
- rule /(type)(\s+)/ do
88
+ rule %r/(type)(\s+)/ do
62
89
  groups Keyword, Text
63
90
  push :type
64
91
  end
65
92
 
66
- rule /""".*?"""(?!")/m, Str
67
- rule /"(\\\\|\\"|[^"])*"/, Str
68
- rule /'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'/, Str::Char
93
+ rule %r/""".*?"""(?!")/m, Str
94
+ rule %r/"(\\\\|\\"|[^"])*"/, Str
95
+ rule %r/'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'/, Str::Char
69
96
 
70
97
  rule idrest, Name
71
- rule /`[^`]+`/, Name
98
+ rule %r/`[^`]+`/, Name
72
99
 
73
- rule /\[/, Operator, :typeparam
74
- rule /[\(\)\{\};,.#]/, Operator
75
- rule /#{op}+/, Operator
100
+ rule %r/\[/, Operator, :typeparam
101
+ rule %r/[\(\)\{\};,.#]/, Operator
102
+ rule %r/#{op}+/, Operator
76
103
 
77
- rule /([0-9][0-9]*\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?/, Num::Float
78
- rule /([0-9][0-9]*[fFdD])/, Num::Float
79
- rule /0x[0-9a-fA-F]+/, Num::Hex
80
- rule /[0-9]+L?/, Num::Integer
81
- rule /\n/, Text
104
+ rule %r/([0-9][0-9]*\.[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?[fFdD]?/, Num::Float
105
+ rule %r/([0-9][0-9]*[fFdD])/, Num::Float
106
+ rule %r/0x[0-9a-fA-F]+/, Num::Hex
107
+ rule %r/[0-9]+L?/, Num::Integer
108
+ rule %r/\n/, Text
82
109
  end
83
110
 
84
111
  state :class do
85
- rule /(#{idrest}|#{op}+|`[^`]+`)(\s*)(\[)/ do
112
+ rule %r/(#{idrest}|#{op}+|`[^`]+`)(\s*)(\[)/ do
86
113
  groups Name::Class, Text, Operator
87
114
  push :typeparam
88
115
  end
89
116
 
90
- rule /\s+/, Text
91
- rule /{/, Operator, :pop!
92
- rule /\(/, Operator, :pop!
93
- rule %r(//.*?\n), Comment::Single, :pop!
117
+ rule %r/\s+/, Text
118
+ rule %r/{/, Operator, :pop!
119
+ rule %r/\(/, Operator, :pop!
120
+ rule %r(//.*), Comment::Single, :pop!
94
121
  rule %r(#{idrest}|#{op}+|`[^`]+`), Name::Class, :pop!
95
122
  end
96
123
 
97
124
  state :type do
98
- rule /\s+/, Text
99
- rule /<[%:]|>:|[#_\u21D2]|forSome|type/, Keyword
100
- rule /([,\);}]|=>|=)(\s*)/ do
125
+ rule %r/\s+/, Text
126
+ rule %r/<[%:]|>:|[#_\u21D2]|forSome|type/, Keyword
127
+ rule %r/([,\);}]|=>|=)(\s*)/ do
101
128
  groups Operator, Text
102
129
  pop!
103
130
  end
104
- rule /[\(\{]/, Operator, :type
131
+ rule %r/[\(\{]/, Operator, :type
105
132
 
106
133
  typechunk = /(?:#{idrest}|#{op}+\`[^`]+`)/
107
- rule /(#{typechunk}(?:\.#{typechunk})*)(\s*)(\[)/ do
134
+ rule %r/(#{typechunk}(?:\.#{typechunk})*)(\s*)(\[)/ do
108
135
  groups Keyword::Type, Text, Operator
109
136
  pop!
110
137
  push :typeparam
111
138
  end
112
139
 
113
- rule /(#{typechunk}(?:\.#{typechunk})*)(\s*)$/ do
140
+ rule %r/(#{typechunk}(?:\.#{typechunk})*)(\s*)$/ do
114
141
  groups Keyword::Type, Text
115
142
  pop!
116
143
  end
117
144
 
118
- rule %r(//.*?\n), Comment::Single, :pop!
119
- rule /\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type
145
+ rule %r(//.*), Comment::Single, :pop!
146
+ rule %r/\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type
120
147
  end
121
148
 
122
149
  state :typeparam do
123
- rule /[\s,]+/, Text
124
- rule /<[%:]|=>|>:|[#_\u21D2]|forSome|type/, Keyword
125
- rule /([\]\)\}])/, Operator, :pop!
126
- rule /[\(\[\{]/, Operator, :typeparam
127
- rule /\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type
150
+ rule %r/[\s,]+/, Text
151
+ rule %r/<[%:]|=>|>:|[#_\u21D2]|forSome|type/, Keyword
152
+ rule %r/([\]\)\}])/, Operator, :pop!
153
+ rule %r/[\(\[\{]/, Operator, :typeparam
154
+ rule %r/\.|#{idrest}|#{op}+|`[^`]+`/, Keyword::Type
128
155
  end
129
156
 
130
157
  state :comment 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
@@ -60,33 +61,33 @@ module Rouge
60
61
 
61
62
  state :root do
62
63
  # comments
63
- rule /;.*$/, Comment::Single
64
- rule /\s+/m, Text
65
- rule /-?\d+\.\d+/, Num::Float
66
- rule /-?\d+/, Num::Integer
64
+ rule %r/;.*$/, Comment::Single
65
+ rule %r/\s+/m, Text
66
+ rule %r/-?\d+\.\d+/, Num::Float
67
+ rule %r/-?\d+/, Num::Integer
67
68
 
68
69
  # Racket infinitites
69
- rule /[+-]inf[.][f0]/, Num
70
+ rule %r/[+-]inf[.][f0]/, Num
70
71
 
71
- rule /#b[01]+/, Num::Bin
72
- rule /#o[0-7]+/, Num::Oct
73
- rule /#d[0-9]+/, Num::Integer
74
- rule /#x[0-9a-f]+/i, Num::Hex
75
- rule /#[ei][\d.]+/, Num::Other
72
+ rule %r/#b[01]+/, Num::Bin
73
+ rule %r/#o[0-7]+/, Num::Oct
74
+ rule %r/#d[0-9]+/, Num::Integer
75
+ rule %r/#x[0-9a-f]+/i, Num::Hex
76
+ rule %r/#[ei][\d.]+/, Num::Other
76
77
 
77
- rule /"(\\\\|\\"|[^"])*"/, Str
78
- rule /'#{id}/i, Str::Symbol
79
- rule /#\\([()\/'"._!\$%& ?=+-]{1}|[a-z0-9]+)/i,
78
+ rule %r/"(\\\\|\\"|[^"])*"/, Str
79
+ rule %r/'#{id}/i, Str::Symbol
80
+ rule %r/#\\([()\/'"._!\$%& ?=+-]{1}|[a-z0-9]+)/i,
80
81
  Str::Char
81
- rule /#t|#f/, Name::Constant
82
- rule /(?:'|#|`|,@|,|\.)/, Operator
82
+ rule %r/#t|#f/, Name::Constant
83
+ rule %r/(?:'|#|`|,@|,|\.)/, Operator
83
84
 
84
- rule /(['#])(\s*)(\()/m do
85
+ rule %r/(['#])(\s*)(\()/m do
85
86
  groups Str::Symbol, Text, Punctuation
86
87
  end
87
88
 
88
- rule /\(|\[/, Punctuation, :command
89
- rule /\)|\]/, Punctuation
89
+ rule %r/\(|\[/, Punctuation, :command
90
+ rule %r/\)|\]/, Punctuation
90
91
 
91
92
  rule id, Name::Variable
92
93
  end