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
@@ -36,35 +37,43 @@ module Rouge
36
37
  @builtins ||= %w()
37
38
  end
38
39
 
40
+ prepend :hash do
41
+ rule %r/[.,()*]/, Punctuation
42
+ end
43
+
44
+ prepend :array do
45
+ rule %r/[.,()*]/, Punctuation
46
+ end
47
+
39
48
  state :strings do
40
- rule /\\./, Str::Escape
41
- rule /\$\{/ do
49
+ rule %r/\\./, Str::Escape
50
+ rule %r/\$\{/ do
42
51
  token Keyword
43
52
  push :interpolation
44
53
  end
45
54
  end
46
55
 
47
56
  state :dq do
48
- rule /[^\\"\$]+/, Str::Double
57
+ rule %r/[^\\"\$]+/, Str::Double
49
58
  mixin :strings
50
- rule /"/, Str::Double, :pop!
59
+ rule %r/"/, Str::Double, :pop!
51
60
  end
52
61
 
53
62
  state :sq do
54
- rule /[^\\'\$]+/, Str::Single
63
+ rule %r/[^\\'\$]+/, Str::Single
55
64
  mixin :strings
56
- rule /'/, Str::Single, :pop!
65
+ rule %r/'/, Str::Single, :pop!
57
66
  end
58
67
 
59
68
  state :heredoc do
60
- rule /\n/, Str::Heredoc, :heredoc_nl
61
- rule /[^$\n\$]+/, Str::Heredoc
62
- rule /[$]/, Str::Heredoc
69
+ rule %r/\n/, Str::Heredoc, :heredoc_nl
70
+ rule %r/[^$\n]+/, Str::Heredoc
71
+ rule %r/[$]/, Str::Heredoc
63
72
  mixin :strings
64
73
  end
65
74
 
66
75
  state :interpolation do
67
- rule /\}/ do
76
+ rule %r/\}/ do
68
77
  token Keyword
69
78
  pop!
70
79
  end
@@ -72,16 +81,31 @@ module Rouge
72
81
  mixin :expression
73
82
  end
74
83
 
84
+ state :regexps do
85
+ rule %r/"\// do
86
+ token Str::Delimiter
87
+ goto :regexp_inner
88
+ end
89
+ end
90
+
91
+ state :regexp_inner do
92
+ rule %r/[^"\/\\]+/, Str::Regex
93
+ rule %r/\\./, Str::Regex
94
+ rule %r/\/"/, Str::Delimiter, :pop!
95
+ rule %r/["\/]/, Str::Regex
96
+ end
97
+
75
98
  id = /[$a-z_\-][a-z0-9_\-]*/io
76
99
 
77
100
  state :expression do
101
+ mixin :regexps
78
102
  mixin :primitives
79
- rule /\s+/, Text
103
+ rule %r/\s+/, Text
80
104
 
81
105
  rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | == | != )x, Operator
82
106
  rule %r([-<>+*%&|\^/!=?:]=?), Operator
83
- rule /[(\[,]/, Punctuation
84
- rule /[)\].]/, Punctuation
107
+ rule %r/[(\[,]/, Punctuation
108
+ rule %r/[)\].]/, Punctuation
85
109
 
86
110
  rule id do |m|
87
111
  if self.class.keywords.include? m[0]
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Rouge
4
5
  module Lexers
@@ -18,50 +19,50 @@ module Rouge
18
19
  command = /\\([a-z]+|\s+|.)/i
19
20
 
20
21
  state :general do
21
- rule /%.*$/, Comment
22
- rule /[{}&_^]/, Punctuation
22
+ rule %r/%.*$/, Comment
23
+ rule %r/[{}&_^]/, Punctuation
23
24
  end
24
25
 
25
26
  state :root do
26
- rule /\\\[/, Punctuation, :displaymath
27
- rule /\\\(/, Punctuation, :inlinemath
28
- rule /\$\$/, Punctuation, :displaymath
29
- rule /\$/, Punctuation, :inlinemath
30
- rule /\\(begin|end)\{.*?\}/, Name::Tag
27
+ rule %r/\\\[/, Punctuation, :displaymath
28
+ rule %r/\\\(/, Punctuation, :inlinemath
29
+ rule %r/\$\$/, Punctuation, :displaymath
30
+ rule %r/\$/, Punctuation, :inlinemath
31
+ rule %r/\\(begin|end)\{.*?\}/, Name::Tag
31
32
 
32
- rule /(\\verb)\b(\S)(.*?)(\2)/ do |m|
33
+ rule %r/(\\verb)\b(\S)(.*?)(\2)/ do
33
34
  groups Name::Builtin, Keyword::Pseudo, Str::Other, Keyword::Pseudo
34
35
  end
35
36
 
36
37
  rule command, Keyword, :command
37
38
  mixin :general
38
- rule /[^\\$%&_^{}]+/, Text
39
+ rule %r/[^\\$%&_^{}]+/, Text
39
40
  end
40
41
 
41
42
  state :math do
42
43
  rule command, Name::Variable
43
44
  mixin :general
44
- rule /[0-9]+/, Num
45
- rule /[-=!+*\/()\[\]]/, Operator
46
- rule /[^=!+*\/()\[\]\\$%&_^{}0-9-]+/, Name::Builtin
45
+ rule %r/[0-9]+/, Num
46
+ rule %r/[-=!+*\/()\[\]]/, Operator
47
+ rule %r/[^=!+*\/()\[\]\\$%&_^{}0-9-]+/, Name::Builtin
47
48
  end
48
49
 
49
50
  state :inlinemath do
50
- rule /\\\)/, Punctuation, :pop!
51
- rule /\$/, Punctuation, :pop!
51
+ rule %r/\\\)/, Punctuation, :pop!
52
+ rule %r/\$/, Punctuation, :pop!
52
53
  mixin :math
53
54
  end
54
55
 
55
56
  state :displaymath do
56
- rule /\\\]/, Punctuation, :pop!
57
- rule /\$\$/, Punctuation, :pop!
58
- rule /\$/, Name::Builtin
57
+ rule %r/\\\]/, Punctuation, :pop!
58
+ rule %r/\$\$/, Punctuation, :pop!
59
+ rule %r/\$/, Name::Builtin
59
60
  mixin :math
60
61
  end
61
62
 
62
63
  state :command do
63
- rule /\[.*?\]/, Name::Attribute
64
- rule /\*/, Keyword
64
+ rule %r/\[.*?\]/, Name::Attribute
65
+ rule %r/\*/, Keyword
65
66
  rule(//) { pop! }
66
67
  end
67
68
  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
@@ -7,60 +8,98 @@ module Rouge
7
8
  desc 'the TOML configuration format (https://github.com/mojombo/toml)'
8
9
  tag 'toml'
9
10
 
10
- filenames '*.toml'
11
+ filenames '*.toml', 'Pipfile'
11
12
  mimetypes 'text/x-toml'
12
13
 
13
- identifier = /[\w.\S]+/
14
+ identifier = /\S+/
14
15
 
15
16
  state :basic do
16
- rule /\s+/, Text
17
- rule /#.*?$/, Comment
18
- rule /(true|false)/, Keyword::Constant
19
- rule /(?<!=)\s*\[[\w\d\S]+\]/, Name::Namespace
17
+ rule %r/\s+/, Text
18
+ rule %r/#.*?$/, Comment
19
+ rule %r/(true|false)/, Keyword::Constant
20
20
 
21
- rule /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/, Literal::Date
21
+ rule %r/(\S+)(\s*)(=)(\s*)(\{)/ do |m|
22
+ groups Name::Namespace, Text, Operator, Text, Punctuation
23
+ push :inline
24
+ end
25
+
26
+ rule %r/(?<!=)\s*\[[\S]+\]/, Name::Namespace
27
+
28
+ rule %r/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/, Literal::Date
22
29
 
23
- rule /(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?/, Num::Float
24
- rule /\d+[eE][+-]?[0-9]+j?/, Num::Float
25
- rule /\-?\d+/, Num::Integer
30
+ rule %r/(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?/, Num::Float
31
+ rule %r/\d+[eE][+-]?[0-9]+j?/, Num::Float
32
+ rule %r/\-?\d+/, Num::Integer
26
33
  end
27
34
 
28
35
  state :root do
29
36
  mixin :basic
30
37
 
31
- rule /(#{identifier})(\s*)(=)/ do
38
+ rule %r/(#{identifier})(\s*)(=)/ do
32
39
  groups Name::Property, Text, Punctuation
33
40
  push :value
34
41
  end
35
-
36
42
  end
37
43
 
38
44
  state :value do
39
- rule /\n/, Text, :pop!
45
+ rule %r/\n/, Text, :pop!
40
46
  mixin :content
41
47
  end
42
48
 
43
49
  state :content do
44
50
  mixin :basic
45
- rule /"/, Str, :dq
51
+ rule %r/"""/, Str, :mdq
52
+ rule %r/"/, Str, :dq
53
+ rule %r/'''/, Str, :msq
54
+ rule %r/'/, Str, :sq
46
55
  mixin :esc_str
47
- rule /\,/, Punctuation
48
- rule /\[/, Punctuation, :array
56
+ rule %r/\,/, Punctuation
57
+ rule %r/\[/, Punctuation, :array
49
58
  end
50
59
 
51
60
  state :dq do
52
- rule /"/, Str, :pop!
61
+ rule %r/"/, Str, :pop!
62
+ rule %r/\n/, Error, :pop!
53
63
  mixin :esc_str
54
- rule /[^\\"]+/, Str
64
+ rule %r/[^\\"\n]+/, Str
65
+ end
66
+
67
+ state :mdq do
68
+ rule %r/"""/, Str, :pop!
69
+ mixin :esc_str
70
+ rule %r/[^\\"]+/, Str
71
+ rule %r/"+/, Str
72
+ end
73
+
74
+ state :sq do
75
+ rule %r/'/, Str, :pop!
76
+ rule %r/\n/, Error, :pop!
77
+ rule %r/[^'\n]+/, Str
78
+ end
79
+
80
+ state :msq do
81
+ rule %r/'''/, Str, :pop!
82
+ rule %r/[^']+/, Str
83
+ rule %r/'+/, Str
55
84
  end
56
85
 
57
86
  state :esc_str do
58
- rule /\\[0t\tn\n "\\ r]/, Str::Escape
87
+ rule %r/\\[0t\tn\n "\\r]/, Str::Escape
59
88
  end
60
89
 
61
90
  state :array do
62
91
  mixin :content
63
- rule /\]/, Punctuation, :pop!
92
+ rule %r/\]/, Punctuation, :pop!
93
+ end
94
+
95
+ state :inline do
96
+ mixin :content
97
+
98
+ rule %r/(#{identifier})(\s*)(=)/ do
99
+ groups Name::Property, Text, Punctuation
100
+ end
101
+
102
+ rule %r/\}/, Punctuation, :pop!
64
103
  end
65
104
  end
66
105
  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
@@ -0,0 +1,119 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class TTCN3 < RegexLexer
7
+ title "TTCN3"
8
+ desc "The TTCN3 programming language (ttcn-3.org)"
9
+
10
+ tag 'ttcn3'
11
+ filenames '*.ttcn', '*.ttcn3'
12
+ mimetypes 'text/x-ttcn3', 'text/x-ttcn'
13
+
14
+ def self.keywords
15
+ @keywords ||= %w(
16
+ module import group type port component signature external
17
+ execute const template function altstep testcase var timer if
18
+ else select case for while do label goto start stop return
19
+ break int2char int2unichar int2bit int2enum int2hex int2oct
20
+ int2str int2float float2int char2int char2oct unichar2int
21
+ unichar2oct bit2int bit2hex bit2oct bit2str hex2int hex2bit
22
+ hex2oct hex2str oct2int oct2bit oct2hex oct2str oct2char
23
+ oct2unichar str2int str2hex str2oct str2float enum2int
24
+ any2unistr lengthof sizeof ispresent ischosen isvalue isbound
25
+ istemplatekind regexp substr replace encvalue decvalue
26
+ encvalue_unichar decvalue_unichar encvalue_o decvalue_o
27
+ get_stringencoding remove_bom rnd hostid send receive
28
+ setverdict
29
+ )
30
+ end
31
+
32
+ def self.reserved
33
+ @reserved ||= %w(
34
+ all alt apply assert at configuration conjunct const control
35
+ delta deterministic disjunct duration fail finished fuzzy from
36
+ history implies inconc inv lazy mod mode notinv now omit
37
+ onentry onexit par pass prev realtime seq setstate static
38
+ stepsize stream timestamp until values wait
39
+ )
40
+ end
41
+
42
+ def self.types
43
+ @types ||= %w(
44
+ anytype address boolean bitstring charstring hexstring octetstring
45
+ component enumerated float integer port record set of union universal
46
+ )
47
+ end
48
+
49
+ # optional comment or whitespace
50
+ ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
51
+ id = /[a-zA-Z_]\w*/
52
+ digit = /\d_+\d|\d/
53
+ bin_digit = /[01]_+[01]|[01]/
54
+ oct_digit = /[0-7]_+[0-7]|[0-7]/
55
+ hex_digit = /\h_+\h|\h/
56
+
57
+ state :statements do
58
+ rule %r/\n+/m, Text
59
+ rule %r/[ \t\r]+/, Text
60
+ rule %r/\\\n/, Text # line continuation
61
+
62
+ rule %r(//(\\.|.)*?$), Comment::Single
63
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
64
+
65
+ rule %r/"/, Str, :string
66
+ rule %r/'(?:\\.|[^\\]|\\u[0-9a-f]{4})'/, Str::Char
67
+
68
+ rule %r/#{digit}+\.#{digit}+([eE]#{digit}+)?[fd]?/i, Num::Float
69
+ rule %r/'#{bin_digit}+'B/i, Num::Bin
70
+ rule %r/'#{hex_digit}+'H/i, Num::Hex
71
+ rule %r/'#{oct_digit}+'O/i, Num::Oct
72
+ rule %r/#{digit}+/i, Num::Integer
73
+
74
+ rule %r([~!%^&*+:=\|?<>/-]), Operator
75
+ rule %r/[()\[\]{},.;:]/, Punctuation
76
+
77
+ rule %r/(?:true|false|null)\b/, Name::Builtin
78
+
79
+ rule id do |m|
80
+ name = m[0]
81
+ if self.class.keywords.include? name
82
+ token Keyword
83
+ elsif self.class.types.include? name
84
+ token Keyword::Type
85
+ elsif self.class.reserved.include? name
86
+ token Keyword::Reserved
87
+ else
88
+ token Name
89
+ end
90
+ end
91
+ end
92
+
93
+ state :root do
94
+ rule %r/module\b/, Keyword::Declaration, :module
95
+ rule %r/import\b/, Keyword::Namespace, :import
96
+
97
+ mixin :statements
98
+ end
99
+
100
+ state :string do
101
+ rule %r/"/, Str, :pop!
102
+ rule %r/\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
103
+ rule %r/[^\\"\n]+/, Str
104
+ rule %r/\\\n/, Str
105
+ rule %r/\\/, Str # stray backslash
106
+ end
107
+
108
+ state :module do
109
+ rule %r/\s+/m, Text
110
+ rule id, Name::Class, :pop!
111
+ end
112
+
113
+ state :import do
114
+ rule %r/\s+/m, Text
115
+ rule %r/[\w.]+\*?/, Name::Namespace, :pop!
116
+ end
117
+ end
118
+ end
119
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Rouge
2
4
  module Lexers
3
5
  class Tulip < RegexLexer
@@ -17,77 +19,77 @@ module Rouge
17
19
  upper_id = /[A-Z][\w-]*/
18
20
 
19
21
  state :comments_and_whitespace do
20
- rule /\s+/, Text
21
- rule /#.*?$/, Comment
22
+ rule %r/\s+/, Text
23
+ rule %r/#.*?$/, Comment
22
24
  end
23
25
 
24
26
  state :root do
25
27
  mixin :comments_and_whitespace
26
28
 
27
- rule /@#{id}/, Keyword
29
+ rule %r/@#{id}/, Keyword
28
30
 
29
31
 
30
- rule /(\\#{id})([{])/ do
32
+ rule %r/(\\#{id})([{])/ do
31
33
  groups Name::Function, Str
32
34
  push :nested_string
33
35
  end
34
36
 
35
- rule /([+]#{id})([{])/ do
37
+ rule %r/([+]#{id})([{])/ do
36
38
  groups Name::Decorator, Str
37
39
  push :nested_string
38
40
  end
39
41
 
40
- rule /\\#{id}/, Name::Function
41
- rule /[+]#{id}/, Name::Decorator
42
+ rule %r/\\#{id}/, Name::Function
43
+ rule %r/[+]#{id}/, Name::Decorator
42
44
 
43
- rule /"[{]/, Str, :dqi
44
- rule /"/, Str, :dq
45
+ rule %r/"[{]/, Str, :dqi
46
+ rule %r/"/, Str, :dq
45
47
 
46
- rule /'{/, Str, :nested_string
47
- rule /'#{id}/, Str
48
+ rule %r/'{/, Str, :nested_string
49
+ rule %r/'#{id}/, Str
48
50
 
49
- rule /[.]#{id}/, Name::Tag
50
- rule /[$]#{id}?/, Name::Variable
51
- rule /-#{id}:?/, Name::Label
52
- rule /%#{id}/, Name::Function
53
- rule /`#{id}/, Operator::Word
51
+ rule %r/[.]#{id}/, Name::Tag
52
+ rule %r/[$]#{id}?/, Name::Variable
53
+ rule %r/-#{id}:?/, Name::Label
54
+ rule %r/%#{id}/, Name::Function
55
+ rule %r/`#{id}/, Operator::Word
54
56
 
55
- rule /[?~%._>,!\[\]:{}()=;\/-]/, Punctuation
57
+ rule %r/[?~%._>,!\[\]:{}()=;\/-]/, Punctuation
56
58
 
57
- rule /[0-9]+([.][0-9]+)?/, Num
59
+ rule %r/[0-9]+([.][0-9]+)?/, Num
58
60
 
59
- rule /#{id}/, Name
61
+ rule %r/#{id}/, Name
60
62
 
61
- rule /</, Comment::Preproc, :angle_brackets
63
+ rule %r/</, Comment::Preproc, :angle_brackets
62
64
  end
63
65
 
64
66
  state :dq do
65
- rule /[^\\"]+/, Str
66
- rule /"/, Str, :pop!
67
- rule /\\./, Str::Escape
67
+ rule %r/[^\\"]+/, Str
68
+ rule %r/"/, Str, :pop!
69
+ rule %r/\\./, Str::Escape
68
70
  end
69
71
 
70
72
  state :dqi do
71
- rule /[$][(]/, Str::Interpol, :interp_root
72
- rule /[{]/, Str, :dqi
73
- rule /[}]/, Str, :pop!
74
- rule /[^{}$]+/, Str
75
- rule /./, Str
73
+ rule %r/[$][(]/, Str::Interpol, :interp_root
74
+ rule %r/[{]/, Str, :dqi
75
+ rule %r/[}]/, Str, :pop!
76
+ rule %r/[^{}$]+/, Str
77
+ rule %r/./, Str
76
78
  end
77
79
 
78
80
  state :interp_root do
79
- rule /[)]/, Str::Interpol, :pop!
81
+ rule %r/[)]/, Str::Interpol, :pop!
80
82
  mixin :interp
81
83
  end
82
84
 
83
85
  state :interp do
84
- rule /[(]/, Punctuation, :interp
85
- rule /[)]/, Punctuation, :pop!
86
+ rule %r/[(]/, Punctuation, :interp
87
+ rule %r/[)]/, Punctuation, :pop!
86
88
  mixin :root
87
89
  end
88
90
 
89
91
  state :nested_string do
90
- rule /\\./, Str::Escape
92
+ rule %r/\\./, Str::Escape
91
93
  rule(/{/) { token Str; push :nested_string }
92
94
  rule(/}/) { token Str; pop! }
93
95
  rule(/[^{}\\]+/) { token Str }
@@ -95,10 +97,10 @@ module Rouge
95
97
 
96
98
  state :angle_brackets do
97
99
  mixin :comments_and_whitespace
98
- rule />/, Comment::Preproc, :pop!
99
- rule /[*:]/, Punctuation
100
- rule /#{upper_id}/, Keyword::Type
101
- rule /#{id}/, Name::Variable
100
+ rule %r/>/, Comment::Preproc, :pop!
101
+ rule %r/[*:]/, Punctuation
102
+ rule %r/#{upper_id}/, Keyword::Type
103
+ rule %r/#{id}/, Name::Variable
102
104
  end
103
105
  end
104
106
  end