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,109 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class SQF < RegexLexer
7
+ tag "sqf"
8
+ filenames "*.sqf"
9
+
10
+ title "SQF"
11
+ desc "Status Quo Function, a Real Virtuality engine scripting language"
12
+
13
+ def self.wordoperators
14
+ @wordoperators ||= Set.new %w(
15
+ and or not
16
+ )
17
+ end
18
+
19
+ def self.initializers
20
+ @initializers ||= Set.new %w(
21
+ private param params
22
+ )
23
+ end
24
+
25
+ def self.controlflow
26
+ @controlflow ||= Set.new %w(
27
+ if then else exitwith switch do case default while for from to step
28
+ foreach
29
+ )
30
+ end
31
+
32
+ def self.constants
33
+ @constants ||= Set.new %w(
34
+ true false player confignull controlnull displaynull grpnull
35
+ locationnull netobjnull objnull scriptnull tasknull teammembernull
36
+ )
37
+ end
38
+
39
+ def self.namespaces
40
+ @namespaces ||= Set.new %w(
41
+ currentnamespace missionnamespace parsingnamespace profilenamespace
42
+ uinamespace
43
+ )
44
+ end
45
+
46
+ def self.diag_commands
47
+ @diag_commands ||= Set.new %w(
48
+ diag_activemissionfsms diag_activesqfscripts diag_activesqsscripts
49
+ diag_activescripts diag_captureframe diag_captureframetofile
50
+ diag_captureslowframe diag_codeperformance diag_drawmode diag_enable
51
+ diag_enabled diag_fps diag_fpsmin diag_frameno diag_lightnewload
52
+ diag_list diag_log diag_logslowframe diag_mergeconfigfile
53
+ diag_recordturretlimits diag_setlightnew diag_ticktime diag_toggle
54
+ )
55
+ end
56
+
57
+ def self.commands
58
+ load Pathname.new(__FILE__).dirname.join("sqf/commands.rb")
59
+ @commands = self.commands
60
+ end
61
+
62
+ state :root do
63
+ # Whitespace
64
+ rule %r"\s+", Text
65
+
66
+ # Preprocessor instructions
67
+ rule %r"/\*.*?\*/"m, Comment::Multiline
68
+ rule %r"//.*\n", Comment::Single
69
+ rule %r"#(define|undef|if(n)?def|else|endif|include)", Comment::Preproc
70
+ rule %r"\\\r?\n", Comment::Preproc
71
+ rule %r"__(EVAL|EXEC|LINE__|FILE__)", Name::Builtin
72
+
73
+ # Literals
74
+ rule %r"\".*?\"", Literal::String
75
+ rule %r"'.*?'", Literal::String
76
+ rule %r"(\$|0x)[0-9a-fA-F]+", Literal::Number::Hex
77
+ rule %r"[0-9]+(\.)?(e[0-9]+)?", Literal::Number::Float
78
+
79
+ # Symbols
80
+ rule %r"[\!\%\&\*\+\-\/\<\=\>\^\|\#]", Operator
81
+ rule %r"[\(\)\{\}\[\]\,\:\;]", Punctuation
82
+
83
+ # Identifiers (variables and functions)
84
+ rule %r"[a-zA-Z0-9_]+" do |m|
85
+ name = m[0].downcase
86
+ if self.class.wordoperators.include? name
87
+ token Operator::Word
88
+ elsif self.class.initializers.include? name
89
+ token Keyword::Declaration
90
+ elsif self.class.controlflow.include? name
91
+ token Keyword::Reserved
92
+ elsif self.class.constants.include? name
93
+ token Keyword::Constant
94
+ elsif self.class.namespaces.include? name
95
+ token Keyword::Namespace
96
+ elsif self.class.diag_commands.include? name
97
+ token Name::Function
98
+ elsif self.class.commands.include? name
99
+ token Name::Function
100
+ elsif %r"_.+" =~ name
101
+ token Name::Variable
102
+ else
103
+ token Name::Variable::Global
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,141 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class SQL < RegexLexer
7
+ title "SQL"
8
+ desc "Structured Query Language, for relational databases"
9
+ tag 'sql'
10
+ filenames '*.sql'
11
+ mimetypes 'text/x-sql'
12
+
13
+ def self.keywords
14
+ @keywords ||= Set.new %w(
15
+ ABORT ABS ABSOLUTE ACCESS ADA ADD ADMIN AFTER AGGREGATE ALIAS
16
+ ALL ALLOCATE ALTER ANALYSE ANALYZE AND ANY ARE AS ASC ASENSITIVE
17
+ ASSERTION ASSIGNMENT ASYMMETRIC AT ATOMIC AUTHORIZATION
18
+ AVG BACKWARD BEFORE BEGIN BETWEEN BITVAR BIT_LENGTH BOTH
19
+ BREADTH BY C CACHE CALL CALLED CARDINALITY CASCADE CASCADED
20
+ CASE CAST CATALOG CATALOG_NAME CHAIN CHARACTERISTICS
21
+ CHARACTER_LENGTH CHARACTER_SET_CATALOG CHARACTER_SET_NAME
22
+ CHARACTER_SET_SCHEMA CHAR_LENGTH CHECK CHECKED CHECKPOINT
23
+ CLASS CLASS_ORIGIN CLOB CLOSE CLUSTER COALSECE COBOL COLLATE
24
+ COLLATION COLLATION_CATALOG COLLATION_NAME COLLATION_SCHEMA
25
+ COLUMN COLUMN_NAME COMMAND_FUNCTION COMMAND_FUNCTION_CODE
26
+ COMMENT COMMIT COMMITTED COMPLETION CONDITION_NUMBER
27
+ CONNECT CONNECTION CONNECTION_NAME CONSTRAINT CONSTRAINTS
28
+ CONSTRAINT_CATALOG CONSTRAINT_NAME CONSTRAINT_SCHEMA
29
+ CONSTRUCTOR CONTAINS CONTINUE CONVERSION CONVERT COPY
30
+ CORRESPONTING COUNT CREATE CREATEDB CREATEUSER CROSS CUBE
31
+ CURRENT CURRENT_DATE CURRENT_PATH CURRENT_ROLE CURRENT_TIME
32
+ CURRENT_TIMESTAMP CURRENT_USER CURSOR CURSOR_NAME CYCLE DATA
33
+ DATABASE DATETIME_INTERVAL_CODE DATETIME_INTERVAL_PRECISION
34
+ DAY DEALLOCATE DECLARE DEFAULT DEFAULTS DEFERRABLE DEFERRED
35
+ DEFINED DEFINER DELETE DELIMITER DELIMITERS DEREF DESC DESCRIBE
36
+ DESCRIPTOR DESTROY DESTRUCTOR DETERMINISTIC DIAGNOSTICS
37
+ DICTIONARY DISCONNECT DISPATCH DISTINCT DO DOMAIN DROP
38
+ DYNAMIC DYNAMIC_FUNCTION DYNAMIC_FUNCTION_CODE EACH ELSE
39
+ ENCODING ENCRYPTED END END-EXEC EQUALS ESCAPE EVERY EXCEPT
40
+ ESCEPTION EXCLUDING EXCLUSIVE EXEC EXECUTE EXISTING EXISTS
41
+ EXPLAIN EXTERNAL EXTRACT FALSE FETCH FINAL FIRST FOR FORCE
42
+ FOREIGN FORTRAN FORWARD FOUND FREE FREEZE FROM FULL FUNCTION
43
+ G GENERAL GENERATED GET GLOBAL GO GOTO GRANT GRANTED GROUP
44
+ GROUPING HANDLER HAVING HIERARCHY HOLD HOST IDENTITY IGNORE
45
+ ILIKE IMMEDIATE IMMUTABLE IMPLEMENTATION IMPLICIT IN INCLUDING
46
+ INCREMENT INDEX INDITCATOR INFIX INHERITS INITIALIZE INITIALLY
47
+ INNER INOUT INPUT INSENSITIVE INSERT INSTANTIABLE INSTEAD
48
+ INTERSECT INTO INVOKER IS ISNULL ISOLATION ITERATE JOIN KEY
49
+ KEY_MEMBER KEY_TYPE LANCOMPILER LANGUAGE LARGE LAST LATERAL
50
+ LEADING LEFT LENGTH LESS LEVEL LIKE LIMIT LISTEN LOAD LOCAL
51
+ LOCALTIME LOCALTIMESTAMP LOCATION LOCATOR LOCK LOWER MAP MATCH
52
+ MAX MAXVALUE MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MESSAGE_TEXT
53
+ METHOD MIN MINUTE MINVALUE MOD MODE MODIFIES MODIFY MONTH
54
+ MORE MOVE MUMPS NAMES NATIONAL NATURAL NCHAR NCLOB NEW NEXT
55
+ NO NOCREATEDB NOCREATEUSER NONE NOT NOTHING NOTIFY NOTNULL
56
+ NULL NULLABLE NULLIF OBJECT OCTET_LENGTH OF OFF OFFSET OIDS
57
+ OLD ON ONLY OPEN OPERATION OPERATOR OPTION OPTIONS OR ORDER
58
+ ORDINALITY OUT OUTER OUTPUT OVERLAPS OVERLAY OVERRIDING
59
+ OWNER PAD PARAMETER PARAMETERS PARAMETER_MODE PARAMATER_NAME
60
+ PARAMATER_ORDINAL_POSITION PARAMETER_SPECIFIC_CATALOG
61
+ PARAMETER_SPECIFIC_NAME PARAMATER_SPECIFIC_SCHEMA PARTIAL PASCAL
62
+ PENDANT PLACING PLI POSITION POSTFIX PRECISION PREFIX PREORDER
63
+ PREPARE PRESERVE PRIMARY PRIOR PRIVILEGES PROCEDURAL PROCEDURE
64
+ PUBLIC READ READS RECHECK RECURSIVE REF REFERENCES REFERENCING
65
+ REINDEX RELATIVE RENAME REPEATABLE REPLACE RESET RESTART
66
+ RESTRICT RESULT RETURN RETURNED_LENGTH RETURNED_OCTET_LENGTH
67
+ RETURNED_SQLSTATE RETURNS REVOKE RIGHT ROLE ROLLBACK ROLLUP
68
+ ROUTINE ROUTINE_CATALOG ROUTINE_NAME ROUTINE_SCHEMA ROW ROWS
69
+ ROW_COUNT RULE SAVE_POINT SCALE SCHEMA SCHEMA_NAME SCOPE SCROLL
70
+ SEARCH SECOND SECURITY SELECT SELF SENSITIVE SERIALIZABLE
71
+ SERVER_NAME SESSION SESSION_USER SET SETOF SETS SHARE SHOW
72
+ SIMILAR SIMPLE SIZE SOME SOURCE SPACE SPECIFIC SPECIFICTYPE
73
+ SPECIFIC_NAME SQL SQLCODE SQLERROR SQLEXCEPTION SQLSTATE
74
+ SQLWARNINIG STABLE START STATE STATEMENT STATIC STATISTICS
75
+ STDIN STDOUT STORAGE STRICT STRUCTURE STYPE SUBCLASS_ORIGIN
76
+ SUBLIST SUBSTRING SUM SYMMETRIC SYSID SYSTEM SYSTEM_USER
77
+ TABLE TABLE_NAME TEMP TEMPLATE TEMPORARY TERMINATE THAN THEN
78
+ TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TO TOAST TRAILING
79
+ TRANSATION TRANSACTIONS_COMMITTED TRANSACTIONS_ROLLED_BACK
80
+ TRANSATION_ACTIVE TRANSFORM TRANSFORMS TRANSLATE TRANSLATION
81
+ TREAT TRIGGER TRIGGER_CATALOG TRIGGER_NAME TRIGGER_SCHEMA TRIM
82
+ TRUE TRUNCATE TRUSTED TYPE UNCOMMITTED UNDER UNENCRYPTED UNION
83
+ UNIQUE UNKNOWN UNLISTEN UNNAMED UNNEST UNTIL UPDATE UPPER
84
+ USAGE USER USER_DEFINED_TYPE_CATALOG USER_DEFINED_TYPE_NAME
85
+ USER_DEFINED_TYPE_SCHEMA USING VACUUM VALID VALIDATOR VALUES
86
+ VARIABLE VERBOSE VERSION VIEW VOLATILE WHEN WHENEVER WHERE
87
+ WITH WITHOUT WORK WRITE YEAR ZONE
88
+ )
89
+ end
90
+
91
+ state :root do
92
+ rule /\s+/m, Text
93
+ rule /--.*/, Comment::Single
94
+ rule %r(/\*), Comment::Multiline, :multiline_comments
95
+ rule /\d+/, Num::Integer
96
+ rule /'/, Str::Single, :single_string
97
+ rule /"/, Name::Variable, :double_string
98
+ rule /`/, Name::Variable, :backtick
99
+
100
+ rule /\w[\w\d]*/ do |m|
101
+ if self.class.keywords.include? m[0].upcase
102
+ token Keyword
103
+ else
104
+ token Name
105
+ end
106
+ end
107
+
108
+ rule %r([+*/<>=~!@#%^&|?^-]), Operator
109
+ rule /[;:()\[\],.]/, Punctuation
110
+ end
111
+
112
+ state :multiline_comments do
113
+ rule %r(/[*]), Comment::Multiline, :multiline_comments
114
+ rule %r([*]/), Comment::Multiline, :pop!
115
+ rule %r([^/*]+), Comment::Multiline
116
+ rule %r([/*]), Comment::Multiline
117
+ end
118
+
119
+ state :backtick do
120
+ rule /\\./, Str::Escape
121
+ rule /``/, Str::Escape
122
+ rule /`/, Name::Variable, :pop!
123
+ rule /[^\\`]+/, Name::Variable
124
+ end
125
+
126
+ state :single_string do
127
+ rule /\\./, Str::Escape
128
+ rule /''/, Str::Escape
129
+ rule /'/, Str::Single, :pop!
130
+ rule /[^\\']+/, Str::Single
131
+ end
132
+
133
+ state :double_string do
134
+ rule /\\./, Str::Escape
135
+ rule /""/, Str::Escape
136
+ rule /"/, Name::Variable, :pop!
137
+ rule /[^\\"]+/, Name::Variable
138
+ end
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,182 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Swift < RegexLexer
7
+ tag 'swift'
8
+ filenames '*.swift'
9
+
10
+ title "Swift"
11
+ desc 'Multi paradigm, compiled programming language developed by Apple for iOS and OS X development. (developer.apple.com/swift)'
12
+
13
+ id_head = /_|(?!\p{Mc})\p{Alpha}|[^\u0000-\uFFFF]/
14
+ id_rest = /[\p{Alnum}_]|[^\u0000-\uFFFF]/
15
+ id = /#{id_head}#{id_rest}*/
16
+
17
+ keywords = Set.new %w(
18
+ break case continue default do else fallthrough if in for return switch where while try catch throw guard defer repeat
19
+
20
+ as dynamicType is new super self Self Type __COLUMN__ __FILE__ __FUNCTION__ __LINE__
21
+
22
+ associativity didSet get infix inout mutating none nonmutating operator override postfix precedence prefix set unowned weak willSet throws rethrows precedencegroup
23
+ )
24
+
25
+ declarations = Set.new %w(
26
+ class deinit enum convenience extension final func import init internal lazy let optional private protocol public required static struct subscript typealias var dynamic indirect associatedtype open fileprivate
27
+ )
28
+
29
+ constants = Set.new %w(
30
+ true false nil
31
+ )
32
+
33
+ start { push :bol }
34
+
35
+ # beginning of line
36
+ state :bol do
37
+ rule /#.*/, Comment::Preproc
38
+
39
+ mixin :inline_whitespace
40
+
41
+ rule(//) { pop! }
42
+ end
43
+
44
+ state :inline_whitespace do
45
+ rule /\s+/m, Text
46
+ mixin :has_comments
47
+ end
48
+
49
+ state :whitespace do
50
+ rule /\n+/m, Text, :bol
51
+ rule %r(\/\/.*?$), Comment::Single, :bol
52
+ mixin :inline_whitespace
53
+ end
54
+
55
+ state :has_comments do
56
+ rule %r(/[*]), Comment::Multiline, :nested_comment
57
+ end
58
+
59
+ state :nested_comment do
60
+ mixin :has_comments
61
+ rule %r([*]/), Comment::Multiline, :pop!
62
+ rule %r([^*/]+)m, Comment::Multiline
63
+ rule /./, Comment::Multiline
64
+ end
65
+
66
+ state :root do
67
+ mixin :whitespace
68
+ rule /\$(([1-9]\d*)?\d)/, Name::Variable
69
+
70
+ rule %r{[()\[\]{}:;,?\\]}, Punctuation
71
+ rule %r([-/=+*%<>!&|^.~]+), Operator
72
+ rule /@?"/, Str, :dq
73
+ rule /'(\\.|.)'/, Str::Char
74
+ rule /(\d+\*|\d*\.\d+)(e[+-]?[0-9]+)?/i, Num::Float
75
+ rule /\d+e[+-]?[0-9]+/i, Num::Float
76
+ rule /0_?[0-7]+(?:_[0-7]+)*/, Num::Oct
77
+ rule /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/, Num::Hex
78
+ rule /0b[01]+(?:_[01]+)*/, Num::Bin
79
+ rule %r{[\d]+(?:_\d+)*}, Num::Integer
80
+
81
+ rule /@#{id}(\([^)]+\))?/, Keyword::Declaration
82
+
83
+ rule /(private|internal)(\([ ]*)(\w+)([ ]*\))/ do |m|
84
+ if m[3] == 'set'
85
+ token Keyword::Declaration
86
+ else
87
+ groups Keyword::Declaration, Keyword::Declaration, Error, Keyword::Declaration
88
+ end
89
+ end
90
+
91
+ rule /(unowned\([ ]*)(\w+)([ ]*\))/ do |m|
92
+ if m[2] == 'safe' || m[2] == 'unsafe'
93
+ token Keyword::Declaration
94
+ else
95
+ groups Keyword::Declaration, Error, Keyword::Declaration
96
+ end
97
+ end
98
+
99
+ rule /#available\([^)]+\)/, Keyword::Declaration
100
+
101
+ rule /(#(?:selector|keyPath)\()([^)]+?(?:[(].*?[)])?)(\))/ do
102
+ groups Keyword::Declaration, Name::Function, Keyword::Declaration
103
+ end
104
+
105
+ rule /#(line|file|column|function|dsohandle)/, Keyword::Declaration
106
+
107
+ rule /(let|var)\b(\s*)(#{id})/ do
108
+ groups Keyword, Text, Name::Variable
109
+ end
110
+
111
+ rule /(let|var)\b(\s*)([(])/ do
112
+ groups Keyword, Text, Punctuation
113
+ push :tuple
114
+ end
115
+
116
+ rule /(?!\b(if|while|for|private|internal|unowned|switch|case)\b)\b#{id}(?=(\?|!)?\s*[(])/ do |m|
117
+ if m[0] =~ /^[[:upper:]]/
118
+ token Keyword::Type
119
+ else
120
+ token Name::Function
121
+ end
122
+ end
123
+
124
+ rule /as[?!]?(?=\s)/, Keyword
125
+ rule /try[!]?(?=\s)/, Keyword
126
+
127
+ rule /(#?(?!default)(?![[:upper:]])#{id})(\s*)(:)/ do
128
+ groups Name::Variable, Text, Punctuation
129
+ end
130
+
131
+ rule id do |m|
132
+ if keywords.include? m[0]
133
+ token Keyword
134
+ elsif declarations.include? m[0]
135
+ token Keyword::Declaration
136
+ elsif constants.include? m[0]
137
+ token Keyword::Constant
138
+ elsif m[0] =~ /^[[:upper:]]/
139
+ token Keyword::Type
140
+ else
141
+ token Name
142
+ end
143
+ end
144
+
145
+ rule /(`)(#{id})(`)/ do
146
+ groups Punctuation, Name::Variable, Punctuation
147
+ end
148
+ end
149
+
150
+ state :tuple do
151
+ rule /(#{id})/, Name::Variable
152
+ rule /(`)(#{id})(`)/ do
153
+ groups Punctuation, Name::Variable, Punctuation
154
+ end
155
+ rule /,/, Punctuation
156
+ rule /[(]/, Punctuation, :push
157
+ rule /[)]/, Punctuation, :pop!
158
+ mixin :inline_whitespace
159
+ end
160
+
161
+ state :dq do
162
+ rule /\\[\\0tnr'"]/, Str::Escape
163
+ rule /\\[(]/, Str::Escape, :interp
164
+ rule /\\u\{\h{1,8}\}/, Str::Escape
165
+ rule /[^\\"]+/, Str
166
+ rule /"/, Str, :pop!
167
+ end
168
+
169
+ state :interp do
170
+ rule /[(]/, Punctuation, :interp_inner
171
+ rule /[)]/, Str::Escape, :pop!
172
+ mixin :root
173
+ end
174
+
175
+ state :interp_inner do
176
+ rule /[(]/, Punctuation, :push
177
+ rule /[)]/, Punctuation, :pop!
178
+ mixin :root
179
+ end
180
+ end
181
+ end
182
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Tap < RegexLexer
6
+ title 'TAP'
7
+ desc 'Test Anything Protocol'
8
+ tag 'tap'
9
+ aliases 'tap'
10
+ filenames '*.tap'
11
+
12
+ mimetypes 'text/x-tap', 'application/x-tap'
13
+
14
+ state :root do
15
+ # A TAP version may be specified.
16
+ rule /^TAP version \d+\n/, Name::Namespace
17
+
18
+ # Specify a plan with a plan line.
19
+ rule /^1\.\.\d+/, Keyword::Declaration, :plan
20
+
21
+ # A test failure
22
+ rule /^(not ok)([^\S\n]*)(\d*)/ do
23
+ groups Generic::Error, Text, Literal::Number::Integer
24
+ push :test
25
+ end
26
+
27
+ # A test success
28
+ rule /^(ok)([^\S\n]*)(\d*)/ do
29
+ groups Keyword::Reserved, Text, Literal::Number::Integer
30
+ push :test
31
+ end
32
+
33
+ # Diagnostics start with a hash.
34
+ rule /^#.*\n/, Comment
35
+
36
+ # TAP's version of an abort statement.
37
+ rule /^Bail out!.*\n/, Generic::Error
38
+
39
+ # # TAP ignores any unrecognized lines.
40
+ rule /^.*\n/, Text
41
+ end
42
+
43
+ state :plan do
44
+ # Consume whitespace (but not newline).
45
+ rule /[^\S\n]+/, Text
46
+
47
+ # A plan may have a directive with it.
48
+ rule /#/, Comment, :directive
49
+
50
+ # Or it could just end.
51
+ rule /\n/, Comment, :pop!
52
+
53
+ # Anything else is wrong.
54
+ rule /.*\n/, Generic::Error, :pop!
55
+ end
56
+
57
+ state :test do
58
+ # Consume whitespace (but not newline).
59
+ rule /[^\S\n]+/, Text
60
+
61
+ # A test may have a directive with it.
62
+ rule /#/, Comment, :directive
63
+
64
+ rule /\S+/, Text
65
+
66
+ rule /\n/, Text, :pop!
67
+ end
68
+
69
+ state :directive do
70
+ # Consume whitespace (but not newline).
71
+ rule /[^\S\n]+/, Comment
72
+
73
+ # Extract todo items.
74
+ rule /(?i)\bTODO\b/, Comment::Preproc
75
+
76
+ # Extract skip items.
77
+ rule /(?i)\bSKIP\S*/, Comment::Preproc
78
+
79
+ rule /\S+/, Comment
80
+
81
+ rule /\n/ do
82
+ token Comment
83
+ pop! 2
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+