rouge-alda 3.3.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 (335) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +28 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +18 -0
  5. data/lib/rouge/cli.rb +432 -0
  6. data/lib/rouge/demos/abap +6 -0
  7. data/lib/rouge/demos/actionscript +4 -0
  8. data/lib/rouge/demos/alda +10 -0
  9. data/lib/rouge/demos/apache +21 -0
  10. data/lib/rouge/demos/apiblueprint +33 -0
  11. data/lib/rouge/demos/applescript +2 -0
  12. data/lib/rouge/demos/awk +4 -0
  13. data/lib/rouge/demos/biml +38 -0
  14. data/lib/rouge/demos/bsl +7 -0
  15. data/lib/rouge/demos/c +8 -0
  16. data/lib/rouge/demos/ceylon +7 -0
  17. data/lib/rouge/demos/cfscript +18 -0
  18. data/lib/rouge/demos/clojure +5 -0
  19. data/lib/rouge/demos/cmake +7 -0
  20. data/lib/rouge/demos/coffeescript +5 -0
  21. data/lib/rouge/demos/common_lisp +1 -0
  22. data/lib/rouge/demos/conf +4 -0
  23. data/lib/rouge/demos/console +6 -0
  24. data/lib/rouge/demos/coq +13 -0
  25. data/lib/rouge/demos/cpp +8 -0
  26. data/lib/rouge/demos/crystal +45 -0
  27. data/lib/rouge/demos/csharp +5 -0
  28. data/lib/rouge/demos/css +4 -0
  29. data/lib/rouge/demos/d +16 -0
  30. data/lib/rouge/demos/dart +6 -0
  31. data/lib/rouge/demos/diff +7 -0
  32. data/lib/rouge/demos/digdag +19 -0
  33. data/lib/rouge/demos/docker +9 -0
  34. data/lib/rouge/demos/dot +5 -0
  35. data/lib/rouge/demos/eiffel +30 -0
  36. data/lib/rouge/demos/elixir +1 -0
  37. data/lib/rouge/demos/elm +4 -0
  38. data/lib/rouge/demos/erb +1 -0
  39. data/lib/rouge/demos/erlang +7 -0
  40. data/lib/rouge/demos/factor +5 -0
  41. data/lib/rouge/demos/fortran +22 -0
  42. data/lib/rouge/demos/fsharp +12 -0
  43. data/lib/rouge/demos/gherkin +17 -0
  44. data/lib/rouge/demos/glsl +14 -0
  45. data/lib/rouge/demos/go +7 -0
  46. data/lib/rouge/demos/gradle +10 -0
  47. data/lib/rouge/demos/graphql +17 -0
  48. data/lib/rouge/demos/groovy +9 -0
  49. data/lib/rouge/demos/hack +5 -0
  50. data/lib/rouge/demos/haml +5 -0
  51. data/lib/rouge/demos/handlebars +7 -0
  52. data/lib/rouge/demos/haskell +6 -0
  53. data/lib/rouge/demos/hcl +7 -0
  54. data/lib/rouge/demos/html +8 -0
  55. data/lib/rouge/demos/http +14 -0
  56. data/lib/rouge/demos/hylang +10 -0
  57. data/lib/rouge/demos/idlang +8 -0
  58. data/lib/rouge/demos/igorpro +9 -0
  59. data/lib/rouge/demos/ini +4 -0
  60. data/lib/rouge/demos/io +11 -0
  61. data/lib/rouge/demos/irb +4 -0
  62. data/lib/rouge/demos/irb_output +2 -0
  63. data/lib/rouge/demos/java +5 -0
  64. data/lib/rouge/demos/javascript +1 -0
  65. data/lib/rouge/demos/jinja +9 -0
  66. data/lib/rouge/demos/json +1 -0
  67. data/lib/rouge/demos/json-doc +1 -0
  68. data/lib/rouge/demos/jsonnet +28 -0
  69. data/lib/rouge/demos/jsp +29 -0
  70. data/lib/rouge/demos/jsx +17 -0
  71. data/lib/rouge/demos/julia +11 -0
  72. data/lib/rouge/demos/kotlin +3 -0
  73. data/lib/rouge/demos/lasso +12 -0
  74. data/lib/rouge/demos/liquid +11 -0
  75. data/lib/rouge/demos/literate_coffeescript +3 -0
  76. data/lib/rouge/demos/literate_haskell +7 -0
  77. data/lib/rouge/demos/llvm +20 -0
  78. data/lib/rouge/demos/lua +12 -0
  79. data/lib/rouge/demos/m68k +16 -0
  80. data/lib/rouge/demos/make +6 -0
  81. data/lib/rouge/demos/markdown +4 -0
  82. data/lib/rouge/demos/mathematica +8 -0
  83. data/lib/rouge/demos/matlab +6 -0
  84. data/lib/rouge/demos/moonscript +16 -0
  85. data/lib/rouge/demos/mosel +10 -0
  86. data/lib/rouge/demos/mxml +22 -0
  87. data/lib/rouge/demos/nasm +26 -0
  88. data/lib/rouge/demos/nginx +5 -0
  89. data/lib/rouge/demos/nim +27 -0
  90. data/lib/rouge/demos/nix +19 -0
  91. data/lib/rouge/demos/objective_c +18 -0
  92. data/lib/rouge/demos/ocaml +12 -0
  93. data/lib/rouge/demos/pascal +14 -0
  94. data/lib/rouge/demos/perl +5 -0
  95. data/lib/rouge/demos/php +3 -0
  96. data/lib/rouge/demos/plaintext +1 -0
  97. data/lib/rouge/demos/plist +142 -0
  98. data/lib/rouge/demos/pony +17 -0
  99. data/lib/rouge/demos/powershell +49 -0
  100. data/lib/rouge/demos/praat +26 -0
  101. data/lib/rouge/demos/prolog +9 -0
  102. data/lib/rouge/demos/prometheus +9 -0
  103. data/lib/rouge/demos/properties +7 -0
  104. data/lib/rouge/demos/protobuf +5 -0
  105. data/lib/rouge/demos/puppet +6 -0
  106. data/lib/rouge/demos/python +6 -0
  107. data/lib/rouge/demos/q +2 -0
  108. data/lib/rouge/demos/qml +9 -0
  109. data/lib/rouge/demos/r +8 -0
  110. data/lib/rouge/demos/racket +24 -0
  111. data/lib/rouge/demos/ruby +9 -0
  112. data/lib/rouge/demos/rust +12 -0
  113. data/lib/rouge/demos/sass +3 -0
  114. data/lib/rouge/demos/scala +3 -0
  115. data/lib/rouge/demos/scheme +4 -0
  116. data/lib/rouge/demos/scss +5 -0
  117. data/lib/rouge/demos/sed +4 -0
  118. data/lib/rouge/demos/shell +2 -0
  119. data/lib/rouge/demos/sieve +10 -0
  120. data/lib/rouge/demos/slim +17 -0
  121. data/lib/rouge/demos/smalltalk +6 -0
  122. data/lib/rouge/demos/smarty +12 -0
  123. data/lib/rouge/demos/sml +4 -0
  124. data/lib/rouge/demos/sqf +14 -0
  125. data/lib/rouge/demos/sql +1 -0
  126. data/lib/rouge/demos/swift +5 -0
  127. data/lib/rouge/demos/tap +5 -0
  128. data/lib/rouge/demos/tcl +1 -0
  129. data/lib/rouge/demos/terraform +31 -0
  130. data/lib/rouge/demos/tex +1 -0
  131. data/lib/rouge/demos/toml +9 -0
  132. data/lib/rouge/demos/tsx +17 -0
  133. data/lib/rouge/demos/tulip +13 -0
  134. data/lib/rouge/demos/turtle +26 -0
  135. data/lib/rouge/demos/twig +9 -0
  136. data/lib/rouge/demos/typescript +1 -0
  137. data/lib/rouge/demos/vala +8 -0
  138. data/lib/rouge/demos/vb +4 -0
  139. data/lib/rouge/demos/verilog +27 -0
  140. data/lib/rouge/demos/vhdl +23 -0
  141. data/lib/rouge/demos/viml +14 -0
  142. data/lib/rouge/demos/vue +11 -0
  143. data/lib/rouge/demos/wollok +11 -0
  144. data/lib/rouge/demos/xml +2 -0
  145. data/lib/rouge/demos/yaml +4 -0
  146. data/lib/rouge/formatter.rb +76 -0
  147. data/lib/rouge/formatters/html.rb +38 -0
  148. data/lib/rouge/formatters/html_inline.rb +31 -0
  149. data/lib/rouge/formatters/html_legacy.rb +45 -0
  150. data/lib/rouge/formatters/html_linewise.rb +28 -0
  151. data/lib/rouge/formatters/html_pygments.rb +18 -0
  152. data/lib/rouge/formatters/html_table.rb +62 -0
  153. data/lib/rouge/formatters/null.rb +20 -0
  154. data/lib/rouge/formatters/terminal256.rb +181 -0
  155. data/lib/rouge/guesser.rb +57 -0
  156. data/lib/rouge/guessers/disambiguation.rb +106 -0
  157. data/lib/rouge/guessers/filename.rb +27 -0
  158. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  159. data/lib/rouge/guessers/mimetype.rb +16 -0
  160. data/lib/rouge/guessers/modeline.rb +46 -0
  161. data/lib/rouge/guessers/source.rb +31 -0
  162. data/lib/rouge/guessers/util.rb +34 -0
  163. data/lib/rouge/lexer.rb +462 -0
  164. data/lib/rouge/lexers/abap.rb +240 -0
  165. data/lib/rouge/lexers/actionscript.rb +196 -0
  166. data/lib/rouge/lexers/alda.rb +43 -0
  167. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  168. data/lib/rouge/lexers/apache.rb +73 -0
  169. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  170. data/lib/rouge/lexers/apple_script.rb +369 -0
  171. data/lib/rouge/lexers/awk.rb +162 -0
  172. data/lib/rouge/lexers/biml.rb +43 -0
  173. data/lib/rouge/lexers/bsl.rb +82 -0
  174. data/lib/rouge/lexers/c.rb +213 -0
  175. data/lib/rouge/lexers/ceylon.rb +124 -0
  176. data/lib/rouge/lexers/cfscript.rb +154 -0
  177. data/lib/rouge/lexers/clojure.rb +113 -0
  178. data/lib/rouge/lexers/cmake.rb +207 -0
  179. data/lib/rouge/lexers/coffeescript.rb +175 -0
  180. data/lib/rouge/lexers/common_lisp.rb +346 -0
  181. data/lib/rouge/lexers/conf.rb +25 -0
  182. data/lib/rouge/lexers/console.rb +137 -0
  183. data/lib/rouge/lexers/coq.rb +188 -0
  184. data/lib/rouge/lexers/cpp.rb +79 -0
  185. data/lib/rouge/lexers/crystal.rb +430 -0
  186. data/lib/rouge/lexers/csharp.rb +115 -0
  187. data/lib/rouge/lexers/css.rb +274 -0
  188. data/lib/rouge/lexers/d.rb +177 -0
  189. data/lib/rouge/lexers/dart.rb +105 -0
  190. data/lib/rouge/lexers/diff.rb +33 -0
  191. data/lib/rouge/lexers/digdag.rb +70 -0
  192. data/lib/rouge/lexers/docker.rb +51 -0
  193. data/lib/rouge/lexers/dot.rb +69 -0
  194. data/lib/rouge/lexers/eiffel.rb +66 -0
  195. data/lib/rouge/lexers/elixir.rb +134 -0
  196. data/lib/rouge/lexers/elm.rb +90 -0
  197. data/lib/rouge/lexers/erb.rb +53 -0
  198. data/lib/rouge/lexers/erlang.rb +115 -0
  199. data/lib/rouge/lexers/factor.rb +303 -0
  200. data/lib/rouge/lexers/fortran.rb +178 -0
  201. data/lib/rouge/lexers/fsharp.rb +119 -0
  202. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  203. data/lib/rouge/lexers/gherkin.rb +138 -0
  204. data/lib/rouge/lexers/glsl.rb +136 -0
  205. data/lib/rouge/lexers/go.rb +175 -0
  206. data/lib/rouge/lexers/gradle.rb +38 -0
  207. data/lib/rouge/lexers/graphql.rb +254 -0
  208. data/lib/rouge/lexers/groovy.rb +113 -0
  209. data/lib/rouge/lexers/hack.rb +49 -0
  210. data/lib/rouge/lexers/haml.rb +230 -0
  211. data/lib/rouge/lexers/handlebars.rb +80 -0
  212. data/lib/rouge/lexers/haskell.rb +198 -0
  213. data/lib/rouge/lexers/hcl.rb +163 -0
  214. data/lib/rouge/lexers/html.rb +140 -0
  215. data/lib/rouge/lexers/http.rb +81 -0
  216. data/lib/rouge/lexers/hylang.rb +94 -0
  217. data/lib/rouge/lexers/idlang.rb +312 -0
  218. data/lib/rouge/lexers/igorpro.rb +664 -0
  219. data/lib/rouge/lexers/ini.rb +54 -0
  220. data/lib/rouge/lexers/io.rb +69 -0
  221. data/lib/rouge/lexers/irb.rb +67 -0
  222. data/lib/rouge/lexers/java.rb +88 -0
  223. data/lib/rouge/lexers/javascript.rb +283 -0
  224. data/lib/rouge/lexers/jinja.rb +138 -0
  225. data/lib/rouge/lexers/json.rb +30 -0
  226. data/lib/rouge/lexers/json_doc.rb +24 -0
  227. data/lib/rouge/lexers/jsonnet.rb +152 -0
  228. data/lib/rouge/lexers/jsp.rb +120 -0
  229. data/lib/rouge/lexers/jsx.rb +104 -0
  230. data/lib/rouge/lexers/julia.rb +167 -0
  231. data/lib/rouge/lexers/kotlin.rb +127 -0
  232. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  233. data/lib/rouge/lexers/lasso.rb +215 -0
  234. data/lib/rouge/lexers/liquid.rb +288 -0
  235. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  236. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  237. data/lib/rouge/lexers/llvm.rb +81 -0
  238. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  239. data/lib/rouge/lexers/lua.rb +126 -0
  240. data/lib/rouge/lexers/m68k.rb +144 -0
  241. data/lib/rouge/lexers/make.rb +113 -0
  242. data/lib/rouge/lexers/markdown.rb +155 -0
  243. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  244. data/lib/rouge/lexers/mathematica.rb +96 -0
  245. data/lib/rouge/lexers/matlab/builtins.rb +13 -0
  246. data/lib/rouge/lexers/matlab.rb +72 -0
  247. data/lib/rouge/lexers/moonscript.rb +115 -0
  248. data/lib/rouge/lexers/mosel.rb +232 -0
  249. data/lib/rouge/lexers/mxml.rb +69 -0
  250. data/lib/rouge/lexers/nasm.rb +199 -0
  251. data/lib/rouge/lexers/nginx.rb +72 -0
  252. data/lib/rouge/lexers/nim.rb +153 -0
  253. data/lib/rouge/lexers/nix.rb +211 -0
  254. data/lib/rouge/lexers/objective_c.rb +195 -0
  255. data/lib/rouge/lexers/ocaml.rb +101 -0
  256. data/lib/rouge/lexers/pascal.rb +67 -0
  257. data/lib/rouge/lexers/perl.rb +201 -0
  258. data/lib/rouge/lexers/php/builtins.rb +196 -0
  259. data/lib/rouge/lexers/php.rb +194 -0
  260. data/lib/rouge/lexers/plain_text.rb +27 -0
  261. data/lib/rouge/lexers/plist.rb +47 -0
  262. data/lib/rouge/lexers/pony.rb +94 -0
  263. data/lib/rouge/lexers/powershell.rb +679 -0
  264. data/lib/rouge/lexers/praat.rb +351 -0
  265. data/lib/rouge/lexers/prolog.rb +61 -0
  266. data/lib/rouge/lexers/prometheus.rb +123 -0
  267. data/lib/rouge/lexers/properties.rb +52 -0
  268. data/lib/rouge/lexers/protobuf.rb +71 -0
  269. data/lib/rouge/lexers/puppet.rb +129 -0
  270. data/lib/rouge/lexers/python.rb +247 -0
  271. data/lib/rouge/lexers/q.rb +125 -0
  272. data/lib/rouge/lexers/qml.rb +74 -0
  273. data/lib/rouge/lexers/r.rb +90 -0
  274. data/lib/rouge/lexers/racket.rb +545 -0
  275. data/lib/rouge/lexers/ruby.rb +439 -0
  276. data/lib/rouge/lexers/rust.rb +198 -0
  277. data/lib/rouge/lexers/sass/common.rb +181 -0
  278. data/lib/rouge/lexers/sass.rb +75 -0
  279. data/lib/rouge/lexers/scala.rb +143 -0
  280. data/lib/rouge/lexers/scheme.rb +113 -0
  281. data/lib/rouge/lexers/scss.rb +35 -0
  282. data/lib/rouge/lexers/sed.rb +173 -0
  283. data/lib/rouge/lexers/shell.rb +190 -0
  284. data/lib/rouge/lexers/sieve.rb +97 -0
  285. data/lib/rouge/lexers/slim.rb +229 -0
  286. data/lib/rouge/lexers/smalltalk.rb +117 -0
  287. data/lib/rouge/lexers/smarty.rb +81 -0
  288. data/lib/rouge/lexers/sml.rb +345 -0
  289. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  290. data/lib/rouge/lexers/sqf.rb +109 -0
  291. data/lib/rouge/lexers/sql.rb +141 -0
  292. data/lib/rouge/lexers/swift.rb +182 -0
  293. data/lib/rouge/lexers/tap.rb +89 -0
  294. data/lib/rouge/lexers/tcl.rb +193 -0
  295. data/lib/rouge/lexers/terraform.rb +105 -0
  296. data/lib/rouge/lexers/tex.rb +70 -0
  297. data/lib/rouge/lexers/toml.rb +68 -0
  298. data/lib/rouge/lexers/tsx.rb +20 -0
  299. data/lib/rouge/lexers/tulip.rb +108 -0
  300. data/lib/rouge/lexers/turtle.rb +64 -0
  301. data/lib/rouge/lexers/twig.rb +40 -0
  302. data/lib/rouge/lexers/typescript/common.rb +34 -0
  303. data/lib/rouge/lexers/typescript.rb +23 -0
  304. data/lib/rouge/lexers/vala.rb +78 -0
  305. data/lib/rouge/lexers/vb.rb +165 -0
  306. data/lib/rouge/lexers/verilog.rb +165 -0
  307. data/lib/rouge/lexers/vhdl.rb +98 -0
  308. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  309. data/lib/rouge/lexers/viml.rb +102 -0
  310. data/lib/rouge/lexers/vue.rb +124 -0
  311. data/lib/rouge/lexers/wollok.rb +104 -0
  312. data/lib/rouge/lexers/xml.rb +58 -0
  313. data/lib/rouge/lexers/yaml.rb +374 -0
  314. data/lib/rouge/plugins/redcarpet.rb +31 -0
  315. data/lib/rouge/regex_lexer.rb +442 -0
  316. data/lib/rouge/template_lexer.rb +21 -0
  317. data/lib/rouge/text_analyzer.rb +50 -0
  318. data/lib/rouge/theme.rb +214 -0
  319. data/lib/rouge/themes/base16.rb +131 -0
  320. data/lib/rouge/themes/colorful.rb +68 -0
  321. data/lib/rouge/themes/github.rb +72 -0
  322. data/lib/rouge/themes/gruvbox.rb +168 -0
  323. data/lib/rouge/themes/igor_pro.rb +21 -0
  324. data/lib/rouge/themes/molokai.rb +83 -0
  325. data/lib/rouge/themes/monokai.rb +93 -0
  326. data/lib/rouge/themes/monokai_sublime.rb +92 -0
  327. data/lib/rouge/themes/pastie.rb +70 -0
  328. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  329. data/lib/rouge/themes/tulip.rb +70 -0
  330. data/lib/rouge/token.rb +183 -0
  331. data/lib/rouge/util.rb +102 -0
  332. data/lib/rouge/version.rb +8 -0
  333. data/lib/rouge.rb +84 -0
  334. data/rouge.gemspec +25 -0
  335. metadata +384 -0
@@ -0,0 +1,215 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ require 'yaml'
5
+
6
+ module Rouge
7
+ module Lexers
8
+ class Lasso < TemplateLexer
9
+ title "Lasso"
10
+ desc "The Lasso programming language (lassosoft.com)"
11
+ tag 'lasso'
12
+ aliases 'lassoscript'
13
+ filenames '*.lasso', '*.lasso[89]'
14
+ mimetypes 'text/x-lasso', 'text/html+lasso', 'application/x-httpd-lasso'
15
+
16
+ option :start_inline, 'Whether to start inline instead of requiring <?lasso or ['
17
+
18
+ def self.detect?(text)
19
+ return true if text.shebang?('lasso9')
20
+ return true if text =~ /\A.*?<\?(lasso(script)?|=)/
21
+ end
22
+
23
+ def initialize(*)
24
+ super
25
+
26
+ @start_inline = bool_option(:start_inline)
27
+ end
28
+
29
+ def start_inline?
30
+ @start_inline
31
+ end
32
+
33
+ start do
34
+ push :lasso if start_inline?
35
+ end
36
+
37
+ class << self
38
+ attr_reader :keywords
39
+ end
40
+
41
+ # Load Lasso keywords from separate YML file
42
+ @keywords = ::YAML.load_file(Pathname.new(__FILE__).dirname.join('lasso/keywords.yml')).tap do |h|
43
+ h.each do |k,v|
44
+ h[k] = Set.new v
45
+ end
46
+ end
47
+
48
+ id = /[a-z_][\w.]*/i
49
+
50
+ state :root do
51
+ rule /^#![ \S]+lasso9\b/, Comment::Preproc, :lasso
52
+ rule(/(?=\[|<)/) { push :delimiters }
53
+ rule /\s+/, Text::Whitespace
54
+ rule(//) { push :delimiters; push :lassofile }
55
+ end
56
+
57
+ state :delimiters do
58
+ rule /\[no_square_brackets\]/, Comment::Preproc, :nosquarebrackets
59
+ rule /\[noprocess\]/, Comment::Preproc, :noprocess
60
+ rule /\[/, Comment::Preproc, :squarebrackets
61
+ rule /<\?(lasso(script)?|=)/i, Comment::Preproc, :anglebrackets
62
+ rule(/([^\[<]|<!--.*?-->|<(script|style).*?\2>|<(?!\?(lasso(script)?|=)))+/im) { delegate parent }
63
+ end
64
+
65
+ state :nosquarebrackets do
66
+ rule /\[noprocess\]/, Comment::Preproc, :noprocess
67
+ rule /<\?(lasso(script)?|=)/i, Comment::Preproc, :anglebrackets
68
+ rule(/([^\[<]|<!--.*?-->|<(script|style).*?\2>|<(?!\?(lasso(script)?|=))|\[(?!noprocess))+/im) { delegate parent }
69
+ end
70
+
71
+ state :noprocess do
72
+ rule %r(\[/noprocess\]), Comment::Preproc, :pop!
73
+ rule(%r(([^\[]|\[(?!/noprocess))+)i) { delegate parent }
74
+ end
75
+
76
+ state :squarebrackets do
77
+ rule /\]/, Comment::Preproc, :pop!
78
+ mixin :lasso
79
+ end
80
+
81
+ state :anglebrackets do
82
+ rule /\?>/, Comment::Preproc, :pop!
83
+ mixin :lasso
84
+ end
85
+
86
+ state :lassofile do
87
+ rule /\]|\?>/, Comment::Preproc, :pop!
88
+ mixin :lasso
89
+ end
90
+
91
+ state :whitespacecomments do
92
+ rule /\s+/, Text
93
+ rule %r(//.*?\n), Comment::Single
94
+ rule %r(/\*\*!.*?\*/)m, Comment::Doc
95
+ rule %r(/\*.*?\*/)m, Comment::Multiline
96
+ end
97
+
98
+ state :lasso do
99
+ mixin :whitespacecomments
100
+
101
+ # literals
102
+ rule /\d*\.\d+(e[+-]?\d+)?/i, Num::Float
103
+ rule /0x[\da-f]+/i, Num::Hex
104
+ rule /\d+/, Num::Integer
105
+ rule /(infinity|NaN)\b/i, Num
106
+ rule /'[^'\\]*(\\.[^'\\]*)*'/m, Str::Single
107
+ rule /"[^"\\]*(\\.[^"\\]*)*"/m, Str::Double
108
+ rule /`[^`]*`/m, Str::Backtick
109
+
110
+ # names
111
+ rule /\$#{id}/, Name::Variable
112
+ rule /#(#{id}|\d+\b)/, Name::Variable::Instance
113
+ rule /(\.\s*)('#{id}')/ do
114
+ groups Name::Builtin::Pseudo, Name::Variable::Class
115
+ end
116
+ rule /(self)(\s*->\s*)('#{id}')/i do
117
+ groups Name::Builtin::Pseudo, Operator, Name::Variable::Class
118
+ end
119
+ rule /(\.\.?\s*)(#{id}(=(?!=))?)/ do
120
+ groups Name::Builtin::Pseudo, Name::Other
121
+ end
122
+ rule /(->\\?\s*|&\s*)(#{id}(=(?!=))?)/ do
123
+ groups Operator, Name::Other
124
+ end
125
+ rule /(?<!->)(self|inherited|currentcapture|givenblock)\b/i, Name::Builtin::Pseudo
126
+ rule /-(?!infinity)#{id}/i, Name::Attribute
127
+ rule /::\s*#{id}/, Name::Label
128
+ rule /error_((code|msg)_\w+|adderror|columnrestriction|databaseconnectionunavailable|databasetimeout|deleteerror|fieldrestriction|filenotfound|invaliddatabase|invalidpassword|invalidusername|modulenotfound|noerror|nopermission|outofmemory|reqcolumnmissing|reqfieldmissing|requiredcolumnmissing|requiredfieldmissing|updateerror)/i, Name::Exception
129
+
130
+ # definitions
131
+ rule /(define)(\s+)(#{id})(\s*=>\s*)(type|trait|thread)\b/i do
132
+ groups Keyword::Declaration, Text, Name::Class, Operator, Keyword
133
+ end
134
+ rule %r((define)(\s+)(#{id})(\s*->\s*)(#{id}=?|[-+*/%]))i do
135
+ groups Keyword::Declaration, Text, Name::Class, Operator, Name::Function
136
+ push :signature
137
+ end
138
+ rule /(define)(\s+)(#{id})/i do
139
+ groups Keyword::Declaration, Text, Name::Function
140
+ push :signature
141
+ end
142
+ rule %r((public|protected|private|provide)(\s+)((#{id}=?|[-+*/%])(?=\s*\()))i do
143
+ groups Keyword, Text, Name::Function
144
+ push :signature
145
+ end
146
+ rule /(public|protected|private|provide)(\s+)(#{id})/i do
147
+ groups Keyword, Text, Name::Function
148
+ end
149
+
150
+ # keywords
151
+ rule /(true|false|none|minimal|full|all|void)\b/i, Keyword::Constant
152
+ rule /(local|var|variable|global|data(?=\s))\b/i, Keyword::Declaration
153
+ rule /(array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray)\b/i, Keyword::Type
154
+ rule /(#{id})(\s+)(in)\b/i do
155
+ groups Name, Text, Keyword
156
+ end
157
+ rule /(let|into)(\s+)(#{id})/i do
158
+ groups Keyword, Text, Name
159
+ end
160
+
161
+ # other
162
+ rule /,/, Punctuation, :commamember
163
+ rule /(and|or|not)\b/i, Operator::Word
164
+ rule /(#{id})(\s*::\s*#{id})?(\s*=(?!=|>))/ do
165
+ groups Name, Name::Label, Operator
166
+ end
167
+
168
+ rule %r((/?)([\w.]+)) do |m|
169
+ name = m[2].downcase
170
+
171
+ if m[1] != ''
172
+ token Punctuation, m[1]
173
+ end
174
+
175
+ if name == 'namespace_using'
176
+ token Keyword::Namespace, m[2]
177
+ elsif self.class.keywords[:keywords].include? name
178
+ token Keyword, m[2]
179
+ elsif self.class.keywords[:types_traits].include? name
180
+ token Name::Builtin, m[2]
181
+ else
182
+ token Name::Other, m[2]
183
+ end
184
+ end
185
+
186
+ rule /(=)(n?bw|n?ew|n?cn|lte?|gte?|n?eq|n?rx|ft)\b/i do
187
+ groups Operator, Operator::Word
188
+ end
189
+ rule %r(:=|[-+*/%=<>&|!?\\]+), Operator
190
+ rule /[{}():;,@^]/, Punctuation
191
+ end
192
+
193
+ state :signature do
194
+ rule /\=>/, Operator, :pop!
195
+ rule /\)/, Punctuation, :pop!
196
+ rule /[(,]/, Punctuation, :parameter
197
+ mixin :lasso
198
+ end
199
+
200
+ state :parameter do
201
+ rule /\)/, Punctuation, :pop!
202
+ rule /-?#{id}/, Name::Attribute, :pop!
203
+ rule /\.\.\./, Name::Builtin::Pseudo
204
+ mixin :lasso
205
+ end
206
+
207
+ state :commamember do
208
+ rule %r((#{id}=?|[-+*/%])(?=\s*(\(([^()]*\([^()]*\))*[^\)]*\)\s*)?(::[\w.\s]+)?=>)), Name::Function, :signature
209
+ mixin :whitespacecomments
210
+ rule //, Text, :pop!
211
+ end
212
+
213
+ end
214
+ end
215
+ end
@@ -0,0 +1,288 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Liquid < RegexLexer
7
+ title "Liquid"
8
+ desc 'Liquid is a templating engine for Ruby (liquidmarkup.org)'
9
+ tag 'liquid'
10
+ filenames '*.liquid'
11
+
12
+ state :root do
13
+ rule /[^\{]+/, Text
14
+
15
+ rule /(\{%)(\s*)/ do
16
+ groups Punctuation, Text::Whitespace
17
+ push :tag_or_block
18
+ end
19
+
20
+ rule /(\{\{)(\s*)/ do
21
+ groups Punctuation, Text::Whitespace
22
+ push :output
23
+ end
24
+
25
+ rule /\{/, Text
26
+ end
27
+
28
+ state :tag_or_block do
29
+ # builtin logic blocks
30
+ rule /(if|unless|elsif|case)(?=\s+)/, Keyword::Reserved, :condition
31
+
32
+ rule /(when)(\s+)/ do
33
+ groups Keyword::Reserved, Text::Whitespace
34
+ push :when
35
+ end
36
+
37
+ rule /(else)(\s*)(%\})/ do
38
+ groups Keyword::Reserved, Text::Whitespace, Punctuation
39
+ pop!
40
+ end
41
+
42
+ # other builtin blocks
43
+ rule /(capture)(\s+)([^\s%]+)(\s*)(%\})/ do
44
+ groups Name::Tag, Text::Whitespace, Name::Attribute, Text::Whitespace, Punctuation
45
+ pop!
46
+ end
47
+
48
+ rule /(comment)(\s*)(%\})/ do
49
+ groups Name::Tag, Text::Whitespace, Punctuation
50
+ push :comment
51
+ end
52
+
53
+ rule /(raw)(\s*)(%\})/ do
54
+ groups Name::Tag, Text::Whitespace, Punctuation
55
+ push :raw
56
+ end
57
+
58
+ rule /assign/, Name::Tag, :assign
59
+ rule /include/, Name::Tag, :include
60
+
61
+ # end of block
62
+ rule /(end(case|unless|if))(\s*)(%\})/ do
63
+ groups Keyword::Reserved, nil, Text::Whitespace, Punctuation
64
+ pop!
65
+ end
66
+
67
+ rule /(end([^\s%]+))(\s*)(%\})/ do
68
+ groups Name::Tag, nil, Text::Whitespace, Punctuation
69
+ pop!
70
+ end
71
+
72
+ # builtin tags
73
+ rule /(cycle)(\s+)(([^\s:]*)(:))?(\s*)/ do |m|
74
+ token Name::Tag, m[1]
75
+ token Text::Whitespace, m[2]
76
+
77
+ if m[4] =~ /'[^']*'/
78
+ token Str::Single, m[4]
79
+ elsif m[4] =~ /"[^"]*"/
80
+ token Str::Double, m[4]
81
+ else
82
+ token Name::Attribute, m[4]
83
+ end
84
+
85
+ token Punctuation, m[5]
86
+ token Text::Whitespace, m[6]
87
+
88
+ push :variable_tag_markup
89
+ end
90
+
91
+ # other tags or blocks
92
+ rule /([^\s%]+)(\s*)/ do
93
+ groups Name::Tag, Text::Whitespace
94
+ push :tag_markup
95
+ end
96
+ end
97
+
98
+ state :output do
99
+ mixin :whitespace
100
+ mixin :generic
101
+
102
+ rule /\}\}/, Punctuation, :pop!
103
+ rule /\|/, Punctuation, :filters
104
+ end
105
+
106
+ state :filters do
107
+ mixin :whitespace
108
+
109
+ rule(/\}\}/) { token Punctuation; reset_stack }
110
+
111
+ rule /([^\s\|:]+)(:?)(\s*)/ do
112
+ groups Name::Function, Punctuation, Text::Whitespace
113
+ push :filter_markup
114
+ end
115
+ end
116
+
117
+ state :filter_markup do
118
+ rule /\|/, Punctuation, :pop!
119
+
120
+ mixin :end_of_tag
121
+ mixin :end_of_block
122
+ mixin :default_param_markup
123
+ end
124
+
125
+ state :condition do
126
+ mixin :end_of_block
127
+ mixin :whitespace
128
+
129
+ rule /([=!><]=?)/, Operator
130
+
131
+ rule /\b((!)|(not\b))/ do
132
+ groups nil, Operator, Operator::Word
133
+ end
134
+
135
+ rule /(contains)/, Operator::Word
136
+
137
+ mixin :generic
138
+ mixin :whitespace
139
+ end
140
+
141
+ state :when do
142
+ mixin :end_of_block
143
+ mixin :whitespace
144
+ mixin :generic
145
+ end
146
+
147
+ state :operator do
148
+ rule /(\s*)((=|!|>|<)=?)(\s*)/ do
149
+ groups Text::Whitespace, Operator, nil, Text::Whitespace
150
+ pop!
151
+ end
152
+
153
+ rule /(\s*)(\bcontains\b)(\s*)/ do
154
+ groups Text::Whitespace, Operator::Word, Text::Whitespace
155
+ pop!
156
+ end
157
+ end
158
+
159
+ state :end_of_tag do
160
+ rule(/\}\}/) { token Punctuation; reset_stack }
161
+ end
162
+
163
+ state :end_of_block do
164
+ rule(/%\}/) { token Punctuation; reset_stack }
165
+ end
166
+
167
+ # states for unknown markup
168
+ state :param_markup do
169
+ mixin :whitespace
170
+ mixin :string
171
+
172
+ rule /([^\s=:]+)(\s*)(=|:)/ do
173
+ groups Name::Attribute, Text::Whitespace, Operator
174
+ end
175
+
176
+ rule /(\{\{)(\s*)([^\s\}])(\s*)(\}\})/ do
177
+ groups Punctuation, Text::Whitespace, nil, Text::Whitespace, Punctuation
178
+ end
179
+
180
+ mixin :number
181
+ mixin :keyword
182
+
183
+ rule /,/, Punctuation
184
+ end
185
+
186
+ state :default_param_markup do
187
+ mixin :param_markup
188
+ rule /./, Text
189
+ end
190
+
191
+ state :variable_param_markup do
192
+ mixin :param_markup
193
+ mixin :variable
194
+ rule /./, Text
195
+ end
196
+
197
+ state :tag_markup do
198
+ mixin :end_of_block
199
+ mixin :default_param_markup
200
+ end
201
+
202
+ state :variable_tag_markup do
203
+ mixin :end_of_block
204
+ mixin :variable_param_markup
205
+ end
206
+
207
+ # states for different values types
208
+ state :keyword do
209
+ rule /\b(false|true)\b/, Keyword::Constant
210
+ end
211
+
212
+ state :variable do
213
+ rule /\.(?=\w)/, Punctuation
214
+ rule /[a-zA-Z_]\w*\??/, Name::Variable
215
+ end
216
+
217
+ state :string do
218
+ rule /'[^']*'/, Str::Single
219
+ rule /"[^"]*"/, Str::Double
220
+ end
221
+
222
+ state :number do
223
+ rule /\d+\.\d+/, Num::Float
224
+ rule /\d+/, Num::Integer
225
+ end
226
+
227
+ state :array_index do
228
+ rule /\[/, Punctuation
229
+ rule /\]/, Punctuation
230
+ end
231
+
232
+ state :generic do
233
+ mixin :array_index
234
+ mixin :keyword
235
+ mixin :string
236
+ mixin :variable
237
+ mixin :number
238
+ end
239
+
240
+ state :whitespace do
241
+ rule /[ \t]+/, Text::Whitespace
242
+ end
243
+
244
+ state :comment do
245
+ rule /(\{%)(\s*)(endcomment)(\s*)(%\})/ do
246
+ groups Punctuation, Text::Whitespace, Name::Tag, Text::Whitespace, Punctuation
247
+ reset_stack
248
+ end
249
+
250
+ rule /./, Comment
251
+ end
252
+
253
+ state :raw do
254
+ rule /[^\{]+/, Text
255
+
256
+ rule /(\{%)(\s*)(endraw)(\s*)(%\})/ do
257
+ groups Punctuation, Text::Whitespace, Name::Tag, Text::Whitespace, Punctuation
258
+ reset_stack
259
+ end
260
+
261
+ rule /\{/, Text
262
+ end
263
+
264
+ state :assign do
265
+ mixin :whitespace
266
+ mixin :end_of_block
267
+
268
+ rule /(\s*)(=)(\s*)/ do
269
+ groups Text::Whitespace, Operator, Text::Whitespace
270
+ end
271
+
272
+ rule /\|/, Punctuation, :filters
273
+
274
+ mixin :generic
275
+ end
276
+
277
+ state :include do
278
+ mixin :whitespace
279
+
280
+ rule /([^\.]+)(\.)(html|liquid)/ do
281
+ groups Name::Attribute, Punctuation, Name::Attribute
282
+ end
283
+
284
+ mixin :variable_tag_markup
285
+ end
286
+ end
287
+ end
288
+ end
@@ -0,0 +1,34 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class LiterateCoffeescript < RegexLexer
7
+ tag 'literate_coffeescript'
8
+ title "Literate CoffeeScript"
9
+ desc 'Literate coffeescript'
10
+ aliases 'litcoffee'
11
+ filenames '*.litcoffee'
12
+
13
+ def markdown
14
+ @markdown ||= Markdown.new(options)
15
+ end
16
+
17
+ def coffee
18
+ @coffee ||= Coffeescript.new(options)
19
+ end
20
+
21
+ start { markdown.reset!; coffee.reset! }
22
+
23
+ state :root do
24
+ rule /^( .*?\n)+/m do
25
+ delegate coffee
26
+ end
27
+
28
+ rule /^([ ]{0,3}(\S.*?|)\n)*/m do
29
+ delegate markdown
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,37 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class LiterateHaskell < RegexLexer
7
+ title "Literate Haskell"
8
+ desc 'Literate haskell'
9
+ tag 'literate_haskell'
10
+ aliases 'lithaskell', 'lhaskell', 'lhs'
11
+ filenames '*.lhs'
12
+ mimetypes 'text/x-literate-haskell'
13
+
14
+ def haskell
15
+ @haskell ||= Haskell.new(options)
16
+ end
17
+
18
+ start { haskell.reset! }
19
+
20
+ # TODO: support TeX versions as well.
21
+ state :root do
22
+ rule /\s*?\n(?=>)/, Text, :code
23
+ rule /.*?\n/, Text
24
+ rule /.+\z/, Text
25
+ end
26
+
27
+ state :code do
28
+ rule /(>)( .*?(\n|\z))/ do |m|
29
+ token Name::Label, m[1]
30
+ delegate haskell, m[2]
31
+ end
32
+
33
+ rule /\s*\n(?=\s*[^>])/, Text, :pop!
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,81 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class LLVM < RegexLexer
7
+ title "LLVM"
8
+ desc 'The LLVM Compiler Infrastructure (http://llvm.org/)'
9
+ tag 'llvm'
10
+
11
+ filenames '*.ll'
12
+ mimetypes 'text/x-llvm'
13
+
14
+ string = /"[^"]*?"/
15
+ identifier = /([-a-zA-Z$._][-a-zA-Z$._0-9]*|#{string})/
16
+
17
+ state :basic do
18
+ rule /;.*?$/, Comment::Single
19
+ rule /\s+/, Text
20
+
21
+ rule /#{identifier}\s*:/, Name::Label
22
+
23
+ rule /@(#{identifier}|\d+)/, Name::Variable::Global
24
+ rule /(%|!)#{identifier}/, Name::Variable
25
+ rule /(%|!)\d+/, Name::Variable
26
+
27
+ rule /c?#{string}/, Str
28
+
29
+ rule /0[xX][a-fA-F0-9]+/, Num
30
+ rule /-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/, Num
31
+
32
+ rule /[=<>{}\[\]()*.,!]|x/, Punctuation
33
+ end
34
+
35
+ builtin_types = %w(
36
+ void float double half x86_fp80 x86mmx fp128 ppc_fp128 label metadata
37
+ )
38
+
39
+ state :types do
40
+ rule /i[1-9]\d*/, Keyword::Type
41
+ rule /#{builtin_types.join('|')}/, Keyword::Type
42
+ end
43
+
44
+ builtin_keywords = %w(
45
+ begin end true false declare define global constant personality private
46
+ landingpad linker_private internal available_externally linkonce_odr
47
+ linkonce weak weak_odr appending dllimport dllexport common default
48
+ hidden protected extern_weak external thread_local zeroinitializer
49
+ undef null to tail target triple datalayout volatile nuw nsw nnan ninf
50
+ nsz arcp fast exact inbounds align addrspace section alias module asm
51
+ sideeffect gc dbg ccc fastcc coldcc x86_stdcallcc x86_fastcallcc
52
+ arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel cc
53
+ c signext zeroext inreg sret nounwind noreturn noalias nocapture byval
54
+ nest readnone readonly inlinehint noinline alwaysinline optsize ssp
55
+ sspreq noredzone noimplicitfloat naked type opaque eq ne slt sgt sle
56
+ sge ult ugt ule uge oeq one olt ogt ole oge ord uno unnamed_addr ueq
57
+ une uwtable x
58
+ )
59
+
60
+ builtin_instructions = %w(
61
+ add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr
62
+ and or xor icmp fcmp phi call catch trunc zext sext fptrunc fpext
63
+ uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast select va_arg ret
64
+ br switch invoke unwind unreachable malloc alloca free load store
65
+ getelementptr extractelement insertelement shufflevector getresult
66
+ extractvalue insertvalue cleanup resume
67
+ )
68
+
69
+ state :keywords do
70
+ rule /#{builtin_instructions.join('|')}/, Keyword
71
+ rule /#{builtin_keywords.join('|')}/, Keyword
72
+ end
73
+
74
+ state :root do
75
+ mixin :basic
76
+ mixin :keywords
77
+ mixin :types
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,24 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ # automatically generated by `rake builtins:lua`
5
+ module Rouge
6
+ module Lexers
7
+ class Lua
8
+ def self.builtins
9
+ @builtins ||= {}.tap do |b|
10
+ b["basic"] = Set.new %w(_G _VERSION assert collectgarbage dofile error getmetatable ipairs load loadfile next pairs pcall print rawequal rawget rawlen rawset select setmetatable tonumber tostring type xpcall file:close file:flush file:lines file:read file:seek file:setvbuf file:write LUA_CPATH LUA_CPATH_5_2 LUA_INIT LUA_INIT_5_2 LUA_PATH LUA_PATH_5_2 luaopen_base luaopen_bit32 luaopen_coroutine luaopen_debug luaopen_io luaopen_math luaopen_os luaopen_package luaopen_string luaopen_table LUA_ERRERR LUA_ERRFILE LUA_ERRGCMM LUA_ERRMEM LUA_ERRRUN LUA_ERRSYNTAX LUA_HOOKCALL LUA_HOOKCOUNT LUA_HOOKLINE LUA_HOOKRET LUA_HOOKTAILCALL LUA_MASKCALL LUA_MASKCOUNT LUA_MASKLINE LUA_MASKRET LUA_MINSTACK LUA_MULTRET LUA_NOREF LUA_OK LUA_OPADD LUA_OPDIV LUA_OPEQ LUA_OPLE LUA_OPLT LUA_OPMOD LUA_OPMUL LUA_OPPOW LUA_OPSUB LUA_OPUNM LUA_REFNIL LUA_REGISTRYINDEX LUA_RIDX_GLOBALS LUA_RIDX_MAINTHREAD LUA_TBOOLEAN LUA_TFUNCTION LUA_TLIGHTUSERDATA LUA_TNIL LUA_TNONE LUA_TNUMBER LUA_TSTRING LUA_TTABLE LUA_TTHREAD LUA_TUSERDATA LUA_USE_APICHECK LUA_YIELD LUAL_BUFFERSIZE)
11
+ b["modules"] = Set.new %w(require package.config package.cpath package.loaded package.loadlib package.path package.preload package.searchers package.searchpath)
12
+ b["bit32"] = Set.new %w(bit32.arshift bit32.band bit32.bnot bit32.bor bit32.btest bit32.bxor bit32.extract bit32.lrotate bit32.lshift bit32.replace bit32.rrotate bit32.rshift)
13
+ b["coroutine"] = Set.new %w(coroutine.create coroutine.resume coroutine.running coroutine.status coroutine.wrap coroutine.yield)
14
+ b["debug"] = Set.new %w(debug.debug debug.getuservalue debug.gethook debug.getinfo debug.getlocal debug.getmetatable debug.getregistry debug.getupvalue debug.setuservalue debug.sethook debug.setlocal debug.setmetatable debug.setupvalue debug.traceback debug.upvalueid debug.upvaluejoin)
15
+ b["io"] = Set.new %w(io.close io.flush io.input io.lines io.open io.output io.popen io.read io.stderr io.stdin io.stdout io.tmpfile io.type io.write)
16
+ b["math"] = Set.new %w(math.abs math.acos math.asin math.atan math.atan2 math.ceil math.cos math.cosh math.deg math.exp math.floor math.fmod math.frexp math.huge math.ldexp math.log math.max math.min math.modf math.pi math.pow math.rad math.random math.randomseed math.sin math.sinh math.sqrt math.tan math.tanh)
17
+ b["os"] = Set.new %w(os.clock os.date os.difftime os.execute os.exit os.getenv os.remove os.rename os.setlocale os.time os.tmpname)
18
+ b["string"] = Set.new %w(string.byte string.char string.dump string.find string.format string.gmatch string.gsub string.len string.lower string.match string.rep string.reverse string.sub string.upper)
19
+ b["table"] = Set.new %w(table.concat table.insert table.pack table.remove table.sort table.unpack)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end