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
@@ -6,23 +7,65 @@ module Rouge
6
7
  title 'JSON'
7
8
  desc "JavaScript Object Notation (json.org)"
8
9
  tag 'json'
9
- filenames '*.json'
10
+ filenames '*.json', 'Pipfile.lock'
10
11
  mimetypes 'application/json', 'application/vnd.api+json',
11
- 'application/hal+json'
12
+ 'application/hal+json', 'application/problem+json',
13
+ 'application/schema+json'
14
+
15
+ state :whitespace do
16
+ rule %r/\s+/, Text::Whitespace
17
+ end
12
18
 
13
19
  state :root do
14
- rule /\s+/m, Text::Whitespace
15
- rule /"/, Str::Double, :string
16
- rule /(?:true|false|null)\b/, Keyword::Constant
17
- rule /[{},:\[\]]/, Punctuation
18
- rule /-?(?:0|[1-9]\d*)\.\d+(?:e[+-]?\d+)?/i, Num::Float
19
- rule /-?(?:0|[1-9]\d*)(?:e[+-]?\d+)?/i, Num::Integer
20
+ mixin :whitespace
21
+ rule %r/{/, Punctuation, :object
22
+ rule %r/\[/, Punctuation, :array
23
+
24
+ mixin :name
25
+ mixin :value
26
+
27
+ # These characters may be invalid but syntax correctness is a non-goal
28
+ rule %r/[\]}]/, Punctuation
29
+ end
30
+
31
+ state :object do
32
+ mixin :whitespace
33
+ mixin :name
34
+ mixin :value
35
+ rule %r/}/, Punctuation, :pop!
36
+ rule %r/,/, Punctuation
37
+ end
38
+
39
+ state :name do
40
+ rule %r/("(?:\\.|[^"\\\n])*?")(\s*)(:)/ do
41
+ groups Name::Label, Text::Whitespace, Punctuation
42
+ end
43
+ end
44
+
45
+ state :value do
46
+ mixin :whitespace
47
+ mixin :constants
48
+ rule %r/"/, Str::Double, :string
49
+ rule %r/\[/, Punctuation, :array
50
+ rule %r/{/, Punctuation, :object
20
51
  end
21
52
 
22
53
  state :string do
23
- rule /[^\\"]+/, Str::Double
24
- rule /\\./, Str::Escape
25
- rule /"/, Str::Double, :pop!
54
+ rule %r/[^\\"]+/, Str::Double
55
+ rule %r/\\./, Str::Escape
56
+ rule %r/"/, Str::Double, :pop!
57
+ end
58
+
59
+ state :array do
60
+ mixin :value
61
+ rule %r/\]/, Punctuation, :pop!
62
+ rule %r/,/, Punctuation
63
+ end
64
+
65
+ state :constants do
66
+ rule %r/(?:true|false|null)/, Keyword::Constant
67
+ rule %r/-?(?:0|[1-9]\d*)\.\d+(?:e[+-]?\d+)?/i, Num::Float
68
+ rule %r/-?(?:0|[1-9]\d*)(?:e[+-]?\d+)?/i, Num::Integer
26
69
  end
27
70
  end
28
71
  end
@@ -1,22 +1,25 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
5
6
  load_lexer 'json.rb'
6
7
 
7
8
  class JSONDOC < JSON
8
- desc "JavaScript Object Notation with extenstions for documentation"
9
+ desc "JavaScript Object Notation with extensions for documentation"
9
10
  tag 'json-doc'
11
+ aliases 'jsonc'
10
12
 
11
- prepend :root do
12
- rule /([$\w]+)(\s*)(:)/ do
13
+ prepend :name do
14
+ rule %r/([$\w]+)(\s*)(:)/ do
13
15
  groups Name::Attribute, Text, Punctuation
14
16
  end
17
+ end
15
18
 
19
+ prepend :value do
16
20
  rule %r(/[*].*?[*]/), Comment
17
-
18
21
  rule %r(//.*?$), Comment::Single
19
- rule /(\.\.\.)/, Comment::Single
22
+ rule %r/(\.\.\.)/, Comment::Single
20
23
  end
21
24
  end
22
25
  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
@@ -6,7 +7,7 @@ module Rouge
6
7
  title 'Jsonnet'
7
8
  desc 'An elegant, formally-specified config language for JSON'
8
9
  tag 'jsonnet'
9
- filenames '*.jsonnet'
10
+ filenames '*.jsonnet', '*.libsonnet'
10
11
  mimetypes 'text/x-jsonnet'
11
12
 
12
13
  def self.keywords
@@ -92,21 +93,21 @@ module Rouge
92
93
  identifier = /[a-zA-Z_][a-zA-Z0-9_]*/
93
94
 
94
95
  state :root do
95
- rule /\s+/, Text
96
+ rule %r/\s+/, Text
96
97
  rule %r(//.*?$), Comment::Single
97
98
  rule %r(#.*?$), Comment::Single
98
99
  rule %r(/\*.*?\*/)m, Comment::Multiline
99
100
 
100
- rule /-?(?:0|[1-9]\d*)\.\d+(?:e[+-]\d+)?/i, Num::Float
101
- rule /-?(?:0|[1-9]\d*)(?:e[+-]\d+)?/i, Num::Integer
101
+ rule %r/-?(?:0|[1-9]\d*)\.\d+(?:e[+-]\d+)?/i, Num::Float
102
+ rule %r/-?(?:0|[1-9]\d*)(?:e[+-]\d+)?/i, Num::Integer
102
103
 
103
- rule /[{}:\.,;+\[\]=%\(\)]/, Punctuation
104
+ rule %r/[{}:\.,;+\[\]=%\(\)]/, Punctuation
104
105
 
105
- rule /"/, Str, :string_double
106
- rule /'/, Str, :string_single
107
- rule /\|\|\|/, Str, :string_block
106
+ rule %r/"/, Str, :string_double
107
+ rule %r/'/, Str, :string_single
108
+ rule %r/\|\|\|/, Str, :string_block
108
109
 
109
- rule /\$/, Keyword
110
+ rule %r/\$/, Keyword
110
111
 
111
112
  rule identifier do |m|
112
113
  if self.class.keywords.include? m[0]
@@ -124,27 +125,27 @@ module Rouge
124
125
  end
125
126
 
126
127
  state :string do
127
- rule /\\([\\\/bfnrt]|(u[0-9a-fA-F]{4}))/, Str::Escape
128
+ rule %r/\\([\\\/bfnrt]|(u[0-9a-fA-F]{4}))/, Str::Escape
128
129
  end
129
130
 
130
131
  state :string_double do
131
132
  mixin :string
132
- rule /\\"/, Str::Escape
133
- rule /"/, Str, :pop!
134
- rule /[^\\"]+/, Str
133
+ rule %r/\\"/, Str::Escape
134
+ rule %r/"/, Str, :pop!
135
+ rule %r/[^\\"]+/, Str
135
136
  end
136
137
 
137
138
  state :string_single do
138
139
  mixin :string
139
- rule /\\'/, Str::Escape
140
- rule /'/, Str, :pop!
141
- rule /[^\\']+/, Str
140
+ rule %r/\\'/, Str::Escape
141
+ rule %r/'/, Str, :pop!
142
+ rule %r/[^\\']+/, Str
142
143
  end
143
144
 
144
145
  state :string_block do
145
146
  mixin :string
146
- rule /\|\|\|/, Str, :pop!
147
- rule /.*/, Str
147
+ rule %r/\|\|\|/, Str, :pop!
148
+ rule %r/.*/, Str
148
149
  end
149
150
  end
150
151
  end
@@ -0,0 +1,120 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class JSP < TemplateLexer
7
+ desc 'JSP'
8
+ tag 'jsp'
9
+ filenames '*.jsp'
10
+ mimetypes 'text/x-jsp', 'application/x-jsp'
11
+
12
+ def initialize(*)
13
+ super
14
+ @java = Java.new
15
+ end
16
+
17
+ directives = %w(page include taglib)
18
+ actions = %w(scriptlet declaration expression)
19
+
20
+ state :root do
21
+
22
+ rule %r/<%--/, Comment, :jsp_comment
23
+
24
+ rule %r/<%@\s*(#{directives.join('|')})\s*/, Name::Tag, :jsp_directive
25
+
26
+ rule %r/<jsp:directive\.(#{directives.join('|')})/, Name::Tag, :jsp_directive2
27
+
28
+ rule %r/<jsp:(#{actions.join('|')})>/, Name::Tag, :jsp_expression
29
+
30
+ # start of tag, e.g. <c:if>
31
+ rule %r/<[a-zA-Z]*:[a-zA-Z]*\s*/, Name::Tag, :jsp_tag
32
+
33
+ # end of tag, e.g. </c:if>
34
+ rule %r(</[a-zA-Z]*:[a-zA-Z]*>), Name::Tag
35
+
36
+ rule %r/<%[!=]?/, Name::Tag, :jsp_expression2
37
+
38
+ # fallback to HTML
39
+ rule(/(.+?)(?=(<%|<\/?[a-zA-Z]*:))/m) { delegate parent }
40
+ rule(/.+/m) { delegate parent }
41
+ end
42
+
43
+ state :jsp_comment do
44
+ rule %r/(--%>)/, Comment, :pop!
45
+ rule %r/./m, Comment
46
+ end
47
+
48
+ state :jsp_directive do
49
+ rule %r/(%>)/, Name::Tag, :pop!
50
+ mixin :attributes
51
+ rule(/(.+?)(?=%>)/m) { delegate parent }
52
+ end
53
+
54
+ state :jsp_directive2 do
55
+ rule %r!(/>)!, Name::Tag, :pop!
56
+ mixin :attributes
57
+ rule(/(.+?)(?=\/>)/m) { delegate parent }
58
+ end
59
+
60
+ state :jsp_expression do
61
+ rule %r/<\/jsp:(#{actions.join('|')})>/, Name::Tag, :pop!
62
+ mixin :attributes
63
+ rule(/[^<\/]+/) { delegate @java }
64
+ end
65
+
66
+ state :jsp_expression2 do
67
+ rule %r/%>/, Name::Tag, :pop!
68
+ rule(/[^%>]+/) { delegate @java }
69
+ end
70
+
71
+ state :jsp_tag do
72
+ rule %r/\/?>/, Name::Tag, :pop!
73
+ mixin :attributes
74
+ rule(/(.+?)(?=\/?>)/m) { delegate parent }
75
+ end
76
+
77
+ state :attributes do
78
+ rule %r/\s*[a-zA-Z0-9_:-]+\s*=\s*/m, Name::Attribute, :attr
79
+ end
80
+
81
+ state :attr do
82
+ rule %r/"/ do
83
+ token Str
84
+ goto :double_quotes
85
+ end
86
+
87
+ rule %r/'/ do
88
+ token Str
89
+ goto :single_quotes
90
+ end
91
+
92
+ rule %r/[^\s>]+/, Str, :pop!
93
+ end
94
+
95
+ state :double_quotes do
96
+ rule %r/"/, Str, :pop!
97
+ rule %r/\$\{/, Str::Interpol, :jsp_interp
98
+ rule %r/[^"]+/, Str
99
+ end
100
+
101
+ state :single_quotes do
102
+ rule %r/'/, Str, :pop!
103
+ rule %r/\$\{/, Str::Interpol, :jsp_interp
104
+ rule %r/[^']+/, Str
105
+ end
106
+
107
+ state :jsp_interp do
108
+ rule %r/\}/, Str::Interpol, :pop!
109
+ rule %r/'/, Literal, :jsp_interp_literal_start
110
+ rule(/[^'\}]+/) { delegate @java }
111
+ end
112
+
113
+ state :jsp_interp_literal_start do
114
+ rule %r/'/, Literal, :pop!
115
+ rule %r/[^']*/, Literal
116
+ end
117
+
118
+ end
119
+ end
120
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rouge
2
4
  module Lexers
3
5
  load_lexer 'javascript.rb'
@@ -27,7 +29,7 @@ module Rouge
27
29
  start { @html = HTML.new(options) }
28
30
 
29
31
  state :jsx_tags do
30
- rule /</, Punctuation, :jsx_element
32
+ rule %r/</, Punctuation, :jsx_element
31
33
  end
32
34
 
33
35
  state :jsx_internal do
@@ -36,12 +38,12 @@ module Rouge
36
38
  goto :jsx_end_tag
37
39
  end
38
40
 
39
- rule /{/ do
41
+ rule %r/{/ do
40
42
  token Str::Interpol
41
43
  start_embed!
42
44
  end
43
45
 
44
- rule /[^<>{]+/ do
46
+ rule %r/[^<>{]+/ do
45
47
  delegate @html
46
48
  end
47
49
 
@@ -54,29 +56,29 @@ module Rouge
54
56
 
55
57
  state :jsx_tag do
56
58
  mixin :comments_and_whitespace
57
- rule /#{id}/ do |m|
59
+ rule %r/#{id}/ do |m|
58
60
  token tag_token(m[0])
59
61
  end
60
62
 
61
- rule /[.]/, Punctuation
63
+ rule %r/[.]/, Punctuation
62
64
  end
63
65
 
64
66
  state :jsx_end_tag do
65
67
  mixin :jsx_tag
66
- rule />/, Punctuation, :pop!
68
+ rule %r/>/, Punctuation, :pop!
67
69
  end
68
70
 
69
71
  state :jsx_element do
70
- rule /#{id}=/, Name::Attribute, :jsx_attribute
72
+ rule %r/#{id}=/, Name::Attribute, :jsx_attribute
71
73
  mixin :jsx_tag
72
- rule />/ do token Punctuation; goto :jsx_internal end
74
+ rule %r/>/ do token Punctuation; goto :jsx_internal end
73
75
  rule %r(/>), Punctuation, :pop!
74
76
  end
75
77
 
76
78
  state :jsx_attribute do
77
- rule /"(\\[\\"]|[^"])*"/, Str::Double, :pop!
78
- rule /'(\\[\\']|[^'])*'/, Str::Single, :pop!
79
- rule /{/ do
79
+ rule %r/"(\\[\\"]|[^"])*"/, Str::Double, :pop!
80
+ rule %r/'(\\[\\']|[^'])*'/, Str::Single, :pop!
81
+ rule %r/{/ do
80
82
  token Str::Interpol
81
83
  pop!
82
84
  start_embed!
@@ -84,15 +86,15 @@ module Rouge
84
86
  end
85
87
 
86
88
  state :jsx_embed_root do
87
- rule /[.][.][.]/, Punctuation
88
- rule /}/, Str::Interpol, :pop!
89
+ rule %r/[.][.][.]/, Punctuation
90
+ rule %r/}/, Str::Interpol, :pop!
89
91
  mixin :jsx_embed
90
92
  end
91
93
 
92
94
  state :jsx_embed do
93
- rule /{/ do delegate @embed; push :jsx_embed end
94
- rule /}/ do delegate @embed; pop! end
95
- rule /[^{}]+/ do
95
+ rule %r/{/ do delegate @embed; push :jsx_embed end
96
+ rule %r/}/ do delegate @embed; pop! end
97
+ rule %r/[^{}]+/ do
96
98
  delegate @embed
97
99
  end
98
100
  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
@@ -20,6 +21,8 @@ module Rouge
20
21
  | NaN | NaN16 | NaN32 | NaN64
21
22
  | stdout | stderr | stdin | devnull
22
23
  | pi | π | ℯ | im
24
+ | ARGS | C_NULL | ENV | ENDIAN_BOM
25
+ | VERSION | undef | (LOAD|DEPOT)_PATH
23
26
  )\b/x
24
27
 
25
28
  KEYWORDS = /\b(?:
@@ -29,21 +32,137 @@ module Rouge
29
32
  | const | local | global | using | struct
30
33
  | mutable struct | abstract type | finally
31
34
  | begin | do | quote | macro | for outer
35
+ | where
32
36
  )\b/x
33
37
 
38
+ # NOTE: The list of types was generated automatically using the following script:
39
+ # using Pkg, InteractiveUtils
40
+ #
41
+ # allnames = [names(Core); names(Base, imported=true)]
42
+ #
43
+ # for stdlib in readdir(Pkg.Types.stdlib_dir())
44
+ # mod = Symbol(basename(stdlib))
45
+ # @eval begin
46
+ # using $mod
47
+ # append!(allnames, names($mod))
48
+ # end
49
+ # end
50
+ #
51
+ # sort!(unique!(allnames))
52
+ #
53
+ # i = 1
54
+ # for sym in allnames
55
+ # global i # needed at the top level, e.g. in the REPL
56
+ # isdefined(Main, sym) || continue
57
+ # getfield(which(Main, sym), sym) isa Type || continue
58
+ # sym === :(=>) && continue # Actually an alias for Pair
59
+ # print("| ", sym)
60
+ # i % 3 == 0 ? println() : print(" ") # print 3 to a line
61
+ # i += 1
62
+ # end
34
63
  TYPES = /\b(?:
35
- Int | UInt | Int8
36
- | UInt8 | Int16 | UInt16
37
- | Int32 | UInt32 | Int64
38
- | UInt64 | Int128 | UInt128
39
- | Float16 | Float32 | Float64
40
- | Bool | BigInt | BigFloat
41
- | Complex | ComplexF16 | ComplexF32
42
- | ComplexF64 | Missing | Nothing
43
- | Char | String | SubString
44
- | Regex | RegexMatch | Any
45
- | Type | DataType | UnionAll
46
- | (Abstract)?(Array|Vector|Matrix|VecOrMat)
64
+ ARPACKException | AbstractArray | AbstractChannel
65
+ | AbstractChar | AbstractDict | AbstractDisplay
66
+ | AbstractFloat | AbstractIrrational | AbstractLogger
67
+ | AbstractMatrix | AbstractREPL | AbstractRNG
68
+ | AbstractRange | AbstractSerializer | AbstractSet
69
+ | AbstractSparseArray | AbstractSparseMatrix | AbstractSparseVector
70
+ | AbstractString | AbstractUnitRange | AbstractVecOrMat
71
+ | AbstractVector | AbstractWorkerPool | Adjoint
72
+ | Any | ArgumentError | Array
73
+ | AssertionError | Base64DecodePipe | Base64EncodePipe
74
+ | BasicREPL | Bidiagonal | BigFloat
75
+ | BigInt | BitArray | BitMatrix
76
+ | BitSet | BitVector | Bool
77
+ | BoundsError | BunchKaufman | CachingPool
78
+ | CapturedException | CartesianIndex | CartesianIndices
79
+ | Cchar | Cdouble | Cfloat
80
+ | Channel | Char | Cholesky
81
+ | CholeskyPivoted | Cint | Cintmax_t
82
+ | Clong | Clonglong | ClusterManager
83
+ | Cmd | Colon | Complex
84
+ | ComplexF16 | ComplexF32 | ComplexF64
85
+ | CompositeException | Condition | ConsoleLogger
86
+ | Cptrdiff_t | Cshort | Csize_t
87
+ | Cssize_t | Cstring | Cuchar
88
+ | Cuint | Cuintmax_t | Culong
89
+ | Culonglong | Cushort | Cvoid
90
+ | Cwchar_t | Cwstring | DataType
91
+ | Date | DateFormat | DatePeriod
92
+ | DateTime | Day | DenseArray
93
+ | DenseMatrix | DenseVecOrMat | DenseVector
94
+ | Diagonal | Dict | DimensionMismatch
95
+ | Dims | DivideError | DomainError
96
+ | EOFError | Eigen | Enum
97
+ | ErrorException | Exception | ExponentialBackOff
98
+ | Expr | FDWatcher | Factorization
99
+ | FileMonitor | Float16 | Float32
100
+ | Float64 | FolderMonitor | Function
101
+ | GeneralizedEigen | GeneralizedSVD | GeneralizedSchur
102
+ | GenericArray | GenericDict | GenericSet
103
+ | GenericString | GitConfig | GitRepo
104
+ | GlobalRef | HMAC_CTX | HTML
105
+ | Hermitian | Hessenberg | Hour
106
+ | IO | IOBuffer | IOContext
107
+ | IOStream | IPAddr | IPv4
108
+ | IPv6 | IdDict | IndexCartesian
109
+ | IndexLinear | IndexStyle | InexactError
110
+ | InitError | Int | Int128
111
+ | Int16 | Int32 | Int64
112
+ | Int8 | Integer | InterruptException
113
+ | InvalidStateException | Irrational | KeyError
114
+ | LAPACKException | LDLt | LQ
115
+ | LU | LinRange | LineEditREPL
116
+ | LineNumberNode | LinearIndices | LoadError
117
+ | LogLevel | LowerTriangular | MIME
118
+ | Matrix | MersenneTwister | Method
119
+ | MethodError | Microsecond | Millisecond
120
+ | Minute | Missing | MissingException
121
+ | Module | Month | NTuple
122
+ | NamedTuple | Nanosecond | Nothing
123
+ | NullLogger | Number | OrdinalRange
124
+ | OutOfMemoryError | OverflowError | PackageMode
125
+ | PackageSpec | Pair | PartialQuickSort
126
+ | Period | PermutedDimsArray | Pipe
127
+ | PollingFileWatcher | PosDefException | ProcessExitedException
128
+ | Ptr | QR | QRPivoted
129
+ | QuoteNode | RandomDevice | RankDeficientException
130
+ | Rational | RawFD | ReadOnlyMemoryError
131
+ | Real | ReentrantLock | Ref
132
+ | Regex | RegexMatch | RemoteChannel
133
+ | RemoteException | RoundingMode | SHA1_CTX
134
+ | SHA224_CTX | SHA256_CTX | SHA2_224_CTX
135
+ | SHA2_256_CTX | SHA2_384_CTX | SHA2_512_CTX
136
+ | SHA384_CTX | SHA3_224_CTX | SHA3_256_CTX
137
+ | SHA3_384_CTX | SHA3_512_CTX | SHA512_CTX
138
+ | SVD | Schur | Second
139
+ | SegmentationFault | Serializer | Set
140
+ | SharedArray | SharedMatrix | SharedVector
141
+ | Signed | SimpleLogger | SingularException
142
+ | Some | SparseMatrixCSC | SparseVector
143
+ | StackOverflowError | StepRange | StepRangeLen
144
+ | StreamREPL | StridedArray | StridedMatrix
145
+ | StridedVecOrMat | StridedVector | String
146
+ | StringIndexError | SubArray | SubString
147
+ | SubstitutionString | SymTridiagonal | Symbol
148
+ | Symmetric | SystemError | TCPSocket
149
+ | Task | TestSetException | Text
150
+ | TextDisplay | Time | TimePeriod
151
+ | TimeType | TimeZone | Timer
152
+ | Transpose | Tridiagonal | Tuple
153
+ | Type | TypeError | TypeVar
154
+ | UDPSocket | UInt | UInt128
155
+ | UInt16 | UInt32 | UInt64
156
+ | UInt8 | UTC | UUID
157
+ | UndefInitializer | UndefKeywordError | UndefRefError
158
+ | UndefVarError | UniformScaling | Union
159
+ | UnionAll | UnitLowerTriangular | UnitRange
160
+ | UnitUpperTriangular | Unsigned | UpgradeLevel
161
+ | UpperTriangular | Val | Vararg
162
+ | VecElement | VecOrMat | Vector
163
+ | VersionNumber | WeakKeyDict | WeakRef
164
+ | Week | WorkerConfig | WorkerPool
165
+ | Year
47
166
  )\b/x
48
167
 
49
168
  OPERATORS = / \+ | = | - | \* | \/
@@ -57,109 +176,114 @@ module Rouge
57
176
  | :: | <: | -> | \? | \.\*
58
177
  | \.\^ | \.\\ | \.\/ | \\ | <
59
178
  | > | ÷ | >: | : | ===
60
- | !==
179
+ | !== | =>
61
180
  /x
62
181
 
63
- PUNCTUATION = / [ \[ \] { } \( \) , ; @ ] /x
182
+ PUNCTUATION = /[\[\]{}\(\),;]/
64
183
 
65
184
 
66
185
  state :root do
67
- rule /\n/, Text
68
- rule /[^\S\n]+/, Text
69
- rule /#=/, Comment::Multiline, :blockcomment
70
- rule /#.*$/, Comment
186
+ rule %r/\n/, Text
187
+ rule %r/[^\S\n]+/, Text
188
+ rule %r/#=/, Comment::Multiline, :blockcomment
189
+ rule %r/#.*$/, Comment
71
190
  rule OPERATORS, Operator
72
- rule /\\\n/, Text
73
- rule /\\/, Text
191
+ rule %r/\\\n/, Text
192
+ rule %r/\\/, Text
74
193
 
75
194
 
76
- # functions
77
- rule /(function)((?:\s|\\\s)+)/ do
195
+ # functions and macros
196
+ rule %r/(function|macro)((?:\s|\\\s)+)/ do
78
197
  groups Keyword, Name::Function
79
198
  push :funcname
80
199
  end
81
200
 
82
201
  # types
83
- rule /(type|typealias|abstract)((?:\s|\\\s)+)/ do
202
+ rule %r/((?:mutable )?struct|(?:abstract|primitive) type)((?:\s|\\\s)+)/ do
84
203
  groups Keyword, Name::Class
85
204
  push :typename
86
205
  end
87
206
  rule TYPES, Keyword::Type
88
207
 
89
208
  # keywords
90
- rule /(local|global|const)\b/, Keyword::Declaration
209
+ rule %r/(local|global|const)\b/, Keyword::Declaration
91
210
  rule KEYWORDS, Keyword
92
211
 
212
+ # TODO: end is a builtin when inside of an indexing expression
93
213
  rule BUILTINS, Name::Builtin
94
214
 
215
+ # TODO: symbols
216
+
95
217
  # backticks
96
- rule /`.*?`/, Literal::String::Backtick
218
+ rule %r/`.*?`/, Literal::String::Backtick
97
219
 
98
220
  # chars
99
- rule /'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,3}|\\u[a-fA-F0-9]{1,4}|\\U[a-fA-F0-9]{1,6}|[^\\\'\n])'/, Literal::String::Char
221
+ rule %r/'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,3}|\\u[a-fA-F0-9]{1,4}|\\U[a-fA-F0-9]{1,6}|[^\\\'\n])'/, Literal::String::Char
100
222
 
101
223
  # try to match trailing transpose
102
- rule /(?<=[.\w)\]])\'+/, Operator
224
+ rule %r/(?<=[.\w)\]])\'+/, Operator
103
225
 
104
226
  # strings
105
- rule /(?:[IL])"/, Literal::String, :string
106
- rule /[E]?"/, Literal::String, :string
227
+ # TODO: triple quoted string literals
228
+ # TODO: Detect string interpolation
229
+ rule %r/(?:[IL])"/, Literal::String, :string
230
+ rule %r/[E]?"/, Literal::String, :string
107
231
 
108
232
  # names
109
- rule /@[\w.]+/, Name::Decorator
110
- rule /(?:[a-zA-Z_\u00A1-\uffff]|[\u1000-\u10ff])(?:[a-zA-Z_0-9\u00A1-\uffff]|[\u1000-\u10ff])*!*/, Name
233
+ rule %r/@[\w.]+/, Name::Decorator
234
+ rule %r/(?:[a-zA-Z_\u00A1-\uffff]|[\u1000-\u10ff])(?:[a-zA-Z_0-9\u00A1-\uffff]|[\u1000-\u10ff])*!*/, Name
111
235
 
112
236
  rule PUNCTUATION, Other
113
237
 
114
238
  # numbers
115
- rule /(\d+(_\d+)+\.\d*|\d*\.\d+(_\d+)+)([eEf][+-]?[0-9]+)?/, Literal::Number::Float
116
- rule /(\d+\.\d*|\d*\.\d+)([eEf][+-]?[0-9]+)?/, Literal::Number::Float
117
- rule /\d+(_\d+)+[eEf][+-]?[0-9]+/, Literal::Number::Float
118
- rule /\d+[eEf][+-]?[0-9]+/, Literal::Number::Float
119
- rule /0b[01]+(_[01]+)+/, Literal::Number::Bin
120
- rule /0b[01]+/, Literal::Number::Bin
121
- rule /0o[0-7]+(_[0-7]+)+/, Literal::Number::Oct
122
- rule /0o[0-7]+/, Literal::Number::Oct
123
- rule /0x[a-fA-F0-9]+(_[a-fA-F0-9]+)+/, Literal::Number::Hex
124
- rule /0x[a-fA-F0-9]+/, Literal::Number::Hex
125
- rule /\d+(_\d+)+/, Literal::Number::Integer
126
- rule /\d+/, Literal::Number::Integer
239
+ rule %r/(\d+(_\d+)+\.\d*|\d*\.\d+(_\d+)+)([eEf][+-]?[0-9]+)?/, Literal::Number::Float
240
+ rule %r/(\d+\.\d*|\d*\.\d+)([eEf][+-]?[0-9]+)?/, Literal::Number::Float
241
+ rule %r/\d+(_\d+)+[eEf][+-]?[0-9]+/, Literal::Number::Float
242
+ rule %r/\d+[eEf][+-]?[0-9]+/, Literal::Number::Float
243
+ rule %r/0b[01]+(_[01]+)+/, Literal::Number::Bin
244
+ rule %r/0b[01]+/, Literal::Number::Bin
245
+ rule %r/0o[0-7]+(_[0-7]+)+/, Literal::Number::Oct
246
+ rule %r/0o[0-7]+/, Literal::Number::Oct
247
+ rule %r/0x[a-fA-F0-9]+(_[a-fA-F0-9]+)+/, Literal::Number::Hex
248
+ rule %r/0x[a-fA-F0-9]+/, Literal::Number::Hex
249
+ rule %r/\d+(_\d+)+/, Literal::Number::Integer
250
+ rule %r/\d+/, Literal::Number::Integer
127
251
  end
128
252
 
129
253
 
130
254
  state :funcname do
131
- rule /[a-zA-Z_]\w*/, Name::Function, :pop!
132
- rule /\([^\s\w{]{1,2}\)/, Operator, :pop!
133
- rule /[^\s\w{]{1,2}/, Operator, :pop!
255
+ rule %r/[a-zA-Z_]\w*/, Name::Function, :pop!
256
+ rule %r/\([^\s\w{]{1,2}\)/, Operator, :pop!
257
+ rule %r/[^\s\w{]{1,2}/, Operator, :pop!
134
258
  end
135
259
 
136
260
  state :typename do
137
- rule /[a-zA-Z_]\w*/, Name::Class, :pop!
261
+ rule %r/[a-zA-Z_]\w*/, Name::Class, :pop!
138
262
  end
139
263
 
140
264
  state :stringescape do
141
- rule /\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})/,
265
+ rule %r/\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})/,
142
266
  Literal::String::Escape
143
267
  end
144
268
 
145
269
  state :blockcomment do
146
- rule /[^=#]/, Comment::Multiline
147
- rule /#=/, Comment::Multiline, :blockcomment
148
- rule /\=#/, Comment::Multiline, :pop!
149
- rule /[=#]/, Comment::Multiline
270
+ rule %r/[^=#]/, Comment::Multiline
271
+ rule %r/#=/, Comment::Multiline, :blockcomment
272
+ rule %r/\=#/, Comment::Multiline, :pop!
273
+ rule %r/[=#]/, Comment::Multiline
150
274
  end
151
275
 
152
276
  state :string do
153
277
  mixin :stringescape
154
278
 
155
- rule /"/, Literal::String, :pop!
156
- rule /\\\\|\\"|\\\n/, Literal::String::Escape # included here for raw strings
157
- rule /\$(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/, Literal::String::Interpol
158
- rule /[^\\"$]+/, Literal::String
279
+ rule %r/"/, Literal::String, :pop!
280
+ rule %r/\\\\|\\"|\\\n/, Literal::String::Escape # included here for raw strings
281
+ rule %r/\$(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/, Literal::String::Interpol
282
+ rule %r/[^\\"$]+/, Literal::String
159
283
  # quotes, dollar signs, and backslashes must be parsed one at a time
160
- rule /["\\]/, Literal::String
284
+ rule %r/["\\]/, Literal::String
161
285
  # unhandled string formatting sign
162
- rule /\$/, Literal::String
286
+ rule %r/\$/, Literal::String
163
287
  end
164
288
  end
165
289
  end