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
@@ -9,8 +10,6 @@ module Rouge
9
10
  filenames '*.groovy', 'Jenkinsfile'
10
11
  mimetypes 'text/x-groovy'
11
12
 
12
- ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
13
-
14
13
  def self.detect?(text)
15
14
  return true if text.shebang?(/groovy/)
16
15
  end
@@ -42,8 +41,8 @@ module Rouge
42
41
 
43
42
  state :root do
44
43
  rule %r(^
45
- (\s*(?:\w[\w\d.\[\]]*\s+)+?) # return arguments
46
- (\w[\w\d]*) # method name
44
+ (\s*(?:\w[\w.\[\]]*\s+)+?) # return arguments
45
+ (\w\w*) # method name
47
46
  (\s*) (\() # signature start
48
47
  )x do |m|
49
48
  delegate self.clone, m[1]
@@ -53,29 +52,29 @@ module Rouge
53
52
  end
54
53
 
55
54
  # whitespace
56
- rule /[^\S\n]+/, Text
55
+ rule %r/[^\S\n]+/, Text
57
56
  rule %r(//.*?$), Comment::Single
58
57
  rule %r(/[*].*?[*]/)m, Comment::Multiline
59
- rule /@\w[\w\d.]*/, Name::Decorator
60
- rule /(class|interface|trait)\b/, Keyword::Declaration, :class
61
- rule /package\b/, Keyword::Namespace, :import
62
- rule /import\b/, Keyword::Namespace, :import
58
+ rule %r/@\w[\w.]*/, Name::Decorator
59
+ rule %r/(class|interface|trait)\b/, Keyword::Declaration, :class
60
+ rule %r/package\b/, Keyword::Namespace, :import
61
+ rule %r/import\b/, Keyword::Namespace, :import
63
62
 
64
63
  # TODO: highlight backslash escapes
65
- rule /""".*?"""/m, Str::Double
66
- rule /'''.*?'''/m, Str::Single
64
+ rule %r/""".*?"""/m, Str::Double
65
+ rule %r/'''.*?'''/m, Str::Single
67
66
 
68
- rule /"(\\.|\\\n|.)*?"/, Str::Double
69
- rule /'(\\.|\\\n|.)*?'/, Str::Single
67
+ rule %r/"(\\.|\\\n|.)*?"/, Str::Double
68
+ rule %r/'(\\.|\\\n|.)*?'/, Str::Single
70
69
  rule %r(\$/(\$.|.)*?/\$)m, Str
71
70
  rule %r(/(\\.|\\\n|.)*?/), Str
72
- rule /'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'/, Str::Char
73
- rule /(\.)([a-zA-Z_][a-zA-Z0-9_]*)/ do
71
+ rule %r/'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'/, Str::Char
72
+ rule %r/(\.)([a-zA-Z_][a-zA-Z0-9_]*)/ do
74
73
  groups Operator, Name::Attribute
75
74
  end
76
75
 
77
- rule /[a-zA-Z_][a-zA-Z0-9_]*:/, Name::Label
78
- rule /[a-zA-Z_\$][a-zA-Z0-9_]*/ do |m|
76
+ rule %r/[a-zA-Z_][a-zA-Z0-9_]*:/, Name::Label
77
+ rule %r/[a-zA-Z_\$][a-zA-Z0-9_]*/ do |m|
79
78
  if self.class.keywords.include? m[0]
80
79
  token Keyword
81
80
  elsif self.class.declarations.include? m[0]
@@ -92,20 +91,20 @@ module Rouge
92
91
  rule %r([~^*!%&\[\](){}<>\|+=:;,./?-]), Operator
93
92
 
94
93
  # numbers
95
- rule /\d+\.\d+([eE]\d+)?[fd]?/, Num::Float
96
- rule /0x[0-9a-f]+/, Num::Hex
97
- rule /[0-9]+L?/, Num::Integer
98
- rule /\n/, Text
94
+ rule %r/\d+\.\d+([eE]\d+)?[fd]?/, Num::Float
95
+ rule %r/0x[0-9a-f]+/, Num::Hex
96
+ rule %r/[0-9]+L?/, Num::Integer
97
+ rule %r/\n/, Text
99
98
  end
100
99
 
101
100
  state :class do
102
- rule /\s+/, Text
103
- rule /\w[\w\d]*/, Name::Class, :pop!
101
+ rule %r/\s+/, Text
102
+ rule %r/\w\w*/, Name::Class, :pop!
104
103
  end
105
104
 
106
105
  state :import do
107
- rule /\s+/, Text
108
- rule /[\w\d.]+[*]?/, Name::Namespace, :pop!
106
+ rule %r/\s+/, Text
107
+ rule %r/[\w.]+[*]?/, Name::Namespace, :pop!
109
108
  end
110
109
  end
111
110
  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
@@ -32,7 +33,7 @@ module Rouge
32
33
  end
33
34
 
34
35
  prepend :template do
35
- rule /<\?hh(\s*\/\/\s*(strict|decl|partial))?$/, Comment::Preproc, :php
36
+ rule %r/<\?hh(\s*\/\/\s*(strict|decl|partial))?$/, Comment::Preproc, :php
36
37
  end
37
38
 
38
39
  prepend :php do
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -65,19 +66,15 @@ module Rouge
65
66
  # To accomodate this, use this custom faux dot instead.
66
67
  dot = /[ ]\|\n(?=.*[ ]\|)|./
67
68
 
68
- # In certain places, a comma at the end of the line
69
- # allows line wrapping as well.
70
- comma_dot = /,\s*\n|#{dot}/
71
-
72
69
  state :root do
73
- rule /\s*\n/, Text
70
+ rule %r/\s*\n/, Text
74
71
  rule(/\s*/) { |m| token Text; indentation(m[0]) }
75
72
  end
76
73
 
77
74
  state :content do
78
75
  mixin :css
79
76
  rule(/%#{identifier}/) { token Name::Tag; goto :tag }
80
- rule /!!!#{dot}*\n/, Name::Namespace, :pop!
77
+ rule %r/!!!#{dot}*\n/, Name::Namespace, :pop!
81
78
  rule %r(
82
79
  (/) (\[#{dot}*?\]) (#{dot}*\n)
83
80
  )x do
@@ -91,20 +88,20 @@ module Rouge
91
88
  starts_block :html_comment_block
92
89
  end
93
90
 
94
- rule /-##{dot}*\n/ do
91
+ rule %r/-##{dot}*\n/ do
95
92
  token Comment
96
93
  pop!
97
94
  starts_block :haml_comment_block
98
95
  end
99
96
 
100
- rule /-/ do
97
+ rule %r/-/ do
101
98
  token Punctuation
102
99
  reset_stack
103
100
  ruby! :ruby_line
104
101
  end
105
102
 
106
103
  # filters
107
- rule /:(#{dot}*)\n/ do |m|
104
+ rule %r/:(#{dot}*)\n/ do |m|
108
105
  token Name::Decorator
109
106
  pop!
110
107
  starts_block :filter_block
@@ -130,11 +127,11 @@ module Rouge
130
127
  rule(/[{]/) { token Punctuation; ruby! :ruby_tag }
131
128
  rule(/\[#{dot}*?\]/) { delegate ruby }
132
129
 
133
- rule /\(/, Punctuation, :html_attributes
134
- rule /\s*\n/, Text, :pop!
130
+ rule %r/\(/, Punctuation, :html_attributes
131
+ rule %r/\s*\n/, Text, :pop!
135
132
 
136
133
  # whitespace chompers
137
- rule /[<>]{1,2}(?=[ \t=])/, Punctuation
134
+ rule %r/[<>]{1,2}(?=[ \t=])/, Punctuation
138
135
 
139
136
  mixin :eval_or_plain
140
137
  end
@@ -146,8 +143,8 @@ module Rouge
146
143
  end
147
144
 
148
145
  state :eval_or_plain do
149
- rule /[&!]?==/, Punctuation, :plain
150
- rule /[&!]?[=!]/ do
146
+ rule %r/[&!]?==/, Punctuation, :plain
147
+ rule %r/[&!]?[=!]/ do
151
148
  token Punctuation
152
149
  reset_stack
153
150
  ruby! :ruby_line
@@ -157,9 +154,9 @@ module Rouge
157
154
  end
158
155
 
159
156
  state :ruby_line do
160
- rule /\n/, Text, :pop!
157
+ rule %r/\n/, Text, :pop!
161
158
  rule(/,[ \t]*\n/) { delegate ruby }
162
- rule /[ ]\|[ \t]*\n/, Str::Escape
159
+ rule %r/[ ]\|[ \t]*\n/, Str::Escape
163
160
  rule(/.*?(?=(,$| \|)?[ \t]*$)/) { delegate ruby }
164
161
  end
165
162
 
@@ -168,33 +165,33 @@ module Rouge
168
165
  end
169
166
 
170
167
  state :html_attributes do
171
- rule /\s+/, Text
172
- rule /#{identifier}\s*=/, Name::Attribute, :html_attribute_value
168
+ rule %r/\s+/, Text
169
+ rule %r/#{identifier}\s*=/, Name::Attribute, :html_attribute_value
173
170
  rule identifier, Name::Attribute
174
- rule /\)/, Text, :pop!
171
+ rule %r/\)/, Text, :pop!
175
172
  end
176
173
 
177
174
  state :html_attribute_value do
178
- rule /\s+/, Text
175
+ rule %r/\s+/, Text
179
176
  rule ruby_var, Name::Variable, :pop!
180
- rule /@#{ruby_var}/, Name::Variable::Instance, :pop!
181
- rule /\$#{ruby_var}/, Name::Variable::Global, :pop!
182
- rule /'(\\\\|\\'|[^'\n])*'/, Str, :pop!
183
- rule /"(\\\\|\\"|[^"\n])*"/, Str, :pop!
177
+ rule %r/@#{ruby_var}/, Name::Variable::Instance, :pop!
178
+ rule %r/\$#{ruby_var}/, Name::Variable::Global, :pop!
179
+ rule %r/'(\\\\|\\'|[^'\n])*'/, Str, :pop!
180
+ rule %r/"(\\\\|\\"|[^"\n])*"/, Str, :pop!
184
181
  end
185
182
 
186
183
  state :html_comment_block do
187
- rule /#{dot}+/, Comment
184
+ rule %r/#{dot}+/, Comment
188
185
  mixin :indented_block
189
186
  end
190
187
 
191
188
  state :haml_comment_block do
192
- rule /#{dot}+/, Comment::Preproc
189
+ rule %r/#{dot}+/, Comment::Preproc
193
190
  mixin :indented_block
194
191
  end
195
192
 
196
193
  state :filter_block do
197
- rule /([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/ do
194
+ rule %r/([^#\n]|#[^{\n]|(\\\\)*\\#\{)+/ do
198
195
  if @filter_lexer
199
196
  delegate @filter_lexer
200
197
  else
@@ -207,11 +204,11 @@ module Rouge
207
204
  end
208
205
 
209
206
  state :interpolation do
210
- rule /#[{]/, Str::Interpol, :ruby
207
+ rule %r/#[{]/, Str::Interpol, :ruby
211
208
  end
212
209
 
213
210
  state :ruby do
214
- rule /[}]/, Str::Interpol, :pop!
211
+ rule %r/[}]/, Str::Interpol, :pop!
215
212
  mixin :ruby_inner
216
213
  end
217
214
 
@@ -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,16 +18,24 @@ module Rouge
17
18
  rule(/\\{+/) { delegate parent }
18
19
 
19
20
  # block comments
20
- rule /{{!--/, Comment, :comment
21
- rule /{{!.*?}}/, Comment
21
+ rule %r/{{!--/, Comment, :comment
22
+ rule %r/{{!.*?}}/, Comment
22
23
 
23
- rule /{{{?/ do
24
+ rule %r/{{{?/ do
24
25
  token Keyword
25
26
  push :stache
26
27
  push :open_sym
27
28
  end
28
29
 
29
- rule(/(.+?)(?=\\|{{)/m) { delegate parent }
30
+ rule(/(.+?)(?=\\|{{)/m) do
31
+ delegate parent
32
+
33
+ # if parent state is attr, then we have an html attribute without quotes
34
+ # pop the parent state to return to the tag state
35
+ if parent.state?('attr')
36
+ parent.pop!
37
+ end
38
+ end
30
39
 
31
40
  # if we get here, there's no more mustache tags, so we eat
32
41
  # the rest of the doc
@@ -41,20 +50,23 @@ module Rouge
41
50
  end
42
51
 
43
52
  state :stache do
44
- rule /}}}?/, Keyword, :pop!
45
- rule /\s+/m, Text
46
- rule /[=]/, Operator
47
- rule /[\[\]]/, Punctuation
48
- rule /[.](?=[}\s])/, Name::Variable
49
- rule /[.][.]/, Name::Variable
53
+ rule %r/}}}?/, Keyword, :pop!
54
+ rule %r/\|/, Punctuation
55
+ rule %r/~/, Keyword
56
+ rule %r/\s+/m, Text
57
+ rule %r/[=]/, Operator
58
+ rule %r/[\[\]]/, Punctuation
59
+ rule %r/[\(\)]/, Punctuation
60
+ rule %r/[.](?=[}\s])/, Name::Variable
61
+ rule %r/[.][.]/, Name::Variable
50
62
  rule %r([/.]), Punctuation
51
- rule /"(\\.|.)*?"/, Str::Double
52
- rule /'(\\.|.)*?'/, Str::Single
53
- rule /\d+(?=}\s)/, Num
54
- rule /(true|false)(?=[}\s])/, Keyword::Constant
55
- rule /else(?=[}\s])/, Keyword
56
- rule /this(?=[}\s])/, Name::Builtin::Pseudo
57
- rule /@#{id}/, Name::Attribute
63
+ rule %r/"(\\.|.)*?"/, Str::Double
64
+ rule %r/'(\\.|.)*?'/, Str::Single
65
+ rule %r/\d+(?=}\s)/, Num
66
+ rule %r/(true|false)(?=[}\s])/, Keyword::Constant
67
+ rule %r/else(?=[}\s])/, Keyword
68
+ rule %r/this(?=[}\s])/, Name::Builtin::Pseudo
69
+ rule %r/@#{id}/, Name::Attribute
58
70
  rule id, Name::Variable
59
71
  end
60
72
 
@@ -64,16 +76,16 @@ module Rouge
64
76
  goto :block_name
65
77
  end
66
78
 
67
- rule /[>^&]/, Keyword
79
+ rule %r/[>^&~]/, Keyword
68
80
 
69
81
  rule(//) { pop! }
70
82
  end
71
83
 
72
84
  state :block_name do
73
- rule /if(?=[}\s])/, Keyword
85
+ rule %r/if(?=[}\s])/, Keyword
74
86
  rule id, Name::Namespace, :pop!
75
87
  rule(//) { pop! }
76
88
  end
77
89
  end
78
90
  end
79
- end
91
+ 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
@@ -8,7 +9,7 @@ module Rouge
8
9
 
9
10
  tag 'haskell'
10
11
  aliases 'hs'
11
- filenames '*.hs'
12
+ filenames '*.hs', '*.hs-boot'
12
13
  mimetypes 'text/x-haskell'
13
14
 
14
15
  def self.detect?(text)
@@ -26,40 +27,41 @@ module Rouge
26
27
  )
27
28
 
28
29
  state :basic do
29
- rule /\s+/m, Text
30
- rule /{-#/, Comment::Preproc, :comment_preproc
31
- rule /{-/, Comment::Multiline, :comment
32
- rule /^--\s+\|.*?$/, Comment::Doc
30
+ rule %r/\s+/m, Text
31
+ rule %r/{-#/, Comment::Preproc, :comment_preproc
32
+ rule %r/{-/, Comment::Multiline, :comment
33
+ rule %r/^--\s+\|.*?$/, Comment::Doc
33
34
  # this is complicated in order to support custom symbols
34
35
  # like -->
35
- rule /--(?![!#\$\%&*+.\/<=>?@\^\|_~]).*?$/, Comment::Single
36
+ rule %r/--(?![!#\$\%&*+.\/<=>?@\^\|_~]).*?$/, Comment::Single
36
37
  end
37
38
 
38
39
  # nested commenting
39
40
  state :comment do
40
- rule /-}/, Comment::Multiline, :pop!
41
- rule /{-/, Comment::Multiline, :comment
42
- rule /[^-{}]+/, Comment::Multiline
43
- rule /[-{}]/, Comment::Multiline
41
+ rule %r/-}/, Comment::Multiline, :pop!
42
+ rule %r/{-/, Comment::Multiline, :comment
43
+ rule %r/[^-{}]+/, Comment::Multiline
44
+ rule %r/[-{}]/, Comment::Multiline
44
45
  end
45
46
 
46
47
  state :comment_preproc do
47
- rule /-}/, Comment::Preproc, :pop!
48
- rule /{-/, Comment::Preproc, :comment
49
- rule /[^-{}]+/, Comment::Preproc
50
- rule /[-{}]/, Comment::Preproc
48
+ rule %r/-}/, Comment::Preproc, :pop!
49
+ rule %r/{-/, Comment::Preproc, :comment
50
+ rule %r/[^-{}]+/, Comment::Preproc
51
+ rule %r/[-{}]/, Comment::Preproc
51
52
  end
52
53
 
53
54
  state :root do
54
55
  mixin :basic
55
56
 
56
- rule /\bimport\b/, Keyword::Reserved, :import
57
- rule /\bmodule\b/, Keyword::Reserved, :module
58
- rule /\b(?:#{reserved.join('|')})\b/, Keyword::Reserved
57
+ rule %r/\bimport\b/, Keyword::Reserved, :import
58
+ rule %r/\bmodule\b/, Keyword::Reserved, :module
59
+ rule %r/\b(?:#{reserved.join('|')})\b/, Keyword::Reserved
59
60
  # not sure why, but ^ doesn't work here
60
- # rule /^[_a-z][\w']*/, Name::Function
61
- rule /[_a-z][\w']*/, Name
62
- rule /[A-Z][\w']*/, Keyword::Type
61
+ # rule %r/^[_a-z][\w']*/, Name::Function
62
+ rule %r/[_a-z][\w']*/, Name
63
+ rule %r/[A-Z][\w']*/, Keyword::Type
64
+ rule %r/'[A-Z]\w+'?/, Keyword::Type # promoted data constructor
63
65
 
64
66
  # lambda operator
65
67
  rule %r(\\(?![:!#\$\%&*+.\\/<=>?@^\|~-]+)), Name::Function
@@ -70,35 +72,35 @@ module Rouge
70
72
  # other operators
71
73
  rule %r([:!#\$\%&*+.\\/<=>?@^\|~-]+), Operator
72
74
 
73
- rule /\d+e[+-]?\d+/i, Num::Float
74
- rule /\d+\.\d+(e[+-]?\d+)?/i, Num::Float
75
- rule /0o[0-7]+/i, Num::Oct
76
- rule /0x[\da-f]+/i, Num::Hex
77
- rule /\d+/, Num::Integer
75
+ rule %r/\d+e[+-]?\d+/i, Num::Float
76
+ rule %r/\d+\.\d+(e[+-]?\d+)?/i, Num::Float
77
+ rule %r/0o[0-7]+/i, Num::Oct
78
+ rule %r/0x[\da-f]+/i, Num::Hex
79
+ rule %r/\d+/, Num::Integer
78
80
 
79
- rule /'/, Str::Char, :character
80
- rule /"/, Str, :string
81
+ rule %r/'/, Str::Char, :character
82
+ rule %r/"/, Str, :string
81
83
 
82
- rule /\[\s*\]/, Keyword::Type
83
- rule /\(\s*\)/, Name::Builtin
84
+ rule %r/\[\s*\]/, Keyword::Type
85
+ rule %r/\(\s*\)/, Name::Builtin
84
86
 
85
87
  # Quasiquotations
86
- rule /(\[)([_a-z][\w']*)(\|)/ do |m|
88
+ rule %r/(\[)([_a-z][\w']*)(\|)/ do |m|
87
89
  token Operator, m[1]
88
90
  token Name, m[2]
89
91
  token Operator, m[3]
90
92
  push :quasiquotation
91
93
  end
92
94
 
93
- rule /[\[\](),;`{}]/, Punctuation
95
+ rule %r/[\[\](),;`{}]/, Punctuation
94
96
  end
95
97
 
96
98
  state :import do
97
- rule /\s+/, Text
98
- rule /"/, Str, :string
99
- rule /\bqualified\b/, Keyword
99
+ rule %r/\s+/, Text
100
+ rule %r/"/, Str, :string
101
+ rule %r/\bqualified\b/, Keyword
100
102
  # import X as Y
101
- rule /([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][a-zA-Z0-9_.]*)/ do
103
+ rule %r/([A-Z][\w.]*)(\s+)(as)(\s+)([A-Z][a-zA-Z0-9_.]*)/ do
102
104
  groups(
103
105
  Name::Namespace, # X
104
106
  Text, Keyword, # as
@@ -108,7 +110,7 @@ module Rouge
108
110
  end
109
111
 
110
112
  # import X hiding (functions)
111
- rule /([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()/ do
113
+ rule %r/([A-Z][\w.]*)(\s+)(hiding)(\s+)(\()/ do
112
114
  groups(
113
115
  Name::Namespace, # X
114
116
  Text, Keyword, # hiding
@@ -118,7 +120,7 @@ module Rouge
118
120
  end
119
121
 
120
122
  # import X (functions)
121
- rule /([A-Z][\w.]*)(\s+)(\()/ do
123
+ rule %r/([A-Z][\w.]*)(\s+)(\()/ do
122
124
  groups(
123
125
  Name::Namespace, # X
124
126
  Text,
@@ -127,70 +129,70 @@ module Rouge
127
129
  goto :funclist
128
130
  end
129
131
 
130
- rule /[\w.]+/, Name::Namespace, :pop!
132
+ rule %r/[\w.]+/, Name::Namespace, :pop!
131
133
  end
132
134
 
133
135
  state :module do
134
- rule /\s+/, Text
136
+ rule %r/\s+/, Text
135
137
  # module Foo (functions)
136
- rule /([A-Z][\w.]*)(\s+)(\()/ do
138
+ rule %r/([A-Z][\w.]*)(\s+)(\()/ do
137
139
  groups Name::Namespace, Text, Punctuation
138
140
  push :funclist
139
141
  end
140
142
 
141
- rule /\bwhere\b/, Keyword::Reserved, :pop!
143
+ rule %r/\bwhere\b/, Keyword::Reserved, :pop!
142
144
 
143
- rule /[A-Z][a-zA-Z0-9_.]*/, Name::Namespace, :pop!
145
+ rule %r/[A-Z][a-zA-Z0-9_.]*/, Name::Namespace, :pop!
144
146
  end
145
147
 
146
148
  state :funclist do
147
149
  mixin :basic
148
- rule /[A-Z]\w*/, Keyword::Type
149
- rule /(_[\w\']+|[a-z][\w\']*)/, Name::Function
150
- rule /,/, Punctuation
151
- rule /[:!#\$\%&*+.\\\/<=>?@^\|~-]+/, Operator
152
- rule /\(/, Punctuation, :funclist
153
- rule /\)/, Punctuation, :pop!
150
+ rule %r/[A-Z]\w*/, Keyword::Type
151
+ rule %r/(_[\w\']+|[a-z][\w\']*)/, Name::Function
152
+ rule %r/,/, Punctuation
153
+ rule %r/[:!#\$\%&*+.\\\/<=>?@^\|~-]+/, Operator
154
+ rule %r/\(/, Punctuation, :funclist
155
+ rule %r/\)/, Punctuation, :pop!
154
156
  end
155
157
 
156
158
  state :character do
157
- rule /\\/ do
159
+ rule %r/\\/ do
158
160
  token Str::Escape
159
161
  goto :character_end
160
162
  push :escape
161
163
  end
162
164
 
163
- rule /./ do
165
+ rule %r/./ do
164
166
  token Str::Char
165
167
  goto :character_end
166
168
  end
167
169
  end
168
170
 
169
171
  state :character_end do
170
- rule /'/, Str::Char, :pop!
171
- rule /./, Error, :pop!
172
+ rule %r/'/, Str::Char, :pop!
173
+ rule %r/./, Error, :pop!
172
174
  end
173
175
 
174
176
  state :quasiquotation do
175
- rule /\|\]/, Operator, :pop!
176
- rule /[^\|]+/m, Text
177
- rule /\|/, Text
177
+ rule %r/\|\]/, Operator, :pop!
178
+ rule %r/[^\|]+/m, Text
179
+ rule %r/\|/, Text
178
180
  end
179
181
 
180
182
  state :string do
181
- rule /"/, Str, :pop!
182
- rule /\\/, Str::Escape, :escape
183
- rule /[^\\"]+/, Str
183
+ rule %r/"/, Str, :pop!
184
+ rule %r/\\/, Str::Escape, :escape
185
+ rule %r/[^\\"]+/, Str
184
186
  end
185
187
 
186
188
  state :escape do
187
- rule /[abfnrtv"'&\\]/, Str::Escape, :pop!
188
- rule /\^[\]\[A-Z@\^_]/, Str::Escape, :pop!
189
- rule /#{ascii.join('|')}/, Str::Escape, :pop!
190
- rule /o[0-7]+/i, Str::Escape, :pop!
191
- rule /x[\da-f]+/i, Str::Escape, :pop!
192
- rule /\d+/, Str::Escape, :pop!
193
- rule /\s+\\/, Str::Escape, :pop!
189
+ rule %r/[abfnrtv"'&\\]/, Str::Escape, :pop!
190
+ rule %r/\^[\]\[A-Z@\^_]/, Str::Escape, :pop!
191
+ rule %r/#{ascii.join('|')}/, Str::Escape, :pop!
192
+ rule %r/o[0-7]+/i, Str::Escape, :pop!
193
+ rule %r/x[\da-f]+/i, Str::Escape, :pop!
194
+ rule %r/\d+/, Str::Escape, :pop!
195
+ rule %r/\s+\\/, Str::Escape, :pop!
194
196
  end
195
197
  end
196
198
  end