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,232 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Mosel < RegexLexer
7
+ tag 'mosel'
8
+ filenames '*.mos'
9
+ title "Mosel"
10
+ desc "An optimization language used by Fico's Xpress."
11
+ # http://www.fico.com/en/products/fico-xpress-optimization-suite
12
+ filenames '*.mos'
13
+
14
+ mimetypes 'text/x-mosel'
15
+
16
+ def self.detect?(text)
17
+ return true if text =~ /^\s*(model|package)\s+/
18
+ end
19
+
20
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
21
+
22
+ ############################################################################################################################
23
+ # General language lements
24
+ ############################################################################################################################
25
+
26
+ core_keywords = %w(
27
+ and array as
28
+ boolean break
29
+ case count counter
30
+ declarations div do dynamic
31
+ elif else end evaluation exit
32
+ false forall forward from function
33
+ if imports in include initialisations initializations integer inter is_binary is_continuous is_free is_integer is_partint is_semcont is_semint is_sos1 is_sos2
34
+ linctr list
35
+ max min mod model mpvar
36
+ next not of options or
37
+ package parameters procedure
38
+ public prod range real record repeat requirements
39
+ set string sum
40
+ then to true
41
+ union until uses
42
+ version
43
+ while with
44
+ )
45
+
46
+ core_functions = %w(
47
+ abs arctan assert
48
+ bitflip bitneg bitset bitshift bittest bitval
49
+ ceil cos create currentdate currenttime cuthead cuttail
50
+ delcell exists exit exp exportprob
51
+ fclose fflush finalize findfirst findlast floor fopen fselect fskipline
52
+ getact getcoeff getcoeffs getdual getfid getfirst gethead getfname getlast getobjval getparam getrcost getreadcnt getreverse getsize getslack getsol gettail gettype getvars
53
+ iseof ishidden isodd ln log
54
+ makesos1 makesos2 maxlist minlist
55
+ publish
56
+ random read readln reset reverse round
57
+ setcoeff sethidden setioerr setname setparam setrandseed settype sin splithead splittail sqrt strfmt substr
58
+ timestamp
59
+ unpublish
60
+ write writeln
61
+ )
62
+
63
+ ############################################################################################################################
64
+ # mmxprs module elements
65
+ ############################################################################################################################
66
+
67
+ mmxprs_functions = %w(
68
+ addmipsol
69
+ basisstability
70
+ calcsolinfo clearmipdir clearmodcut command copysoltoinit
71
+ defdelayedrows defsecurevecs
72
+ estimatemarginals
73
+ fixglobal
74
+ getbstat getdualray getiis getiissense getiistype getinfcause getinfeas getlb getloadedlinctrs getloadedmpvars getname getprimalray getprobstat getrange getsensrng getsize getsol getub getvars
75
+ implies indicator isiisvalid isintegral loadbasis
76
+ loadmipsol loadprob
77
+ maximize minimize
78
+ postsolve
79
+ readbasis readdirs readsol refinemipsol rejectintsol repairinfeas resetbasis resetiis resetsol
80
+ savebasis savemipsol savesol savestate selectsol setbstat setcallback setcbcutoff setgndata setlb setmipdir setmodcut setsol setub setucbdata stopoptimize
81
+ unloadprob
82
+ writebasis writedirs writeprob writesol
83
+ xor
84
+ )
85
+
86
+ mmxpres_constants = %w(XPRS_OPT XPRS_UNF XPRS_INF XPRS_UNB XPRS_OTH)
87
+
88
+ mmxprs_parameters = %w(XPRS_colorder XPRS_enumduplpol XPRS_enummaxsol XPRS_enumsols XPRS_fullversion XPRS_loadnames XPRS_problem XPRS_probname XPRS_verbose)
89
+
90
+
91
+ ############################################################################################################################
92
+ # mmsystem module elements
93
+ ############################################################################################################################
94
+
95
+ mmsystem_functions = %w(
96
+ addmonths
97
+ copytext cuttext
98
+ deltext
99
+ endswith expandpath
100
+ fcopy fdelete findfiles findtext fmove
101
+ getasnumber getchar getcwd getdate getday getdaynum getdays getdirsep
102
+ getendparse setendparse
103
+ getenv getfsize getfstat getftime gethour getminute getmonth getmsec getpathsep
104
+ getqtype setqtype
105
+ getsecond
106
+ getsepchar setsepchar
107
+ getsize
108
+ getstart setstart
109
+ getsucc setsucc
110
+ getsysinfo getsysstat gettime
111
+ gettmpdir
112
+ gettrim settrim
113
+ getweekday getyear
114
+ inserttext isvalid
115
+ makedir makepath newtar
116
+ newzip nextfield
117
+ openpipe
118
+ parseextn parseint parsereal parsetext pastetext pathmatch pathsplit
119
+ qsort quote
120
+ readtextline regmatch regreplace removedir removefiles
121
+ setchar setdate setday setenv sethour
122
+ setminute setmonth setmsec setsecond settime setyear sleep startswith system
123
+ tarlist textfmt tolower toupper trim
124
+ untar unzip
125
+ ziplist
126
+ )
127
+
128
+ mmsystem_parameters = %w(datefmt datetimefmt monthnames sys_endparse sys_fillchar sys_pid sys_qtype sys_regcache sys_sepchar)
129
+
130
+ ############################################################################################################################
131
+ # mmjobs module elements
132
+ ############################################################################################################################
133
+
134
+ mmjobs_instance_mgmt_functions = %w(
135
+ clearaliases connect
136
+ disconnect
137
+ findxsrvs
138
+ getaliases getbanner gethostalias
139
+ sethostalias
140
+ )
141
+
142
+ mmjobs_model_mgmt_functions = %w(
143
+ compile
144
+ detach
145
+ getannidents getannotations getexitcode getgid getid getnode getrmtid getstatus getuid
146
+ load
147
+ reset resetmodpar run
148
+ setcontrol setdefstream setmodpar setworkdir stop
149
+ unload
150
+ )
151
+
152
+ mmjobs_synchornization_functions = %w(
153
+ dropnextevent
154
+ getclass getfromgid getfromid getfromuid getnextevent getvalue
155
+ isqueueempty
156
+ nullevent
157
+ peeknextevent
158
+ send setgid setuid
159
+ wait waitfor
160
+ )
161
+
162
+ mmjobs_functions = mmjobs_instance_mgmt_functions + mmjobs_model_mgmt_functions + mmjobs_synchornization_functions
163
+
164
+ mmjobs_parameters = %w(conntmpl defaultnode fsrvdelay fsrvnbiter fsrvport jobid keepalive nodenumber parentnumber)
165
+
166
+
167
+ state :whitespace do
168
+ # Spaces
169
+ rule /\s+/m, Text
170
+ # ! Comments
171
+ rule %r((!).*$\n?), Comment::Single
172
+ # (! Comments !)
173
+ rule %r(\(!.*?!\))m, Comment::Multiline
174
+
175
+ end
176
+
177
+
178
+ # From Mosel documentation:
179
+ # Constant strings of characters must be quoted with single (') or double quote (") and may extend over several lines. Strings enclosed in double quotes may contain C-like escape sequences introduced by the 'backslash'
180
+ # character (\a \b \f \n \r \t \v \xxx with xxx being the character code as an octal number).
181
+ # Each sequence is replaced by the corresponding control character (e.g. \n is the `new line' command) or, if no control character exists, by the second character of the sequence itself (e.g. \\ is replaced by '\').
182
+ # The escape sequences are not interpreted if they are contained in strings that are enclosed in single quotes.
183
+
184
+ state :single_quotes do
185
+ rule /'/, Str::Single, :pop!
186
+ rule /[^']+/, Str::Single
187
+ end
188
+
189
+ state :double_quotes do
190
+ rule /"/, Str::Double, :pop!
191
+ rule /(\\"|\\[0-7]{1,3}\D|\\[abfnrtv]|\\\\)/, Str::Escape
192
+ rule /[^"]/, Str::Double
193
+ end
194
+
195
+ state :base do
196
+
197
+ rule %r{"}, Str::Double, :double_quotes
198
+ rule %r{'}, Str::Single, :single_quotes
199
+
200
+ rule %r{((0(x|X)[0-9a-fA-F]*)|(([0-9]+\.?[0-9]*)|(\.[0-9]+))((e|E)(\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?}, Num
201
+ rule %r{[~!@#\$%\^&\*\(\)\+`\-={}\[\]:;<>\?,\.\/\|\\]}, Punctuation
202
+ # rule %r{'([^']|'')*'}, Str
203
+ # rule /"(\\\\|\\"|[^"])*"/, Str
204
+
205
+
206
+
207
+ rule /(true|false)\b/i, Name::Builtin
208
+ rule /\b(#{core_keywords.join('|')})\b/i, Keyword
209
+ rule /\b(#{core_functions.join('|')})\b/, Name::Builtin
210
+
211
+
212
+
213
+ rule /\b(#{mmxprs_functions.join('|')})\b/, Name::Function
214
+ rule /\b(#{mmxpres_constants.join('|')})\b/, Name::Constant
215
+ rule /\b(#{mmxprs_parameters.join('|')})\b/i, Name::Property
216
+
217
+ rule /\b(#{mmsystem_functions.join('|')})\b/i, Name::Function
218
+ rule /\b(#{mmsystem_parameters.join('|')})\b/, Name::Property
219
+
220
+ rule /\b(#{mmjobs_functions.join('|')})\b/i, Name::Function
221
+ rule /\b(#{mmjobs_parameters.join('|')})\b/, Name::Property
222
+
223
+ rule id, Name
224
+ end
225
+
226
+ state :root do
227
+ mixin :whitespace
228
+ mixin :base
229
+ end
230
+ end
231
+ end
232
+ end
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class MXML < RegexLexer
7
+ title "MXML"
8
+ desc "MXML"
9
+ tag 'mxml'
10
+ filenames '*.mxml'
11
+ mimetypes 'application/xv+xml'
12
+
13
+ state :root do
14
+ rule /[^<&]+/, Text
15
+ rule /&\S*?;/, Name::Entity
16
+
17
+ rule /<!\[CDATA\[/m do
18
+ token Comment::Preproc
19
+ push :actionscript_content
20
+ end
21
+
22
+ rule /<!--/, Comment, :comment
23
+ rule /<\?.*?\?>/, Comment::Preproc
24
+ rule /<![^>]*>/, Comment::Preproc
25
+
26
+ rule %r(<\s*[\w:.-]+)m, Name::Tag, :tag # opening tags
27
+ rule %r(<\s*/\s*[\w:.-]+\s*>)m, Name::Tag # closing tags
28
+ end
29
+
30
+ state :comment do
31
+ rule /[^-]+/m, Comment
32
+ rule /-->/, Comment, :pop!
33
+ rule /-/, Comment
34
+ end
35
+
36
+ state :tag do
37
+ rule /\s+/m, Text
38
+ rule /[\w.:-]+\s*=/m, Name::Attribute, :attribute
39
+ rule %r(/?\s*>), Name::Tag, :root
40
+ end
41
+
42
+ state :attribute do
43
+ rule /\s+/m, Text
44
+ rule /(")({|@{)/m do
45
+ groups Str, Punctuation
46
+ push :actionscript_attribute
47
+ end
48
+ rule /".*?"|'.*?'|[^\s>]+/, Str, :tag
49
+ end
50
+
51
+ state :actionscript_content do
52
+ rule /\]\]\>/m, Comment::Preproc, :pop!
53
+ rule /.*?(?=\]\]\>)/m do
54
+ delegate Actionscript
55
+ end
56
+ end
57
+
58
+ state :actionscript_attribute do
59
+ rule /(})(")/m do
60
+ groups Punctuation, Str
61
+ push :tag
62
+ end
63
+ rule /.*?(?=}")/m do
64
+ delegate Actionscript
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,199 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Nasm < RegexLexer
7
+ tag 'nasm'
8
+ filenames '*.asm'
9
+ #mimetypes 'text/x-chdr', 'text/x-csrc'
10
+
11
+ title "Nasm"
12
+ desc "Netwide Assembler"
13
+
14
+ ws = %r((?:\s|;.*?\n/)+)
15
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
16
+
17
+ #todo: pull more instructions from: http://www.nasm.us/doc/nasmdocb.html
18
+ #so far, we have sections 1.1 and 1.2
19
+
20
+ def self.keywords
21
+ @keywords ||= Set.new %w(
22
+ aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts
23
+ call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg
24
+ cmpxchg16b cmpxchg486 cmpxchg8b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div
25
+ dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove
26
+ fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp
27
+ fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr
28
+ fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e
29
+ fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw
30
+ fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos
31
+ fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip
32
+ fucomp fucompp fwait fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc
33
+ incbin insb insd insw int int01 int03 int1 int3 into invd invlpg invlpga invpcid iret
34
+ iretd iretq iretw jcxz jecxz jmp jmpe jrcxz lahf lar lds lea leave les lfence lfs
35
+ lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne
36
+ loopnz loopz lsl lss ltr mfence monitor monitorx mov movd movq movsb movsd movsq movsw
37
+ movsx movsxd movzx mul mwait mwaitx neg nop not or out outsb outsd outsw packssdw
38
+ packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn
39
+ pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc
40
+ pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt
41
+ pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw
42
+ pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch
43
+ prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw
44
+ psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd
45
+ push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdm rdmsr rdpmc rdshr
46
+ rdtsc rdtscp ret retf retn rol ror rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd
47
+ scasq scasw sfence sgdt shl shld shr shrd sidt skinit sldt smi smint smintold smsw
48
+ stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter
49
+ sysexit sysret test ud0 ud1 ud2 ud2a ud2b umov verr verw wbinvd wrmsr wrshr xadd xbts
50
+ xchg xlat xlatb xor
51
+
52
+ cmova cmovae cmovb cmovbe cmovc cmove cmovg cmovge cmovl cmovle cmovna cmovnae cmovnb cmovnbe cmovnc cmovne cmovng cmovnge cmovnl cmovnle cmovno cmovnp cmovns cmovnz cmovo cmovp cmovpe cmovpo cmovs cmovz
53
+
54
+ ja jae jb jbe jc jcxz jecxz je jg jge jl jle jna jnae jnb jnbe jnc jne jng jnge jnl jnle jno jnp jns jnz jo jp jpe jpo js jz
55
+
56
+ seta setae setb setbe setc sete setg setge setl setle setna setnae setnb setnbe setnc setne setng setnge setnl setnle setno setnp setns setnz seto setp setpe setpo sets setz
57
+
58
+ AAA AAD AAM AAS ADC ADD AND ARPL BB0_RESET BB1_RESET BOUND BSF BSR BSWAP BT BTC BTR BTS
59
+ CALL CBW CDQ CDQE CLC CLD CLI CLTS CMC CMP CMPSB CMPSD CMPSQ CMPSW CMPXCHG
60
+ CMPXCHG16B CMPXCHG486 CMPXCHG8B CPUID CPU_READ CPU_WRITE CQO CWD CWDE DAA DAS DEC DIV
61
+ DMINT EMMS ENTER EQU F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX FCMOVB FCMOVBE FCMOVE
62
+ FCMOVNB FCMOVNBE FCMOVNE FCMOVNU FCMOVU FCOM FCOMI FCOMIP FCOMP FCOMPP FCOS FDECSTP
63
+ FDISI FDIV FDIVP FDIVR FDIVRP FEMMS FENI FFREE FFREEP FIADD FICOM FICOMP FIDIV FIDIVR
64
+ FILD FIMUL FINCSTP FINIT FIST FISTP FISTTP FISUB FISUBR FLD FLD1 FLDCW FLDENV FLDL2E
65
+ FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE FNSTCW
66
+ FNSTENV FNSTSW FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FSCALE FSETPM FSIN FSINCOS
67
+ FSQRT FST FSTCW FSTENV FSTP FSTSW FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI FUCOMIP
68
+ FUCOMP FUCOMPP FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1 HLT IBTS ICEBP IDIV IMUL IN INC
69
+ INCBIN INSB INSD INSW INT INT01 INT03 INT1 INT3 INTO INVD INVLPG INVLPGA INVPCID IRET
70
+ IRETD IRETQ IRETW JCXZ JECXZ JMP JMPE JRCXZ LAHF LAR LDS LEA LEAVE LES LFENCE LFS
71
+ LGDT LGS LIDT LLDT LMSW LOADALL LOADALL286 LODSB LODSD LODSQ LODSW LOOP LOOPE LOOPNE
72
+ LOOPNZ LOOPZ LSL LSS LTR MFENCE MONITOR MONITORX MOV MOVD MOVQ MOVSB MOVSD MOVSQ MOVSW
73
+ MOVSX MOVSXD MOVZX MUL MWAIT MWAITX NEG NOP NOT OR OUT OUTSB OUTSD OUTSW PACKSSDW
74
+ PACKSSWB PACKUSWB PADDB PADDD PADDSB PADDSIW PADDSW PADDUSB PADDUSW PADDW PAND PANDN
75
+ PAUSE PAVEB PAVGUSB PCMPEQB PCMPEQD PCMPEQW PCMPGTB PCMPGTD PCMPGTW PDISTIB PF2ID PFACC
76
+ PFADD PFCMPEQ PFCMPGE PFCMPGT PFMAX PFMIN PFMUL PFRCP PFRCPIT1 PFRCPIT2 PFRSQIT1 PFRSQRT
77
+ PFSUB PFSUBR PI2FD PMACHRIW PMADDWD PMAGW PMULHRIW PMULHRWA PMULHRWC PMULHW PMULLW
78
+ PMVGEZB PMVLZB PMVNZB PMVZB POP POPA POPAD POPAW POPF POPFD POPFQ POPFW POR PREFETCH
79
+ PREFETCHW PSLLD PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLQ PSRLW PSUBB PSUBD PSUBSB PSUBSIW
80
+ PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW PUNPCKHDQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLWD
81
+ PUSH PUSHA PUSHAD PUSHAW PUSHF PUSHFD PUSHFQ PUSHFW PXOR RCL RCR RDM RDMSR RDPMC RDSHR
82
+ RDTSC RDTSCP RET RETF RETN ROL ROR RSDC RSLDT RSM RSTS SAHF SAL SALC SAR SBB SCASB SCASD
83
+ SCASQ SCASW SFENCE SGDT SHL SHLD SHR SHRD SIDT SKINIT SLDT SMI SMINT SMINTOLD SMSW
84
+ STC STD STI STOSB STOSD STOSQ STOSW STR SUB SVDC SVLDT SVTS SWAPGS SYSCALL SYSENTER
85
+ SYSEXIT SYSRET TEST UD0 UD1 UD2 UD2A UD2B UMOV VERR VERW WBINVD WRMSR WRSHR XADD XBTS
86
+ XCHG XLAT XLATB XOR
87
+
88
+ CMOVA CMOVAE CMOVB CMOVBE CMOVC CMOVE CMOVG CMOVGE CMOVL CMOVLE CMOVNA CMOVNAE CMOVNB CMOVNBE CMOVNC CMOVNE CMOVNG CMOVNGE CMOVNL CMOVNLE CMOVNO CMOVNP CMOVNS CMOVNZ CMOVO CMOVP CMOVPE CMOVPO CMOVS CMOVZ
89
+
90
+ JA JAE JB JBE JC JCXZ JECXZ JE JG JGE JL JLE JNA JNAE JNB JNBE JNC JNE JNG JNGE JNL JNLE JNO JNP JNS JNZ JO JP JPE JPO JS JZ
91
+
92
+ SETA SETAE SETB SETBE SETC SETE SETG SETGE SETL SETLE SETNA SETNAE SETNB SETNBE SETNC SETNE SETNG SETNGE SETNL SETNLE SETNO SETNP SETNS SETNZ SETO SETP SETPE SETPO SETS SETZ
93
+ )
94
+ end
95
+
96
+ def self.keywords_type
97
+ @keywords_type ||= Set.new %w(
98
+ DB DW DD DQ DT DO DY DZ RESB RESW RESD RESQ REST RESO RESY RESZ
99
+ db dq dd dq dt do dy dz resb resw resd resq rest reso resy resz
100
+ )
101
+ end
102
+
103
+ def self.reserved
104
+ @reserved ||= Set.new %w(
105
+ global extern macro endmacro assign rep endrep section
106
+ GLOBAL EXTERN MACRO ENDMACRO ASSIGN REP ENDREP SECTION
107
+ )
108
+ end
109
+
110
+ def self.builtins
111
+ @builtins ||= []
112
+ end
113
+
114
+ start { push :expr_bol }
115
+
116
+ state :expr_bol do
117
+ mixin :inline_whitespace
118
+ rule(//) { pop! }
119
+ end
120
+
121
+ state :inline_whitespace do
122
+ rule /[ \t\r]+/, Text
123
+ end
124
+
125
+ state :whitespace do
126
+ rule /\n+/m, Text, :expr_bol
127
+ rule %r(//(\\.|.)*?\n), Comment::Single, :expr_bol
128
+ mixin :inline_whitespace
129
+ end
130
+
131
+ state :expr_whitespace do
132
+ rule /\n+/m, Text, :expr_bol
133
+ mixin :whitespace
134
+ end
135
+
136
+ state :root do
137
+ mixin :expr_whitespace
138
+ rule(//) { push :statement }
139
+ rule /^%[a-zA-Z0-9]+/, Comment::Preproc, :statement
140
+
141
+ rule(
142
+ %r(&=|[*]=|/=|\\=|\^=|\+=|-=|<<=|>>=|<<|>>|:=|<=|>=|<>|[-&*/\\^+=<>.]),
143
+ Operator
144
+ )
145
+ rule /;.*/, Comment, :statement
146
+ rule /^[a-zA-Z]+[a-zA-Z0-9]*:/, Name::Function
147
+ rule /;.*/, Comment
148
+ end
149
+
150
+ state :statement do
151
+ mixin :expr_whitespace
152
+ mixin :statements
153
+ rule /;.*/, Comment
154
+ rule /^%[a-zA-Z0-9]+/, Comment::Preproc
155
+ rule /[a-zA-Z]+%[0-9]+:/, Name::Function
156
+ end
157
+
158
+ state :statements do
159
+ mixin :whitespace
160
+ rule /L?"/, Str, :string
161
+ rule /[a-zA-Z]+%[0-9]+:/, Name::Function #labels/subroutines/functions
162
+ rule %r(L?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
163
+ rule /0x[0-9a-f]+[lu]*/i, Num::Hex
164
+ rule /\d+[lu]*/i, Num::Integer
165
+ rule %r(\*/), Error
166
+ rule %r([~&*+=\|?:<>/-]), Operator
167
+ rule /[(),.]/, Punctuation
168
+ rule /\[[a-zA-Z0-9]*\]/, Punctuation
169
+ rule /%[0-9]+/, Keyword::Reserved
170
+ rule /[a-zA-Z]+%[0-9]+/, Name::Function #labels/subroutines/functions
171
+
172
+ #rule /(?<!\.)#{id}/ do |m|
173
+ rule id do |m|
174
+ name = m[0]
175
+
176
+ if self.class.keywords.include? name
177
+ token Keyword
178
+ elsif self.class.keywords_type.include? name
179
+ token Keyword::Type
180
+ elsif self.class.reserved.include? name
181
+ token Keyword::Reserved
182
+ elsif self.class.builtins.include? name
183
+ token Name::Builtin
184
+ else
185
+ token Name
186
+ end
187
+ end
188
+ end
189
+
190
+ state :string do
191
+ rule /"/, Str, :pop!
192
+ rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
193
+ rule /[^\\"\n]+/, Str
194
+ rule /\\\n/, Str
195
+ rule /\\/, Str # stray backslash
196
+ end
197
+ end
198
+ end
199
+ end
@@ -0,0 +1,72 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Nginx < RegexLexer
7
+ title "nginx"
8
+ desc 'configuration files for the nginx web server (nginx.org)'
9
+ tag 'nginx'
10
+ mimetypes 'text/x-nginx-conf'
11
+ filenames 'nginx.conf'
12
+
13
+ id = /[^\s$;{}()#]+/
14
+
15
+ state :root do
16
+ rule /(include)(\s+)([^\s;]+)/ do
17
+ groups Keyword, Text, Name
18
+ end
19
+
20
+ rule id, Keyword, :statement
21
+
22
+ mixin :base
23
+ end
24
+
25
+ state :block do
26
+ rule /}/, Punctuation, :pop!
27
+ rule id, Keyword::Namespace, :statement
28
+ mixin :base
29
+ end
30
+
31
+ state :statement do
32
+ rule /{/ do
33
+ token Punctuation; pop!; push :block
34
+ end
35
+
36
+ rule /;/, Punctuation, :pop!
37
+
38
+ mixin :base
39
+ end
40
+
41
+ state :base do
42
+ rule /\s+/, Text
43
+
44
+ rule /#.*?\n/, Comment::Single
45
+ rule /(?:on|off)\b/, Name::Constant
46
+ rule /[$][\w-]+/, Name::Variable
47
+
48
+ # host/port
49
+ rule /([a-z0-9.-]+)(:)([0-9]+)/i do
50
+ groups Name::Function, Punctuation, Num::Integer
51
+ end
52
+
53
+ # mimetype
54
+ rule %r([a-z-]+/[a-z-]+)i, Name::Class
55
+
56
+ rule /[0-9]+[kmg]?\b/i, Num::Integer
57
+ rule /(~)(\s*)([^\s{]+)/ do
58
+ groups Punctuation, Text, Str::Regex
59
+ end
60
+
61
+ rule /[:=~]/, Punctuation
62
+
63
+ # pathname
64
+ rule %r(/#{id}?), Name
65
+
66
+ rule /[^#\s;{}$\\]+/, Str # catchall
67
+
68
+ rule /[$;]/, Text
69
+ end
70
+ end
71
+ end
72
+ end