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
@@ -0,0 +1,34 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class CMHG < RegexLexer
7
+ title "CMHG"
8
+ desc "RISC OS C module header generator source file"
9
+ tag 'cmhg'
10
+ filenames '*.cmhg'
11
+
12
+ def self.preproc_keyword
13
+ @preproc_keyword ||= %w(
14
+ define elif else endif error if ifdef ifndef include line pragma undef warning
15
+ )
16
+ end
17
+
18
+ state :root do
19
+ rule %r/;[^\n]*/, Comment
20
+ rule %r/^([ \t]*)(#[ \t]*(?:(?:#{CMHG.preproc_keyword.join('|')})(?:[ \t].*)?)?)(?=\n)/ do
21
+ groups Text, Comment::Preproc
22
+ end
23
+ rule %r/[-a-z]+:/, Keyword::Declaration
24
+ rule %r/[a-z_]\w+/i, Name::Entity
25
+ rule %r/"[^"]*"/, Literal::String
26
+ rule %r/(?:&|0x)\h+/, Literal::Number::Hex
27
+ rule %r/\d+/, Literal::Number
28
+ rule %r/[,\/()]/, Punctuation
29
+ rule %r/[ \t]+/, Text
30
+ rule %r/\n+/, Text
31
+ end
32
+ end
33
+ end
34
+ 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
@@ -17,9 +18,17 @@ module Rouge
17
18
 
18
19
  def self.keywords
19
20
  @keywords ||= Set.new %w(
20
- for in of while break return continue switch when then if else
21
- throw try catch finally new delete typeof instanceof super
22
- extends this class by
21
+ for by while until loop break continue return
22
+ switch when then if else do yield throw try catch finally await
23
+ new delete typeof instanceof super extends this class
24
+ import export debugger
25
+ )
26
+ end
27
+
28
+ def self.reserved
29
+ @reserved ||= Set.new %w(
30
+ case function var void with const let enum
31
+ native implements interface package private protected public static
23
32
  )
24
33
  end
25
34
 
@@ -40,33 +49,54 @@ module Rouge
40
49
 
41
50
  id = /[$a-zA-Z_][a-zA-Z0-9_]*/
42
51
 
43
- state :comments_and_whitespace do
44
- rule /\s+/m, Text
45
- rule /###\s*\n.*?###/m, Comment::Multiline
46
- rule /#.*$/, Comment::Single
52
+ state :comments do
53
+ rule %r/###[^#].*?###/m, Comment::Multiline
54
+ rule %r/#.*$/, Comment::Single
47
55
  end
48
56
 
49
- state :multiline_regex do
50
- # this order is important, so that #{ isn't interpreted
51
- # as a comment
52
- mixin :has_interpolation
53
- mixin :comments_and_whitespace
57
+ state :whitespace do
58
+ rule %r/\s+/m, Text
59
+ end
54
60
 
55
- rule %r(///([gim]+\b|\B)), Str::Regex, :pop!
56
- rule %r(/), Str::Regex
57
- rule %r([^/#]+), Str::Regex
61
+ state :regex_comment do
62
+ rule %r/^#(?!\{).*$/, Comment::Single
63
+ rule %r/(\s+)(#(?!\{).*)$/ do
64
+ groups Text, Comment::Single
65
+ end
58
66
  end
59
67
 
60
- state :slash_starts_regex do
61
- mixin :comments_and_whitespace
68
+ state :multiline_regex_begin do
62
69
  rule %r(///) do
63
70
  token Str::Regex
64
71
  goto :multiline_regex
65
72
  end
73
+ end
74
+
75
+ state :multiline_regex_end do
76
+ rule %r(///([gimy]+\b|\B)), Str::Regex, :pop!
77
+ end
78
+
79
+ state :multiline_regex do
80
+ mixin :multiline_regex_end
81
+ mixin :regex_comment
82
+ mixin :has_interpolation
83
+ mixin :comments
84
+ mixin :whitespace
85
+ mixin :code_escape
86
+
87
+ rule %r/\\\D/, Str::Escape
88
+ rule %r/\\\d+/, Name::Variable
89
+ rule %r/./m, Str::Regex
90
+ end
91
+
92
+ state :slash_starts_regex do
93
+ mixin :comments
94
+ mixin :whitespace
95
+ mixin :multiline_regex_begin
66
96
 
67
97
  rule %r(
68
98
  /(\\.|[^\[/\\\n]|\[(\\.|[^\]\\\n])*\])+/ # a regex
69
- ([gim]+\b|\B)
99
+ ([gimy]+\b|\B)
70
100
  )x, Str::Regex, :pop!
71
101
 
72
102
  rule(//) { pop! }
@@ -74,27 +104,29 @@ module Rouge
74
104
 
75
105
  state :root do
76
106
  rule(%r(^(?=\s|/|<!--))) { push :slash_starts_regex }
77
- mixin :comments_and_whitespace
107
+ mixin :comments
108
+ mixin :whitespace
109
+
78
110
  rule %r(
79
- [+][+]|--|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|[?]|:|=|
80
- [|][|]|\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*`%&|^/])=?
111
+ [+][+]|--|~|&&|\band\b|\bor\b|\bis\b|\bisnt\b|\bnot\b|\bin\b|\bof\b|
112
+ [?]|:|=|[|][|]|\\(?=\n)|(<<|>>>?|==?|!=?|[-<>+*`%&|^/])=?
81
113
  )x, Operator, :slash_starts_regex
82
114
 
83
- rule /[-=]>/, Name::Function
115
+ rule %r/[-=]>/, Name::Function
84
116
 
85
- rule /(@)([ \t]*)(#{id})/ do
117
+ rule %r/(@)([ \t]*)(#{id})/ do
86
118
  groups Name::Variable::Instance, Text, Name::Attribute
87
119
  push :slash_starts_regex
88
120
  end
89
121
 
90
- rule /([.])([ \t]*)(#{id})/ do
122
+ rule %r/([.])([ \t]*)(#{id})/ do
91
123
  groups Punctuation, Text, Name::Attribute
92
124
  push :slash_starts_regex
93
125
  end
94
126
 
95
- rule /#{id}(?=\s*:)/, Name::Attribute, :slash_starts_regex
127
+ rule %r/#{id}(?=\s*:)/, Name::Attribute, :slash_starts_regex
96
128
 
97
- rule /#{id}/ do |m|
129
+ rule %r/#{id}/ do |m|
98
130
  if self.class.keywords.include? m[0]
99
131
  token Keyword
100
132
  elsif self.class.constants.include? m[0]
@@ -108,65 +140,74 @@ module Rouge
108
140
  push :slash_starts_regex
109
141
  end
110
142
 
111
- rule /[{(\[;,]/, Punctuation, :slash_starts_regex
112
- rule /[})\].]/, Punctuation
143
+ rule %r/[{(\[;,]/, Punctuation, :slash_starts_regex
144
+ rule %r/[})\].]/, Punctuation
113
145
 
114
- rule /\d+[.]\d+([eE]\d+)?[fd]?/, Num::Float
115
- rule /0x[0-9a-fA-F]+/, Num::Hex
116
- rule /\d+/, Num::Integer
117
- rule /"""/, Str, :tdqs
118
- rule /'''/, Str, :tsqs
119
- rule /"/, Str, :dqs
120
- rule /'/, Str, :sqs
146
+ rule %r/\d+[.]\d+([eE]\d+)?[fd]?/, Num::Float
147
+ rule %r/0x[0-9a-fA-F]+/, Num::Hex
148
+ rule %r/\d+/, Num::Integer
149
+ rule %r/"""/, Str, :tdqs
150
+ rule %r/'''/, Str, :tsqs
151
+ rule %r/"/, Str, :dqs
152
+ rule %r/'/, Str, :sqs
153
+ end
154
+
155
+ state :code_escape do
156
+ rule %r(\\(
157
+ c[A-Z]|
158
+ x[0-9a-fA-F]{2}|
159
+ u[0-9a-fA-F]{4}|
160
+ u\{[0-9a-fA-F]{4}\}
161
+ ))x, Str::Escape
121
162
  end
122
163
 
123
164
  state :strings do
124
165
  # all coffeescript strings are multi-line
125
- rule /[^#\\'"]+/m, Str
126
-
127
- rule /\\./, Str::Escape
128
- rule /#/, Str
166
+ rule %r/[^#\\'"]+/m, Str
167
+ mixin :code_escape
168
+ rule %r/\\./, Str::Escape
169
+ rule %r/#/, Str
129
170
  end
130
171
 
131
172
  state :double_strings do
132
- rule /'/, Str
173
+ rule %r/'/, Str
133
174
  mixin :has_interpolation
134
175
  mixin :strings
135
176
  end
136
177
 
137
178
  state :single_strings do
138
- rule /"/, Str
179
+ rule %r/"/, Str
139
180
  mixin :strings
140
181
  end
141
182
 
142
183
  state :interpolation do
143
- rule /}/, Str::Interpol, :pop!
184
+ rule %r/}/, Str::Interpol, :pop!
144
185
  mixin :root
145
186
  end
146
187
 
147
188
  state :has_interpolation do
148
- rule /[#][{]/, Str::Interpol, :interpolation
189
+ rule %r/[#][{]/, Str::Interpol, :interpolation
149
190
  end
150
191
 
151
192
  state :dqs do
152
- rule /"/, Str, :pop!
193
+ rule %r/"/, Str, :pop!
153
194
  mixin :double_strings
154
195
  end
155
196
 
156
197
  state :tdqs do
157
- rule /"""/, Str, :pop!
158
- rule /"/, Str
198
+ rule %r/"""/, Str, :pop!
199
+ rule %r/"/, Str
159
200
  mixin :double_strings
160
201
  end
161
202
 
162
203
  state :sqs do
163
- rule /'/, Str, :pop!
204
+ rule %r/'/, Str, :pop!
164
205
  mixin :single_strings
165
206
  end
166
207
 
167
208
  state :tsqs do
168
- rule /'''/, Str, :pop!
169
- rule /'/, Str
209
+ rule %r/'''/, Str, :pop!
210
+ rule %r/'/, Str
170
211
  mixin :single_strings
171
212
  end
172
213
  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 "Common Lisp"
7
8
  desc "The Common Lisp variant of Lisp (common-lisp.net)"
8
9
  tag 'common_lisp'
9
- aliases 'cl', 'common-lisp', 'elisp', 'emacs-lisp'
10
+ aliases 'cl', 'common-lisp', 'elisp', 'emacs-lisp', 'lisp'
10
11
 
11
12
  filenames '*.cl', '*.lisp', '*.asd', '*.el' # used for Elisp too
12
13
  mimetypes 'text/x-common-lisp'
@@ -214,19 +215,19 @@ module Rouge
214
215
  symbol = /(\|[^\|]+\||#{nonmacro}#{constituent}*)/
215
216
 
216
217
  state :root do
217
- rule /\s+/m, Text
218
- rule /;.*$/, Comment::Single
219
- rule /#\|/, Comment::Multiline, :multiline_comment
218
+ rule %r/\s+/m, Text
219
+ rule %r/;.*$/, Comment::Single
220
+ rule %r/#\|/, Comment::Multiline, :multiline_comment
220
221
 
221
222
  # encoding comment
222
- rule /#\d*Y.*$/, Comment::Special
223
- rule /"(\\.|[^"\\])*"/, Str
223
+ rule %r/#\d*Y.*$/, Comment::Special
224
+ rule %r/"(\\.|[^"\\])*"/, Str
224
225
 
225
- rule /[:']#{symbol}/, Str::Symbol
226
- rule /['`]/, Operator
226
+ rule %r/[:']#{symbol}/, Str::Symbol
227
+ rule %r/['`]/, Operator
227
228
 
228
229
  # numbers
229
- rule /[-+]?\d+\.?#{terminated}/, Num::Integer
230
+ rule %r/[-+]?\d+\.?#{terminated}/, Num::Integer
230
231
  rule %r([-+]?\d+/\d+#{terminated}), Num::Integer
231
232
  rule %r(
232
233
  [-+]?
@@ -236,65 +237,65 @@ module Rouge
236
237
  )x, Num::Float
237
238
 
238
239
  # sharpsign strings and characters
239
- rule /#\\.#{terminated}/, Str::Char
240
- rule /#\\#{symbol}/, Str::Char
240
+ rule %r/#\\.#{terminated}/, Str::Char
241
+ rule %r/#\\#{symbol}/, Str::Char
241
242
 
242
- rule /#\(/, Operator, :root
243
+ rule %r/#\(/, Operator, :root
243
244
 
244
245
  # bitstring
245
- rule /#\d*\*[01]*/, Other
246
+ rule %r/#\d*\*[01]*/, Other
246
247
 
247
248
  # uninterned symbol
248
- rule /#:#{symbol}/, Str::Symbol
249
+ rule %r/#:#{symbol}/, Str::Symbol
249
250
 
250
251
  # read-time and load-time evaluation
251
- rule /#[.,]/, Operator
252
+ rule %r/#[.,]/, Operator
252
253
 
253
254
  # function shorthand
254
- rule /#'/, Name::Function
255
+ rule %r/#'/, Name::Function
255
256
 
256
257
  # binary rational
257
- rule /#b[+-]?[01]+(\/[01]+)?/i, Num
258
+ rule %r/#b[+-]?[01]+(\/[01]+)?/i, Num
258
259
 
259
260
  # octal rational
260
- rule /#o[+-]?[0-7]+(\/[0-7]+)?/i, Num::Oct
261
+ rule %r/#o[+-]?[0-7]+(\/[0-7]+)?/i, Num::Oct
261
262
 
262
263
  # hex rational
263
- rule /#x[+-]?[0-9a-f]+(\/[0-9a-f]+)?/i, Num
264
+ rule %r/#x[+-]?[0-9a-f]+(\/[0-9a-f]+)?/i, Num
264
265
 
265
266
  # complex
266
- rule /(#c)(\()/i do
267
+ rule %r/(#c)(\()/i do
267
268
  groups Num, Punctuation
268
269
  push :root
269
270
  end
270
271
 
271
272
  # arrays and structures
272
- rule /(#(?:\d+a|s))(\()/i do
273
+ rule %r/(#(?:\d+a|s))(\()/i do
273
274
  groups Str::Other, Punctuation
274
275
  push :root
275
276
  end
276
277
 
277
278
  # path
278
- rule /#p?"(\\.|[^"])*"/i, Str::Symbol
279
+ rule %r/#p?"(\\.|[^"])*"/i, Str::Symbol
279
280
 
280
281
  # reference
281
- rule /#\d+[=#]/, Operator
282
+ rule %r/#\d+[=#]/, Operator
282
283
 
283
284
  # read-time comment
284
- rule /#+nil#{terminated}\s*\(/, Comment, :commented_form
285
+ rule %r/#+nil#{terminated}\s*\(/, Comment, :commented_form
285
286
 
286
287
  # read-time conditional
287
- rule /#[+-]/, Operator
288
+ rule %r/#[+-]/, Operator
288
289
 
289
290
  # special operators that should have been parsed already
290
- rule /(,@|,|\.)/, Operator
291
+ rule %r/(,@|,|\.)/, Operator
291
292
 
292
293
  # special constants
293
- rule /(t|nil)#{terminated}/, Name::Constant
294
+ rule %r/(t|nil)#{terminated}/, Name::Constant
294
295
 
295
296
  # functions and variables
296
297
  # note that these get filtered through in stream_tokens
297
- rule /\*#{symbol}\*/, Name::Variable::Global
298
+ rule %r/\*#{symbol}\*/, Name::Variable::Global
298
299
  rule symbol do |m|
299
300
  sym = m[0]
300
301
 
@@ -317,9 +318,9 @@ module Rouge
317
318
  end
318
319
  end
319
320
 
320
- rule /\(/, Punctuation, :root
321
- rule /\)/, Punctuation do
322
- if stack.empty?
321
+ rule %r/\(/, Punctuation, :root
322
+ rule %r/\)/, Punctuation do
323
+ if stack.size == 1
323
324
  token Error
324
325
  else
325
326
  token Punctuation
@@ -329,16 +330,16 @@ module Rouge
329
330
  end
330
331
 
331
332
  state :multiline_comment do
332
- rule /#\|/, Comment::Multiline, :multiline_comment
333
- rule /\|#/, Comment::Multiline, :pop!
334
- rule /[^\|#]+/, Comment::Multiline
335
- rule /[\|#]/, Comment::Multiline
333
+ rule %r/#\|/, Comment::Multiline, :multiline_comment
334
+ rule %r/\|#/, Comment::Multiline, :pop!
335
+ rule %r/[^\|#]+/, Comment::Multiline
336
+ rule %r/[\|#]/, Comment::Multiline
336
337
  end
337
338
 
338
339
  state :commented_form do
339
- rule /\(/, Comment, :commented_form
340
- rule /\)/, Comment, :pop!
341
- rule /[^()]+/, Comment
340
+ rule %r/\(/, Comment, :commented_form
341
+ rule %r/\)/, Comment, :pop!
342
+ rule %r/[^()]+/, Comment
342
343
  end
343
344
  end
344
345
  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
@@ -12,12 +13,12 @@ module Rouge
12
13
 
13
14
  # short and sweet
14
15
  state :root do
15
- rule /#.*?\n/, Comment
16
- rule /".*?"/, Str::Double
17
- rule /'.*?'/, Str::Single
18
- rule /[a-z]\w*/i, Name
19
- rule /\d+/, Num
20
- rule /[^\d\w#"']+/, Text
16
+ rule %r/#.*?\n/, Comment
17
+ rule %r/".*?"/, Str::Double
18
+ rule %r/'.*?'/, Str::Single
19
+ rule %r/[a-z]\w*/i, Name
20
+ rule %r/\d+/, Num
21
+ rule %r/[^\w#"']+/, Text
21
22
  end
22
23
  end
23
24
  end