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,116 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class SuperCollider < RegexLexer
7
+ tag 'supercollider'
8
+ filenames '*.sc', '*.scd'
9
+
10
+ title "SuperCollider"
11
+ desc 'A cross-platform interpreted programming language for sound synthesis, algorithmic composition, and realtime performance'
12
+
13
+ def self.keywords
14
+ @keywords ||= Set.new %w(
15
+ var arg classvar const super this
16
+ )
17
+ end
18
+
19
+ # these aren't technically keywords, but we treat
20
+ # them as such because it makes things clearer 99%
21
+ # of the time
22
+ def self.reserved
23
+ @reserved ||= Set.new %w(
24
+ case do for forBy loop if while new newCopyArgs
25
+ )
26
+ end
27
+
28
+ def self.constants
29
+ @constants ||= Set.new %w(
30
+ true false nil inf thisThread
31
+ thisMethod thisFunction thisProcess
32
+ thisFunctionDef currentEnvironment
33
+ topEnvironment
34
+ )
35
+ end
36
+
37
+ state :whitespace do
38
+ rule %r/\s+/m, Text
39
+ end
40
+
41
+ state :comments do
42
+ rule %r(//.*?$), Comment::Single
43
+ rule %r(/[*]) do
44
+ token Comment::Multiline
45
+ push :nested_comment
46
+ end
47
+ end
48
+
49
+ state :nested_comment do
50
+ rule %r(/[*]), Comment::Multiline, :nested_comment
51
+ rule %r([*]/), Comment::Multiline, :pop!
52
+ rule %r([^*/]+)m, Comment::Multiline
53
+ rule %r/./, Comment::Multiline
54
+ end
55
+
56
+ state :root do
57
+ mixin :whitespace
58
+ mixin :comments
59
+
60
+ rule %r/[\-+]?0[xX]\h+/, Num::Hex
61
+
62
+ # radix float
63
+ rule %r/[\-+]?\d+r[0-9a-zA-Z]*(\.[0-9A-Z]*)?/, Num::Float
64
+
65
+ # normal float
66
+ rule %r/[\-+]?((\d+(\.\d+)?([eE][\-+]?\d+)?(pi)?)|pi)/, Num::Float
67
+
68
+ rule %r/[\-+]?\d+/, Num::Integer
69
+
70
+ rule %r/\$(\\.|.)/, Str::Char
71
+
72
+ rule %r/"([^\\"]|\\.)*"/, Str
73
+
74
+ # symbols (single-quote notation)
75
+ rule %r/'([^\\']|\\.)*'/, Str::Other
76
+
77
+ # symbols (backslash notation)
78
+ rule %r/\\\w+/, Str::Other
79
+
80
+ # symbol arg
81
+ rule %r/[A-Za-z_]\w*:/, Name::Label
82
+
83
+ rule %r/[A-Z]\w*/, Name::Class
84
+
85
+ # primitive
86
+ rule %r/_\w+/, Name::Function
87
+
88
+ # main identifiers section
89
+ rule %r/[a-z]\w*/ do |m|
90
+ if self.class.keywords.include? m[0]
91
+ token Keyword
92
+ elsif self.class.constants.include? m[0]
93
+ token Keyword::Constant
94
+ elsif self.class.reserved.include? m[0]
95
+ token Keyword::Reserved
96
+ else
97
+ token Name
98
+ end
99
+ end
100
+
101
+ # environment variables
102
+ rule %r/~\w+/, Name::Variable::Global
103
+
104
+ rule %r/[\{\}()\[\];,\.]/, Punctuation
105
+
106
+ # operators. treat # (array unpack) as an operator
107
+ rule %r/[\+\-\*\/&\|%<>=]+/, Operator
108
+ rule %r/[\^:#]/, Operator
109
+
110
+ # treat curry argument as a special operator
111
+ rule %r/\b_\b/, Name::Builtin
112
+ end
113
+ end
114
+ end
115
+ end
116
+
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -19,10 +20,12 @@ module Rouge
19
20
  as dynamicType is new super self Self Type __COLUMN__ __FILE__ __FUNCTION__ __LINE__
20
21
 
21
22
  associativity didSet get infix inout mutating none nonmutating operator override postfix precedence prefix set unowned weak willSet throws rethrows precedencegroup
23
+
24
+ #available #colorLiteral #column #else #elseif #endif #error #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation #warning
22
25
  )
23
26
 
24
27
  declarations = Set.new %w(
25
- class deinit enum extension final func import init internal lazy let optional private protocol public required static struct subscript typealias var dynamic indirect associatedtype open fileprivate
28
+ class deinit enum convenience extension final func import init internal lazy let optional private protocol public required static struct subscript typealias var dynamic indirect associatedtype open fileprivate some
26
29
  )
27
30
 
28
31
  constants = Set.new %w(
@@ -33,7 +36,7 @@ module Rouge
33
36
 
34
37
  # beginning of line
35
38
  state :bol do
36
- rule /#.*/, Comment::Preproc
39
+ rule %r/#.*/, Comment::Preproc
37
40
 
38
41
  mixin :inline_whitespace
39
42
 
@@ -41,12 +44,12 @@ module Rouge
41
44
  end
42
45
 
43
46
  state :inline_whitespace do
44
- rule /\s+/m, Text
47
+ rule %r/\s+/m, Text
45
48
  mixin :has_comments
46
49
  end
47
50
 
48
51
  state :whitespace do
49
- rule /\n+/m, Text, :bol
52
+ rule %r/\n+/m, Text, :bol
50
53
  rule %r(\/\/.*?$), Comment::Single, :bol
51
54
  mixin :inline_whitespace
52
55
  end
@@ -59,27 +62,28 @@ module Rouge
59
62
  mixin :has_comments
60
63
  rule %r([*]/), Comment::Multiline, :pop!
61
64
  rule %r([^*/]+)m, Comment::Multiline
62
- rule /./, Comment::Multiline
65
+ rule %r/./, Comment::Multiline
63
66
  end
64
67
 
65
68
  state :root do
66
69
  mixin :whitespace
67
- rule /\$(([1-9]\d*)?\d)/, Name::Variable
70
+
71
+ rule %r/\$(([1-9]\d*)?\d)/, Name::Variable
68
72
 
69
73
  rule %r{[()\[\]{}:;,?\\]}, Punctuation
70
74
  rule %r([-/=+*%<>!&|^.~]+), Operator
71
- rule /@?"/, Str, :dq
72
- rule /'(\\.|.)'/, Str::Char
73
- rule /(\d+\*|\d*\.\d+)(e[+-]?[0-9]+)?/i, Num::Float
74
- rule /\d+e[+-]?[0-9]+/i, Num::Float
75
- rule /0_?[0-7]+(?:_[0-7]+)*/, Num::Oct
76
- rule /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/, Num::Hex
77
- rule /0b[01]+(?:_[01]+)*/, Num::Bin
75
+ rule %r/@?"/, Str, :dq
76
+ rule %r/'(\\.|.)'/, Str::Char
77
+ rule %r/(\d+(?:_\d+)*\*|(?:\d+(?:_\d+)*)*\.\d+(?:_\d)*)(e[+-]?\d+(?:_\d)*)?/i, Num::Float
78
+ rule %r/\d+e[+-]?[0-9]+/i, Num::Float
79
+ rule %r/0o?[0-7]+(?:_[0-7]+)*/, Num::Oct
80
+ rule %r/0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*((\.[0-9A-F]+(?:_[0-9A-F]+)*)?p[+-]?\d+)?/, Num::Hex
81
+ rule %r/0b[01]+(?:_[01]+)*/, Num::Bin
78
82
  rule %r{[\d]+(?:_\d+)*}, Num::Integer
79
83
 
80
- rule /@#{id}(\([^)]+\))?/, Keyword::Declaration
84
+ rule %r/@#{id}/, Keyword::Declaration
81
85
 
82
- rule /(private|internal)(\([ ]*)(\w+)([ ]*\))/ do |m|
86
+ rule %r/(private|internal)(\([ ]*)(\w+)([ ]*\))/ do |m|
83
87
  if m[3] == 'set'
84
88
  token Keyword::Declaration
85
89
  else
@@ -87,43 +91,43 @@ module Rouge
87
91
  end
88
92
  end
89
93
 
90
- rule /(unowned\([ ]*)(\w+)([ ]*\))/ do |m|
94
+ rule %r/(unowned\([ ]*)(\w+)([ ]*\))/ do |m|
91
95
  if m[2] == 'safe' || m[2] == 'unsafe'
92
96
  token Keyword::Declaration
93
97
  else
94
98
  groups Keyword::Declaration, Error, Keyword::Declaration
95
99
  end
96
100
  end
97
-
98
- rule /#available\([^)]+\)/, Keyword::Declaration
99
-
100
- rule /(#(?:selector|keyPath)\()([^)]+?(?:[(].*?[)])?)(\))/ do
101
+
102
+ rule %r/#available\([^)]+\)/, Keyword::Declaration
103
+
104
+ rule %r/(#(?:selector|keyPath)\()([^)]+?(?:[(].*?[)])?)(\))/ do
101
105
  groups Keyword::Declaration, Name::Function, Keyword::Declaration
102
106
  end
103
-
104
- rule /#(line|file|column|function|dsohandle)/, Keyword::Declaration
105
107
 
106
- rule /(let|var)\b(\s*)(#{id})/ do
108
+ rule %r/#(line|file|column|function|dsohandle)/, Keyword::Declaration
109
+
110
+ rule %r/(let|var)\b(\s*)(#{id})/ do
107
111
  groups Keyword, Text, Name::Variable
108
112
  end
109
113
 
110
- rule /(let|var)\b(\s*)([(])/ do
114
+ rule %r/(let|var)\b(\s*)([(])/ do
111
115
  groups Keyword, Text, Punctuation
112
116
  push :tuple
113
117
  end
114
118
 
115
- rule /(?!\b(if|while|for|private|internal|unowned|switch|case)\b)\b#{id}(?=(\?|!)?\s*[(])/ do |m|
119
+ rule %r/(?!\b(if|while|for|private|internal|unowned|switch|case)\b)\b#{id}(?=(\?|!)?\s*[(])/ do |m|
116
120
  if m[0] =~ /^[[:upper:]]/
117
121
  token Keyword::Type
118
122
  else
119
123
  token Name::Function
120
124
  end
121
125
  end
122
-
123
- rule /as[?!]?(?=\s)/, Keyword
124
- rule /try[!]?(?=\s)/, Keyword
125
126
 
126
- rule /(#?(?!default)(?![[:upper:]])#{id})(\s*)(:)/ do
127
+ rule %r/as[?!]?(?=\s)/, Keyword
128
+ rule %r/try[!]?(?=\s)/, Keyword
129
+
130
+ rule %r/(#?(?!default)(?![[:upper:]])#{id})(\s*)(:)/ do
127
131
  groups Name::Variable, Text, Punctuation
128
132
  end
129
133
 
@@ -141,39 +145,40 @@ module Rouge
141
145
  end
142
146
  end
143
147
 
144
- rule /(`)(#{id})(`)/ do
148
+ rule %r/(`)(#{id})(`)/ do
145
149
  groups Punctuation, Name::Variable, Punctuation
146
150
  end
147
151
  end
148
152
 
149
153
  state :tuple do
150
- rule /(#{id})/, Name::Variable
151
- rule /(`)(#{id})(`)/ do
154
+ rule %r/(#{id})/, Name::Variable
155
+ rule %r/(`)(#{id})(`)/ do
152
156
  groups Punctuation, Name::Variable, Punctuation
153
157
  end
154
- rule /,/, Punctuation
155
- rule /[(]/, Punctuation, :push
156
- rule /[)]/, Punctuation, :pop!
158
+ rule %r/,/, Punctuation
159
+ rule %r/[(]/, Punctuation, :push
160
+ rule %r/[)]/, Punctuation, :pop!
157
161
  mixin :inline_whitespace
158
162
  end
159
163
 
160
164
  state :dq do
161
- rule /\\[\\0tnr'"]/, Str::Escape
162
- rule /\\[(]/, Str::Escape, :interp
163
- rule /\\u\{\h{1,8}\}/, Str::Escape
164
- rule /[^\\"]+/, Str
165
- rule /"/, Str, :pop!
165
+ rule %r/\\[\\0tnr'"]/, Str::Escape
166
+ rule %r/\\[(]/, Str::Escape, :interp
167
+ rule %r/\\u\{\h{1,8}\}/, Str::Escape
168
+ rule %r/[^\\"]+/, Str
169
+ rule %r/"""/, Str, :pop!
170
+ rule %r/"/, Str, :pop!
166
171
  end
167
172
 
168
173
  state :interp do
169
- rule /[(]/, Punctuation, :interp_inner
170
- rule /[)]/, Str::Escape, :pop!
174
+ rule %r/[(]/, Punctuation, :interp_inner
175
+ rule %r/[)]/, Str::Escape, :pop!
171
176
  mixin :root
172
177
  end
173
178
 
174
179
  state :interp_inner do
175
- rule /[(]/, Punctuation, :push
176
- rule /[)]/, Punctuation, :pop!
180
+ rule %r/[(]/, Punctuation, :push
181
+ rule %r/[)]/, Punctuation, :pop!
177
182
  mixin :root
178
183
  end
179
184
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rouge
2
4
  module Lexers
3
5
  class Tap < RegexLexer
@@ -11,72 +13,72 @@ module Rouge
11
13
 
12
14
  state :root do
13
15
  # A TAP version may be specified.
14
- rule /^TAP version \d+\n/, Name::Namespace
16
+ rule %r/^TAP version \d+\n/, Name::Namespace
15
17
 
16
18
  # Specify a plan with a plan line.
17
- rule /^1\.\.\d+/, Keyword::Declaration, :plan
19
+ rule %r/^1\.\.\d+/, Keyword::Declaration, :plan
18
20
 
19
21
  # A test failure
20
- rule /^(not ok)([^\S\n]*)(\d*)/ do
22
+ rule %r/^(not ok)([^\S\n]*)(\d*)/ do
21
23
  groups Generic::Error, Text, Literal::Number::Integer
22
24
  push :test
23
25
  end
24
26
 
25
27
  # A test success
26
- rule /^(ok)([^\S\n]*)(\d*)/ do
28
+ rule %r/^(ok)([^\S\n]*)(\d*)/ do
27
29
  groups Keyword::Reserved, Text, Literal::Number::Integer
28
30
  push :test
29
31
  end
30
32
 
31
33
  # Diagnostics start with a hash.
32
- rule /^#.*\n/, Comment
34
+ rule %r/^#.*\n/, Comment
33
35
 
34
36
  # TAP's version of an abort statement.
35
- rule /^Bail out!.*\n/, Generic::Error
37
+ rule %r/^Bail out!.*\n/, Generic::Error
36
38
 
37
39
  # # TAP ignores any unrecognized lines.
38
- rule /^.*\n/, Text
40
+ rule %r/^.*\n/, Text
39
41
  end
40
42
 
41
43
  state :plan do
42
44
  # Consume whitespace (but not newline).
43
- rule /[^\S\n]+/, Text
45
+ rule %r/[^\S\n]+/, Text
44
46
 
45
47
  # A plan may have a directive with it.
46
- rule /#/, Comment, :directive
48
+ rule %r/#/, Comment, :directive
47
49
 
48
50
  # Or it could just end.
49
- rule /\n/, Comment, :pop!
51
+ rule %r/\n/, Comment, :pop!
50
52
 
51
53
  # Anything else is wrong.
52
- rule /.*\n/, Generic::Error, :pop!
54
+ rule %r/.*\n/, Generic::Error, :pop!
53
55
  end
54
56
 
55
57
  state :test do
56
58
  # Consume whitespace (but not newline).
57
- rule /[^\S\n]+/, Text
59
+ rule %r/[^\S\n]+/, Text
58
60
 
59
61
  # A test may have a directive with it.
60
- rule /#/, Comment, :directive
62
+ rule %r/#/, Comment, :directive
61
63
 
62
- rule /\S+/, Text
64
+ rule %r/\S+/, Text
63
65
 
64
- rule /\n/, Text, :pop!
66
+ rule %r/\n/, Text, :pop!
65
67
  end
66
68
 
67
69
  state :directive do
68
70
  # Consume whitespace (but not newline).
69
- rule /[^\S\n]+/, Comment
71
+ rule %r/[^\S\n]+/, Comment
70
72
 
71
73
  # Extract todo items.
72
- rule /(?i)\bTODO\b/, Comment::Preproc
74
+ rule %r/(?i)\bTODO\b/, Comment::Preproc
73
75
 
74
76
  # Extract skip items.
75
- rule /(?i)\bSKIP\S*/, Comment::Preproc
77
+ rule %r/(?i)\bSKIP\S*/, Comment::Preproc
76
78
 
77
- rule /\S+/, Comment
79
+ rule %r/\S+/, Comment
78
80
 
79
- rule /\n/ do
81
+ rule %r/\n/ do
80
82
  token Comment
81
83
  pop! 2
82
84
  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
@@ -38,33 +39,33 @@ module Rouge
38
39
  CLOSE = %w| \) \] \} |
39
40
  ALL = OPEN + CLOSE
40
41
  END_LINE = CLOSE + %w(; \n)
41
- END_WORD = END_LINE + %w(\s)
42
+ END_WORD = END_LINE + %w(\r \t \v)
42
43
 
43
44
  CHARS = lambda { |list| Regexp.new %/[#{list.join}]/ }
44
45
  NOT_CHARS = lambda { |list| Regexp.new %/[^#{list.join}]/ }
45
46
 
46
47
  state :word do
47
- rule /\{\*\}/, Keyword
48
+ rule %r/\{\*\}/, Keyword
48
49
 
49
50
  mixin :brace_abort
50
51
  mixin :interp
51
- rule /\{/, Punctuation, :brace
52
- rule /\(/, Punctuation, :paren
53
- rule /"/, Str::Double, :string
54
- rule /#{NOT_CHARS[END_WORD]}+?(?=#{CHARS[OPEN+['\\\\']]})/, Text
52
+ rule %r/\{/, Punctuation, :brace
53
+ rule %r/\(/, Punctuation, :paren
54
+ rule %r/"/, Str::Double, :string
55
+ rule %r/#{NOT_CHARS[END_WORD]}+?(?=#{CHARS[OPEN+['\\\\']]})/, Text
55
56
  end
56
57
 
57
58
  def self.gen_command_state(name='')
58
59
  state(:"command#{name}") do
59
60
  mixin :word
60
61
 
61
- rule /##{NOT_CHARS[END_LINE]}+/, Comment::Single
62
+ rule %r/##{NOT_CHARS[END_LINE]}+/, Comment::Single
62
63
 
63
- rule /(?=#{CHARS[END_WORD]})/ do
64
+ rule %r/(?=#{CHARS[END_WORD]})/ do
64
65
  push :"params#{name}"
65
66
  end
66
67
 
67
- rule /#{NOT_CHARS[END_WORD]}+/ do |m|
68
+ rule %r/#{NOT_CHARS[END_WORD]}+/ do |m|
68
69
  if KEYWORDS.include? m[0]
69
70
  token Keyword
70
71
  elsif BUILTINS.include? m[0]
@@ -115,7 +116,7 @@ module Rouge
115
116
  # such things as [ abc" ] are a runtime error, but will still
116
117
  # parse. Currently something like this will muck up the lex.
117
118
  state :brace_abort do
118
- rule /}/ do
119
+ rule %r/}/ do
119
120
  if in_state? :brace
120
121
  pop! until state? :brace
121
122
  pop!
@@ -127,12 +128,12 @@ module Rouge
127
128
  end
128
129
 
129
130
  state :params do
130
- rule /;/, Punctuation, :pop!
131
- rule /\n/, Text, :pop!
132
- rule /else|elseif|then/, Keyword
131
+ rule %r/;/, Punctuation, :pop!
132
+ rule %r/\n/, Text, :pop!
133
+ rule %r/else|elseif|then/, Keyword
133
134
  mixin :word
134
135
  mixin :whitespace
135
- rule /#{NOT_CHARS[END_WORD]}+/, Text
136
+ rule %r/#{NOT_CHARS[END_WORD]}+/, Text
136
137
  end
137
138
 
138
139
  gen_delimiter_states :brace, /\}/, :strict => false
@@ -146,37 +147,37 @@ module Rouge
146
147
 
147
148
  state :whitespace do
148
149
  # not a multiline regex because we want to capture \n sometimes
149
- rule /\s+/, Text
150
+ rule %r/\s+/, Text
150
151
  end
151
152
 
152
153
  state :interp do
153
- rule /\[/, Punctuation, :bracket
154
- rule /\$[a-z0-9.:-]+/, Name::Variable
155
- rule /\$\{.*?\}/m, Name::Variable
156
- rule /\$/, Text
154
+ rule %r/\[/, Punctuation, :bracket
155
+ rule %r/\$[a-z0-9.:-]+/, Name::Variable
156
+ rule %r/\$\{.*?\}/m, Name::Variable
157
+ rule %r/\$/, Text
157
158
 
158
159
  # escape sequences
159
- rule /\\[0-7]{3}/, Str::Escape
160
- rule /\\x[0-9a-f]{2}/i, Str::Escape
161
- rule /\\u[0-9a-f]{4}/i, Str::Escape
162
- rule /\\./m, Str::Escape
160
+ rule %r/\\[0-7]{3}/, Str::Escape
161
+ rule %r/\\x[0-9a-f]{2}/i, Str::Escape
162
+ rule %r/\\u[0-9a-f]{4}/i, Str::Escape
163
+ rule %r/\\./m, Str::Escape
163
164
  end
164
165
 
165
166
  state :string do
166
- rule /"/, Str::Double, :pop!
167
+ rule %r/"/, Str::Double, :pop!
167
168
  mixin :interp
168
- rule /[^\\\[\$"{}]+/m, Str::Double
169
+ rule %r/[^\\\[\$"{}]+/m, Str::Double
169
170
 
170
171
  # strings have to keep count of their internal braces, to support
171
172
  # for example { "{ }" }.
172
- rule /{/ do
173
+ rule %r/{/ do
173
174
  @brace_count ||= 0
174
175
  @brace_count += 1
175
176
 
176
177
  token Str::Double
177
178
  end
178
179
 
179
- rule /}/ do
180
+ rule %r/}/ do
180
181
  if in_state? :brace and @brace_count.to_i == 0
181
182
  pop! until state? :brace
182
183
  pop!