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,138 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Gherkin < RegexLexer
7
+ tag 'gherkin'
8
+ aliases 'cucumber', 'behat'
9
+
10
+ title "Gherkin"
11
+ desc 'A business-readable spec DSL ( github.com/cucumber/cucumber/wiki/Gherkin )'
12
+
13
+ filenames '*.feature'
14
+ mimetypes 'text/x-gherkin'
15
+
16
+ def self.detect?(text)
17
+ return true if text.shebang? 'cucumber'
18
+ end
19
+
20
+ # self-modifying method that loads the keywords file
21
+ def self.keywords
22
+ load Pathname.new(__FILE__).dirname.join('gherkin/keywords.rb')
23
+ keywords
24
+ end
25
+
26
+ def self.step_regex
27
+ # in Gherkin's config, keywords that end in < don't
28
+ # need word boundaries at the ends - all others do.
29
+ @step_regex ||= Regexp.new(
30
+ keywords[:step].map do |w|
31
+ if w.end_with? '<'
32
+ Regexp.escape(w.chop)
33
+ else
34
+ "#{Regexp.escape(w)}\\b"
35
+ end
36
+ end.join('|')
37
+ )
38
+ end
39
+
40
+ rest_of_line = /.*?(?=[#\n])/
41
+
42
+ state :basic do
43
+ rule %r(#.*$), Comment
44
+ rule /[ \r\t]+/, Text
45
+ end
46
+
47
+ state :root do
48
+ mixin :basic
49
+ rule %r(\n), Text
50
+ rule %r(""".*?""")m, Str
51
+ rule %r(@[^\s@]+), Name::Tag
52
+ mixin :has_table
53
+ mixin :has_examples
54
+ end
55
+
56
+ state :has_scenarios do
57
+ rule %r((.*?)(:)) do |m|
58
+ reset_stack
59
+
60
+ keyword = m[1]
61
+ keyword_tok = if self.class.keywords[:element].include? keyword
62
+ push :description; Keyword::Namespace
63
+ elsif self.class.keywords[:feature].include? keyword
64
+ push :feature_description; Keyword::Declaration
65
+ elsif self.class.keywords[:examples].include? keyword
66
+ push :example_description; Name::Namespace
67
+ else
68
+ Error
69
+ end
70
+
71
+ groups keyword_tok, Punctuation
72
+ end
73
+ end
74
+
75
+ state :has_examples do
76
+ mixin :has_scenarios
77
+ rule Gherkin.step_regex, Name::Function do
78
+ token Name::Function
79
+ reset_stack; push :step
80
+ end
81
+ end
82
+
83
+ state :has_table do
84
+ rule(/(?=[|])/) { push :table_header }
85
+ end
86
+
87
+ state :table_header do
88
+ rule /[^|\s]+/, Name::Variable
89
+ rule /\n/ do
90
+ token Text
91
+ goto :table
92
+ end
93
+ mixin :table
94
+ end
95
+
96
+ state :table do
97
+ mixin :basic
98
+ rule /\n/, Text, :table_bol
99
+ rule /[|]/, Punctuation
100
+ rule /[^|\s]+/, Name
101
+ end
102
+
103
+ state :table_bol do
104
+ rule(/(?=\s*[^\s|])/) { reset_stack }
105
+ rule(//) { pop! }
106
+ end
107
+
108
+ state :description do
109
+ mixin :basic
110
+ mixin :has_examples
111
+ rule /\n/, Text
112
+ rule rest_of_line, Text
113
+ end
114
+
115
+ state :feature_description do
116
+ mixin :basic
117
+ mixin :has_scenarios
118
+ rule /\n/, Text
119
+ rule rest_of_line, Text
120
+ end
121
+
122
+ state :example_description do
123
+ mixin :basic
124
+ mixin :has_table
125
+ rule /\n/, Text
126
+ rule rest_of_line, Text
127
+ end
128
+
129
+ state :step do
130
+ mixin :basic
131
+ rule /<.*?>/, Name::Variable
132
+ rule /".*?"/, Str
133
+ rule /\S+/, Text
134
+ rule rest_of_line, Text, :pop!
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,136 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'c.rb'
7
+
8
+ # This file defines the GLSL language lexer to the Rouge
9
+ # syntax highlighter.
10
+ #
11
+ # Author: Sri Harsha Chilakapati
12
+ class Glsl < C
13
+ tag 'glsl'
14
+ filenames '*.glsl', '*.frag', '*.vert', '*.geom', '*.vs', '*.gs', '*.shader'
15
+ mimetypes 'x-shader/x-vertex', 'x-shader/x-fragment', 'x-shader/x-geometry'
16
+
17
+ title "GLSL"
18
+ desc "The GLSL shader language"
19
+
20
+ # optional comment or whitespace
21
+ ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
22
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
23
+
24
+ def self.keywords
25
+ @keywords ||= Set.new %w(
26
+ attribute const uniform varying
27
+ layout
28
+ centroid flat smooth noperspective
29
+ patch sample
30
+ break continue do for while switch case default
31
+ if else
32
+ subroutine
33
+ in out inout
34
+ invariant
35
+ discard return struct precision
36
+ )
37
+ end
38
+
39
+ def self.keywords_type
40
+ @keywords_type ||= Set.new %w(
41
+ float double int void bool true false
42
+ lowp mediump highp
43
+ mat2 mat3 mat4 dmat2 dmat3 dmat4
44
+ mat2x2 mat2x3 mat2x4 dmat2x2 dmat2x3 dmat2x4
45
+ mat3x2 mat3x3 mat3x4 dmat3x2 dmat3x3 dmat3x4
46
+ mat4x2 mat4x3 mat4x4 dmat4x2 dmat4x3 dmat4x4
47
+ vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 dvec2 dvec3 dvec4
48
+ uint uvec2 uvec3 uvec4
49
+ sampler1D sampler2D sampler3D samplerCube
50
+ sampler1DShadow sampler2DShadow samplerCubeShadow
51
+ sampler1DArray sampler2DArray
52
+ sampler1DArrayShadow sampler2DArrayShadow
53
+ isampler1D isampler2D isampler3D isamplerCube
54
+ isampler1DArray isampler2DArray
55
+ usampler1D usampler2D usampler3D usamplerCube
56
+ usampler1DArray usampler2DArray
57
+ sampler2DRect sampler2DRectShadow isampler2DRect usampler2DRect
58
+ samplerBuffer isamplerBuffer usamplerBuffer
59
+ sampler2DMS isampler2DMS usampler2DMS
60
+ sampler2DMSArray isampler2DMSArray usampler2DMSArray
61
+ samplerCubeArray samplerCubeArrayShadow isamplerCubeArray usamplerCubeArray
62
+ )
63
+ end
64
+
65
+ def self.reserved
66
+ @reserved ||= Set.new %w(
67
+ common partition active
68
+ asm
69
+ class union enum typedef template this packed
70
+ goto
71
+ inline noinline volatile public static extern external interface
72
+ long short half fixed unsigned superp
73
+ input output
74
+ hvec2 hvec3 hvec4 fvec2 fvec3 fvec4
75
+ sampler3DRect
76
+ filter
77
+ image1D image2D image3D imageCube
78
+ iimage1D iimage2D iimage3D iimageCube
79
+ uimage1D uimage2D uimage3D uimageCube
80
+ image1DArray image2DArray
81
+ iimage1DArray iimage2DArray uimage1DArray uimage2DArray
82
+ image1DShadow image2DShadow
83
+ image1DArrayShadow image2DArrayShadow
84
+ imageBuffer iimageBuffer uimageBuffer
85
+ sizeof cast
86
+ namespace using
87
+ row_major
88
+ )
89
+ end
90
+
91
+ def self.builtins
92
+ @builtins ||= Set.new %w(
93
+ gl_VertexID gl_InstanceID gl_PerVertex gl_Position gl_PointSize gl_ClipDistance
94
+ gl_PrimitiveIDIn gl_InvocationID gl_PrimitiveID gl_Layer gl_ViewportIndex
95
+ gl_MaxPatchVertices gl_PatchVerticesIn gl_TessLevelOuter gl_TessLevelInner
96
+ gl_TessCoord gl_FragCoord gl_FrontFacing gl_PointCoord gl_SampleID gl_SamplePosition
97
+ gl_FragColor gl_FragData gl_MaxDrawBuffers gl_FragDepth gl_SampleMask
98
+ gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor
99
+ gl_TexCoord gl_FogFragCoord gl_Color gl_SecondaryColor gl_Normal gl_VertexID
100
+ gl_MultiTexCord0 gl_MultiTexCord1 gl_MultiTexCord2 gl_MultiTexCord3
101
+ gl_MultiTexCord4 gl_MultiTexCord5 gl_MultiTexCord6 gl_MultiTexCord7
102
+ gl_FogCoord gl_MaxVertexAttribs gl_MaxVertexUniformComponents
103
+ gl_MaxVaryingFloats gl_MaxVaryingComponents gl_MaxVertexOutputComponents
104
+ gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents
105
+ gl_MaxFragmentInputComponents gl_MaxVertexTextureImageUnits
106
+ gl_MaxCombinedTextureImageUnits gl_MaxTextureImageUnits
107
+ gl_MaxFragmentUniformComponents gl_MaxClipDistances
108
+ gl_MaxGeometryTextureImageUnits gl_MaxGeometryUniformComponents
109
+ gl_MaxGeometryVaryingComponents gl_MaxTessControlInputComponents
110
+ gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits
111
+ gl_MaxTessControlUniformComponents gl_MaxTessControlTotalOutputComponents
112
+ gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents
113
+ gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents
114
+ gl_MaxTessPatchComponents gl_MaxTessGenLevel gl_MaxViewports
115
+ gl_MaxVertexUniformVectors gl_MaxFragmentUniformVectors gl_MaxVaryingVectors
116
+ gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxClipPlanes gl_DepthRange
117
+ gl_DepthRangeParameters gl_ModelViewMatrix gl_ProjectionMatrix
118
+ gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix
119
+ gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse
120
+ gl_TextureMatrixInverse gl_ModelViewMatrixTranspose
121
+ gl_ModelViewProjectionMatrixTranspose gl_TextureMatrixTranspose
122
+ gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose
123
+ gl_ModelViewProjectionMatrixInverseTranspose
124
+ gl_TextureMatrixInverseTranspose gl_NormalScale gl_ClipPlane gl_PointParameters
125
+ gl_Point gl_MaterialParameters gl_FrontMaterial gl_BackMaterial
126
+ gl_LightSourceParameters gl_LightSource gl_MaxLights gl_LightModelParameters
127
+ gl_LightModel gl_LightModelProducts gl_FrontLightModelProduct
128
+ gl_BackLightModelProduct gl_LightProducts gl_FrontLightProduct
129
+ gl_BackLightProduct gl_TextureEnvColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR
130
+ gl_EyePlaneQ gl_ObjectPlaneS gl_ObjectPlaneT gl_ObjectPlaneR gl_ObjectPlaneQ
131
+ gl_FogParameters gl_Fog
132
+ )
133
+ end
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,175 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Go < RegexLexer
7
+ title "Go"
8
+ desc 'The Go programming language (http://golang.org)'
9
+ tag 'go'
10
+ aliases 'go', 'golang'
11
+ filenames '*.go'
12
+
13
+ mimetypes 'text/x-go', 'application/x-go'
14
+
15
+ # Characters
16
+
17
+ WHITE_SPACE = /[\s\t\r\n]+/
18
+
19
+ NEWLINE = /\n/
20
+ UNICODE_CHAR = /[^\n]/
21
+ UNICODE_LETTER = /[[:alpha:]]/
22
+ UNICODE_DIGIT = /[[:digit:]]/
23
+
24
+ # Letters and digits
25
+
26
+ LETTER = /#{UNICODE_LETTER}|_/
27
+ DECIMAL_DIGIT = /[0-9]/
28
+ OCTAL_DIGIT = /[0-7]/
29
+ HEX_DIGIT = /[0-9A-Fa-f]/
30
+
31
+ # Comments
32
+
33
+ LINE_COMMENT = /\/\/(?:(?!#{NEWLINE}).)*/
34
+ GENERAL_COMMENT = /\/\*(?:(?!\*\/).)*\*\//m
35
+ COMMENT = /#{LINE_COMMENT}|#{GENERAL_COMMENT}/
36
+
37
+ # Keywords
38
+
39
+ KEYWORD = /\b(?:
40
+ break | default | func
41
+ | interface | select | case
42
+ | defer | go | map
43
+ | struct | chan | else
44
+ | goto | package | switch
45
+ | const | fallthrough | if
46
+ | range | type | continue
47
+ | for | import | return
48
+ | var
49
+ )\b/x
50
+
51
+ # Identifiers
52
+
53
+ IDENTIFIER = / (?!#{KEYWORD})
54
+ #{LETTER}(?:#{LETTER}|#{UNICODE_DIGIT})* /x
55
+
56
+ # Operators and delimiters
57
+
58
+ OPERATOR = / \+= | \+\+ | \+ | &\^= | &\^
59
+ | &= | && | & | == | =
60
+ | \!= | \! | -= | -- | -
61
+ | \|= | \|\| | \| | <= | <-
62
+ | <<= | << | < | \*= | \*
63
+ | \^= | \^ | >>= | >> | >=
64
+ | > | \/ | \/= | := | %
65
+ | %= | \.\.\. | \. | :
66
+ /x
67
+
68
+ SEPARATOR = / \( | \) | \[ | \] | \{
69
+ | \} | , | ;
70
+ /x
71
+
72
+ # Integer literals
73
+
74
+ DECIMAL_LIT = /[0-9]#{DECIMAL_DIGIT}*/
75
+ OCTAL_LIT = /0#{OCTAL_DIGIT}*/
76
+ HEX_LIT = /0[xX]#{HEX_DIGIT}+/
77
+ INT_LIT = /#{HEX_LIT}|#{DECIMAL_LIT}|#{OCTAL_LIT}/
78
+
79
+ # Floating-point literals
80
+
81
+ DECIMALS = /#{DECIMAL_DIGIT}+/
82
+ EXPONENT = /[eE][+\-]?#{DECIMALS}/
83
+ FLOAT_LIT = / #{DECIMALS} \. #{DECIMALS}? #{EXPONENT}?
84
+ | #{DECIMALS} #{EXPONENT}
85
+ | \. #{DECIMALS} #{EXPONENT}?
86
+ /x
87
+
88
+ # Imaginary literals
89
+
90
+ IMAGINARY_LIT = /(?:#{DECIMALS}|#{FLOAT_LIT})i/
91
+
92
+ # Rune literals
93
+
94
+ ESCAPED_CHAR = /\\[abfnrtv\\'"]/
95
+ LITTLE_U_VALUE = /\\u#{HEX_DIGIT}{4}/
96
+ BIG_U_VALUE = /\\U#{HEX_DIGIT}{8}/
97
+ UNICODE_VALUE = / #{UNICODE_CHAR} | #{LITTLE_U_VALUE}
98
+ | #{BIG_U_VALUE} | #{ESCAPED_CHAR}
99
+ /x
100
+ OCTAL_BYTE_VALUE = /\\#{OCTAL_DIGIT}{3}/
101
+ HEX_BYTE_VALUE = /\\x#{HEX_DIGIT}{2}/
102
+ BYTE_VALUE = /#{OCTAL_BYTE_VALUE}|#{HEX_BYTE_VALUE}/
103
+ CHAR_LIT = /'(?:#{UNICODE_VALUE}|#{BYTE_VALUE})'/
104
+ ESCAPE_SEQUENCE = / #{ESCAPED_CHAR}
105
+ | #{LITTLE_U_VALUE}
106
+ | #{BIG_U_VALUE}
107
+ | #{HEX_BYTE_VALUE}
108
+ /x
109
+
110
+ # String literals
111
+
112
+ RAW_STRING_LIT = /`(?:#{UNICODE_CHAR}|#{NEWLINE})*`/
113
+ INTERPRETED_STRING_LIT = / "(?: (?!")
114
+ (?: #{UNICODE_VALUE} | #{BYTE_VALUE} )
115
+ )*" /x
116
+ STRING_LIT = /#{RAW_STRING_LIT}|#{INTERPRETED_STRING_LIT}/
117
+
118
+ # Predeclared identifiers
119
+
120
+ PREDECLARED_TYPES = /\b(?:
121
+ bool | byte | complex64
122
+ | complex128 | error | float32
123
+ | float64 | int8 | int16
124
+ | int32 | int64 | int
125
+ | rune | string | uint8
126
+ | uint16 | uint32 | uint64
127
+ | uintptr | uint
128
+ )\b/x
129
+
130
+ PREDECLARED_CONSTANTS = /\b(?:true|false|iota|nil)\b/
131
+
132
+ PREDECLARED_FUNCTIONS = /\b(?:
133
+ append | cap | close | complex
134
+ | copy | delete | imag | len
135
+ | make | new | panic | print
136
+ | println | real | recover
137
+ )\b/x
138
+
139
+ state :simple_tokens do
140
+ rule(COMMENT, Comment)
141
+ rule(KEYWORD, Keyword)
142
+ rule(PREDECLARED_TYPES, Keyword::Type)
143
+ rule(PREDECLARED_FUNCTIONS, Name::Builtin)
144
+ rule(PREDECLARED_CONSTANTS, Name::Constant)
145
+ rule(IMAGINARY_LIT, Num)
146
+ rule(FLOAT_LIT, Num)
147
+ rule(INT_LIT, Num)
148
+ rule(CHAR_LIT, Str::Char)
149
+ rule(OPERATOR, Operator)
150
+ rule(SEPARATOR, Punctuation)
151
+ rule(IDENTIFIER, Name)
152
+ rule(WHITE_SPACE, Other)
153
+ end
154
+
155
+ state :root do
156
+ mixin :simple_tokens
157
+
158
+ rule(/`/, Str, :raw_string)
159
+ rule(/"/, Str, :interpreted_string)
160
+ end
161
+
162
+ state :interpreted_string do
163
+ rule(ESCAPE_SEQUENCE, Str::Escape)
164
+ rule(/\\./, Error)
165
+ rule(/"/, Str, :pop!)
166
+ rule(/[^"\\]+/, Str)
167
+ end
168
+
169
+ state :raw_string do
170
+ rule(/`/, Str, :pop!)
171
+ rule(/[^`]+/m, Str)
172
+ end
173
+ end
174
+ end
175
+ end
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'groovy.rb'
7
+
8
+ class Gradle < Groovy
9
+ title "Gradle"
10
+ desc "A powerful build system for the JVM"
11
+
12
+ tag 'gradle'
13
+ filenames '*.gradle'
14
+ mimetypes 'text/x-gradle'
15
+
16
+ def self.keywords
17
+ @keywords ||= super + Set.new(%w(
18
+ allprojects artifacts buildscript configuration dependencies
19
+ repositories sourceSets subprojects publishing
20
+ ))
21
+ end
22
+
23
+ def self.types
24
+ @types ||= super + Set.new(%w(
25
+ Project Task Gradle Settings Script JavaToolChain SourceSet
26
+ SourceSetOutput IncrementalTaskInputs Configuration
27
+ ResolutionStrategy ArtifactResolutionQuery ComponentSelection
28
+ ComponentSelectionRules ConventionProperty ExtensionAware
29
+ ExtraPropertiesExtension PublishingExtension IvyPublication
30
+ IvyArtifact IvyArtifactSet IvyModuleDescriptorSpec
31
+ MavenPublication MavenArtifact MavenArtifactSet MavenPom
32
+ PluginDependenciesSpec PluginDependencySpec ResourceHandler
33
+ TextResourceFactory
34
+ ))
35
+ end
36
+ end
37
+ end
38
+ end