rouge-lines 3.2.3

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 (318) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +26 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +17 -0
  5. data/lib/rouge-lines.rb +84 -0
  6. data/lib/rouge-lines/cli.rb +429 -0
  7. data/lib/rouge-lines/demos/abap +6 -0
  8. data/lib/rouge-lines/demos/actionscript +4 -0
  9. data/lib/rouge-lines/demos/apache +21 -0
  10. data/lib/rouge-lines/demos/apiblueprint +33 -0
  11. data/lib/rouge-lines/demos/applescript +2 -0
  12. data/lib/rouge-lines/demos/awk +4 -0
  13. data/lib/rouge-lines/demos/biml +38 -0
  14. data/lib/rouge-lines/demos/bsl +7 -0
  15. data/lib/rouge-lines/demos/c +8 -0
  16. data/lib/rouge-lines/demos/ceylon +7 -0
  17. data/lib/rouge-lines/demos/cfscript +18 -0
  18. data/lib/rouge-lines/demos/clojure +5 -0
  19. data/lib/rouge-lines/demos/cmake +7 -0
  20. data/lib/rouge-lines/demos/coffeescript +5 -0
  21. data/lib/rouge-lines/demos/common_lisp +1 -0
  22. data/lib/rouge-lines/demos/conf +4 -0
  23. data/lib/rouge-lines/demos/console +6 -0
  24. data/lib/rouge-lines/demos/coq +13 -0
  25. data/lib/rouge-lines/demos/cpp +8 -0
  26. data/lib/rouge-lines/demos/csharp +5 -0
  27. data/lib/rouge-lines/demos/css +4 -0
  28. data/lib/rouge-lines/demos/d +16 -0
  29. data/lib/rouge-lines/demos/dart +6 -0
  30. data/lib/rouge-lines/demos/diff +7 -0
  31. data/lib/rouge-lines/demos/digdag +19 -0
  32. data/lib/rouge-lines/demos/docker +9 -0
  33. data/lib/rouge-lines/demos/dot +5 -0
  34. data/lib/rouge-lines/demos/eiffel +30 -0
  35. data/lib/rouge-lines/demos/elixir +1 -0
  36. data/lib/rouge-lines/demos/elm +4 -0
  37. data/lib/rouge-lines/demos/erb +1 -0
  38. data/lib/rouge-lines/demos/erlang +7 -0
  39. data/lib/rouge-lines/demos/factor +5 -0
  40. data/lib/rouge-lines/demos/fortran +22 -0
  41. data/lib/rouge-lines/demos/fsharp +12 -0
  42. data/lib/rouge-lines/demos/gherkin +17 -0
  43. data/lib/rouge-lines/demos/glsl +14 -0
  44. data/lib/rouge-lines/demos/go +7 -0
  45. data/lib/rouge-lines/demos/gradle +10 -0
  46. data/lib/rouge-lines/demos/graphql +17 -0
  47. data/lib/rouge-lines/demos/groovy +9 -0
  48. data/lib/rouge-lines/demos/hack +5 -0
  49. data/lib/rouge-lines/demos/haml +5 -0
  50. data/lib/rouge-lines/demos/handlebars +7 -0
  51. data/lib/rouge-lines/demos/haskell +6 -0
  52. data/lib/rouge-lines/demos/html +8 -0
  53. data/lib/rouge-lines/demos/http +14 -0
  54. data/lib/rouge-lines/demos/hylang +10 -0
  55. data/lib/rouge-lines/demos/idlang +8 -0
  56. data/lib/rouge-lines/demos/igorpro +9 -0
  57. data/lib/rouge-lines/demos/ini +4 -0
  58. data/lib/rouge-lines/demos/io +11 -0
  59. data/lib/rouge-lines/demos/irb +4 -0
  60. data/lib/rouge-lines/demos/irb_output +2 -0
  61. data/lib/rouge-lines/demos/java +5 -0
  62. data/lib/rouge-lines/demos/javascript +1 -0
  63. data/lib/rouge-lines/demos/jinja +9 -0
  64. data/lib/rouge-lines/demos/json +1 -0
  65. data/lib/rouge-lines/demos/json-doc +1 -0
  66. data/lib/rouge-lines/demos/jsonnet +28 -0
  67. data/lib/rouge-lines/demos/jsx +17 -0
  68. data/lib/rouge-lines/demos/julia +11 -0
  69. data/lib/rouge-lines/demos/kotlin +3 -0
  70. data/lib/rouge-lines/demos/lasso +12 -0
  71. data/lib/rouge-lines/demos/liquid +11 -0
  72. data/lib/rouge-lines/demos/literate_coffeescript +3 -0
  73. data/lib/rouge-lines/demos/literate_haskell +7 -0
  74. data/lib/rouge-lines/demos/llvm +20 -0
  75. data/lib/rouge-lines/demos/lua +12 -0
  76. data/lib/rouge-lines/demos/make +6 -0
  77. data/lib/rouge-lines/demos/markdown +4 -0
  78. data/lib/rouge-lines/demos/matlab +6 -0
  79. data/lib/rouge-lines/demos/moonscript +16 -0
  80. data/lib/rouge-lines/demos/mosel +10 -0
  81. data/lib/rouge-lines/demos/mxml +22 -0
  82. data/lib/rouge-lines/demos/nasm +26 -0
  83. data/lib/rouge-lines/demos/nginx +5 -0
  84. data/lib/rouge-lines/demos/nim +27 -0
  85. data/lib/rouge-lines/demos/nix +19 -0
  86. data/lib/rouge-lines/demos/objective_c +18 -0
  87. data/lib/rouge-lines/demos/ocaml +12 -0
  88. data/lib/rouge-lines/demos/pascal +14 -0
  89. data/lib/rouge-lines/demos/perl +5 -0
  90. data/lib/rouge-lines/demos/php +3 -0
  91. data/lib/rouge-lines/demos/plaintext +1 -0
  92. data/lib/rouge-lines/demos/plist +142 -0
  93. data/lib/rouge-lines/demos/pony +17 -0
  94. data/lib/rouge-lines/demos/powershell +49 -0
  95. data/lib/rouge-lines/demos/praat +26 -0
  96. data/lib/rouge-lines/demos/prolog +9 -0
  97. data/lib/rouge-lines/demos/prometheus +9 -0
  98. data/lib/rouge-lines/demos/properties +7 -0
  99. data/lib/rouge-lines/demos/protobuf +5 -0
  100. data/lib/rouge-lines/demos/puppet +6 -0
  101. data/lib/rouge-lines/demos/python +6 -0
  102. data/lib/rouge-lines/demos/q +2 -0
  103. data/lib/rouge-lines/demos/qml +9 -0
  104. data/lib/rouge-lines/demos/r +8 -0
  105. data/lib/rouge-lines/demos/racket +24 -0
  106. data/lib/rouge-lines/demos/ruby +9 -0
  107. data/lib/rouge-lines/demos/rust +12 -0
  108. data/lib/rouge-lines/demos/sass +3 -0
  109. data/lib/rouge-lines/demos/scala +3 -0
  110. data/lib/rouge-lines/demos/scheme +4 -0
  111. data/lib/rouge-lines/demos/scss +5 -0
  112. data/lib/rouge-lines/demos/sed +4 -0
  113. data/lib/rouge-lines/demos/shell +2 -0
  114. data/lib/rouge-lines/demos/sieve +10 -0
  115. data/lib/rouge-lines/demos/slim +17 -0
  116. data/lib/rouge-lines/demos/smalltalk +6 -0
  117. data/lib/rouge-lines/demos/smarty +12 -0
  118. data/lib/rouge-lines/demos/sml +4 -0
  119. data/lib/rouge-lines/demos/sql +1 -0
  120. data/lib/rouge-lines/demos/swift +5 -0
  121. data/lib/rouge-lines/demos/tap +5 -0
  122. data/lib/rouge-lines/demos/tcl +1 -0
  123. data/lib/rouge-lines/demos/tex +1 -0
  124. data/lib/rouge-lines/demos/toml +9 -0
  125. data/lib/rouge-lines/demos/tsx +17 -0
  126. data/lib/rouge-lines/demos/tulip +13 -0
  127. data/lib/rouge-lines/demos/turtle +26 -0
  128. data/lib/rouge-lines/demos/twig +9 -0
  129. data/lib/rouge-lines/demos/typescript +1 -0
  130. data/lib/rouge-lines/demos/vala +8 -0
  131. data/lib/rouge-lines/demos/vb +4 -0
  132. data/lib/rouge-lines/demos/verilog +27 -0
  133. data/lib/rouge-lines/demos/vhdl +23 -0
  134. data/lib/rouge-lines/demos/viml +14 -0
  135. data/lib/rouge-lines/demos/vue +11 -0
  136. data/lib/rouge-lines/demos/wollok +11 -0
  137. data/lib/rouge-lines/demos/xml +2 -0
  138. data/lib/rouge-lines/demos/yaml +4 -0
  139. data/lib/rouge-lines/formatter.rb +75 -0
  140. data/lib/rouge-lines/formatters/html.rb +37 -0
  141. data/lib/rouge-lines/formatters/html_inline.rb +30 -0
  142. data/lib/rouge-lines/formatters/html_legacy.rb +49 -0
  143. data/lib/rouge-lines/formatters/html_lineanchors.rb +27 -0
  144. data/lib/rouge-lines/formatters/html_linewise.rb +27 -0
  145. data/lib/rouge-lines/formatters/html_pygments.rb +16 -0
  146. data/lib/rouge-lines/formatters/html_table.rb +61 -0
  147. data/lib/rouge-lines/formatters/null.rb +19 -0
  148. data/lib/rouge-lines/formatters/terminal256.rb +180 -0
  149. data/lib/rouge-lines/guesser.rb +55 -0
  150. data/lib/rouge-lines/guessers/disambiguation.rb +101 -0
  151. data/lib/rouge-lines/guessers/filename.rb +25 -0
  152. data/lib/rouge-lines/guessers/glob_mapping.rb +43 -0
  153. data/lib/rouge-lines/guessers/mimetype.rb +14 -0
  154. data/lib/rouge-lines/guessers/modeline.rb +44 -0
  155. data/lib/rouge-lines/guessers/source.rb +29 -0
  156. data/lib/rouge-lines/guessers/util.rb +32 -0
  157. data/lib/rouge-lines/lexer.rb +461 -0
  158. data/lib/rouge-lines/lexers/abap.rb +238 -0
  159. data/lib/rouge-lines/lexers/actionscript.rb +195 -0
  160. data/lib/rouge-lines/lexers/apache.rb +71 -0
  161. data/lib/rouge-lines/lexers/apache/keywords.yml +764 -0
  162. data/lib/rouge-lines/lexers/apiblueprint.rb +47 -0
  163. data/lib/rouge-lines/lexers/apple_script.rb +367 -0
  164. data/lib/rouge-lines/lexers/awk.rb +161 -0
  165. data/lib/rouge-lines/lexers/biml.rb +41 -0
  166. data/lib/rouge-lines/lexers/bsl.rb +81 -0
  167. data/lib/rouge-lines/lexers/c.rb +212 -0
  168. data/lib/rouge-lines/lexers/ceylon.rb +123 -0
  169. data/lib/rouge-lines/lexers/cfscript.rb +153 -0
  170. data/lib/rouge-lines/lexers/clojure.rb +112 -0
  171. data/lib/rouge-lines/lexers/cmake.rb +206 -0
  172. data/lib/rouge-lines/lexers/coffeescript.rb +174 -0
  173. data/lib/rouge-lines/lexers/common_lisp.rb +345 -0
  174. data/lib/rouge-lines/lexers/conf.rb +24 -0
  175. data/lib/rouge-lines/lexers/console.rb +136 -0
  176. data/lib/rouge-lines/lexers/coq.rb +187 -0
  177. data/lib/rouge-lines/lexers/cpp.rb +78 -0
  178. data/lib/rouge-lines/lexers/csharp.rb +114 -0
  179. data/lib/rouge-lines/lexers/css.rb +273 -0
  180. data/lib/rouge-lines/lexers/d.rb +176 -0
  181. data/lib/rouge-lines/lexers/dart.rb +104 -0
  182. data/lib/rouge-lines/lexers/diff.rb +31 -0
  183. data/lib/rouge-lines/lexers/digdag.rb +68 -0
  184. data/lib/rouge-lines/lexers/docker.rb +50 -0
  185. data/lib/rouge-lines/lexers/dot.rb +68 -0
  186. data/lib/rouge-lines/lexers/eiffel.rb +65 -0
  187. data/lib/rouge-lines/lexers/elixir.rb +133 -0
  188. data/lib/rouge-lines/lexers/elm.rb +89 -0
  189. data/lib/rouge-lines/lexers/erb.rb +52 -0
  190. data/lib/rouge-lines/lexers/erlang.rb +114 -0
  191. data/lib/rouge-lines/lexers/factor.rb +302 -0
  192. data/lib/rouge-lines/lexers/fortran.rb +176 -0
  193. data/lib/rouge-lines/lexers/fsharp.rb +118 -0
  194. data/lib/rouge-lines/lexers/gherkin.rb +137 -0
  195. data/lib/rouge-lines/lexers/gherkin/keywords.rb +14 -0
  196. data/lib/rouge-lines/lexers/glsl.rb +135 -0
  197. data/lib/rouge-lines/lexers/go.rb +174 -0
  198. data/lib/rouge-lines/lexers/gradle.rb +37 -0
  199. data/lib/rouge-lines/lexers/graphql.rb +243 -0
  200. data/lib/rouge-lines/lexers/groovy.rb +112 -0
  201. data/lib/rouge-lines/lexers/hack.rb +48 -0
  202. data/lib/rouge-lines/lexers/haml.rb +229 -0
  203. data/lib/rouge-lines/lexers/handlebars.rb +79 -0
  204. data/lib/rouge-lines/lexers/haskell.rb +197 -0
  205. data/lib/rouge-lines/lexers/html.rb +139 -0
  206. data/lib/rouge-lines/lexers/http.rb +80 -0
  207. data/lib/rouge-lines/lexers/hylang.rb +93 -0
  208. data/lib/rouge-lines/lexers/idlang.rb +310 -0
  209. data/lib/rouge-lines/lexers/igorpro.rb +408 -0
  210. data/lib/rouge-lines/lexers/ini.rb +53 -0
  211. data/lib/rouge-lines/lexers/io.rb +68 -0
  212. data/lib/rouge-lines/lexers/irb.rb +66 -0
  213. data/lib/rouge-lines/lexers/java.rb +87 -0
  214. data/lib/rouge-lines/lexers/javascript.rb +281 -0
  215. data/lib/rouge-lines/lexers/jinja.rb +137 -0
  216. data/lib/rouge-lines/lexers/json.rb +29 -0
  217. data/lib/rouge-lines/lexers/json_doc.rb +23 -0
  218. data/lib/rouge-lines/lexers/jsonnet.rb +151 -0
  219. data/lib/rouge-lines/lexers/jsx.rb +102 -0
  220. data/lib/rouge-lines/lexers/julia.rb +172 -0
  221. data/lib/rouge-lines/lexers/kotlin.rb +79 -0
  222. data/lib/rouge-lines/lexers/lasso.rb +214 -0
  223. data/lib/rouge-lines/lexers/lasso/keywords.yml +446 -0
  224. data/lib/rouge-lines/lexers/liquid.rb +287 -0
  225. data/lib/rouge-lines/lexers/literate_coffeescript.rb +33 -0
  226. data/lib/rouge-lines/lexers/literate_haskell.rb +36 -0
  227. data/lib/rouge-lines/lexers/llvm.rb +80 -0
  228. data/lib/rouge-lines/lexers/lua.rb +125 -0
  229. data/lib/rouge-lines/lexers/lua/builtins.rb +22 -0
  230. data/lib/rouge-lines/lexers/make.rb +112 -0
  231. data/lib/rouge-lines/lexers/markdown.rb +154 -0
  232. data/lib/rouge-lines/lexers/matlab.rb +71 -0
  233. data/lib/rouge-lines/lexers/matlab/builtins.rb +11 -0
  234. data/lib/rouge-lines/lexers/moonscript.rb +114 -0
  235. data/lib/rouge-lines/lexers/mosel.rb +231 -0
  236. data/lib/rouge-lines/lexers/mxml.rb +68 -0
  237. data/lib/rouge-lines/lexers/nasm.rb +198 -0
  238. data/lib/rouge-lines/lexers/nginx.rb +71 -0
  239. data/lib/rouge-lines/lexers/nim.rb +152 -0
  240. data/lib/rouge-lines/lexers/nix.rb +205 -0
  241. data/lib/rouge-lines/lexers/objective_c.rb +194 -0
  242. data/lib/rouge-lines/lexers/ocaml.rb +100 -0
  243. data/lib/rouge-lines/lexers/pascal.rb +66 -0
  244. data/lib/rouge-lines/lexers/perl.rb +196 -0
  245. data/lib/rouge-lines/lexers/php.rb +193 -0
  246. data/lib/rouge-lines/lexers/php/builtins.rb +194 -0
  247. data/lib/rouge-lines/lexers/plain_text.rb +26 -0
  248. data/lib/rouge-lines/lexers/plist.rb +45 -0
  249. data/lib/rouge-lines/lexers/pony.rb +93 -0
  250. data/lib/rouge-lines/lexers/powershell.rb +678 -0
  251. data/lib/rouge-lines/lexers/praat.rb +350 -0
  252. data/lib/rouge-lines/lexers/prolog.rb +59 -0
  253. data/lib/rouge-lines/lexers/prometheus.rb +121 -0
  254. data/lib/rouge-lines/lexers/properties.rb +51 -0
  255. data/lib/rouge-lines/lexers/protobuf.rb +70 -0
  256. data/lib/rouge-lines/lexers/puppet.rb +128 -0
  257. data/lib/rouge-lines/lexers/python.rb +232 -0
  258. data/lib/rouge-lines/lexers/q.rb +123 -0
  259. data/lib/rouge-lines/lexers/qml.rb +73 -0
  260. data/lib/rouge-lines/lexers/r.rb +89 -0
  261. data/lib/rouge-lines/lexers/racket.rb +543 -0
  262. data/lib/rouge-lines/lexers/ruby.rb +437 -0
  263. data/lib/rouge-lines/lexers/rust.rb +192 -0
  264. data/lib/rouge-lines/lexers/sass.rb +74 -0
  265. data/lib/rouge-lines/lexers/sass/common.rb +180 -0
  266. data/lib/rouge-lines/lexers/scala.rb +142 -0
  267. data/lib/rouge-lines/lexers/scheme.rb +112 -0
  268. data/lib/rouge-lines/lexers/scss.rb +34 -0
  269. data/lib/rouge-lines/lexers/sed.rb +172 -0
  270. data/lib/rouge-lines/lexers/shell.rb +189 -0
  271. data/lib/rouge-lines/lexers/sieve.rb +96 -0
  272. data/lib/rouge-lines/lexers/slim.rb +228 -0
  273. data/lib/rouge-lines/lexers/smalltalk.rb +116 -0
  274. data/lib/rouge-lines/lexers/smarty.rb +80 -0
  275. data/lib/rouge-lines/lexers/sml.rb +344 -0
  276. data/lib/rouge-lines/lexers/sql.rb +140 -0
  277. data/lib/rouge-lines/lexers/swift.rb +181 -0
  278. data/lib/rouge-lines/lexers/tap.rb +87 -0
  279. data/lib/rouge-lines/lexers/tcl.rb +192 -0
  280. data/lib/rouge-lines/lexers/tex.rb +69 -0
  281. data/lib/rouge-lines/lexers/toml.rb +67 -0
  282. data/lib/rouge-lines/lexers/tsx.rb +19 -0
  283. data/lib/rouge-lines/lexers/tulip.rb +106 -0
  284. data/lib/rouge-lines/lexers/turtle.rb +63 -0
  285. data/lib/rouge-lines/lexers/twig.rb +39 -0
  286. data/lib/rouge-lines/lexers/typescript.rb +22 -0
  287. data/lib/rouge-lines/lexers/typescript/common.rb +33 -0
  288. data/lib/rouge-lines/lexers/vala.rb +77 -0
  289. data/lib/rouge-lines/lexers/vb.rb +164 -0
  290. data/lib/rouge-lines/lexers/verilog.rb +164 -0
  291. data/lib/rouge-lines/lexers/vhdl.rb +97 -0
  292. data/lib/rouge-lines/lexers/viml.rb +101 -0
  293. data/lib/rouge-lines/lexers/viml/keywords.rb +12 -0
  294. data/lib/rouge-lines/lexers/vue.rb +122 -0
  295. data/lib/rouge-lines/lexers/wollok.rb +103 -0
  296. data/lib/rouge-lines/lexers/xml.rb +57 -0
  297. data/lib/rouge-lines/lexers/yaml.rb +373 -0
  298. data/lib/rouge-lines/plugins/redcarpet.rb +30 -0
  299. data/lib/rouge-lines/regex_lexer.rb +441 -0
  300. data/lib/rouge-lines/template_lexer.rb +20 -0
  301. data/lib/rouge-lines/text_analyzer.rb +49 -0
  302. data/lib/rouge-lines/theme.rb +213 -0
  303. data/lib/rouge-lines/themes/base16.rb +130 -0
  304. data/lib/rouge-lines/themes/colorful.rb +67 -0
  305. data/lib/rouge-lines/themes/github.rb +71 -0
  306. data/lib/rouge-lines/themes/gruvbox.rb +167 -0
  307. data/lib/rouge-lines/themes/igor_pro.rb +20 -0
  308. data/lib/rouge-lines/themes/molokai.rb +82 -0
  309. data/lib/rouge-lines/themes/monokai.rb +92 -0
  310. data/lib/rouge-lines/themes/monokai_sublime.rb +90 -0
  311. data/lib/rouge-lines/themes/pastie.rb +69 -0
  312. data/lib/rouge-lines/themes/thankful_eyes.rb +74 -0
  313. data/lib/rouge-lines/themes/tulip.rb +69 -0
  314. data/lib/rouge-lines/token.rb +182 -0
  315. data/lib/rouge-lines/util.rb +101 -0
  316. data/lib/rouge-lines/version.rb +7 -0
  317. data/rouge-lines.gemspec +23 -0
  318. metadata +368 -0
@@ -0,0 +1,174 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module RougeLines
4
+ module Lexers
5
+ class Go < RegexLexer
6
+ title "Go"
7
+ desc 'The Go programming language (http://golang.org)'
8
+ tag 'go'
9
+ aliases 'go', 'golang'
10
+ filenames '*.go'
11
+
12
+ mimetypes 'text/x-go', 'application/x-go'
13
+
14
+ # Characters
15
+
16
+ WHITE_SPACE = /[\s\t\r\n]+/
17
+
18
+ NEWLINE = /\n/
19
+ UNICODE_CHAR = /[^\n]/
20
+ UNICODE_LETTER = /[[:alpha:]]/
21
+ UNICODE_DIGIT = /[[:digit:]]/
22
+
23
+ # Letters and digits
24
+
25
+ LETTER = /#{UNICODE_LETTER}|_/
26
+ DECIMAL_DIGIT = /[0-9]/
27
+ OCTAL_DIGIT = /[0-7]/
28
+ HEX_DIGIT = /[0-9A-Fa-f]/
29
+
30
+ # Comments
31
+
32
+ LINE_COMMENT = /\/\/(?:(?!#{NEWLINE}).)*/
33
+ GENERAL_COMMENT = /\/\*(?:(?!\*\/).)*\*\//m
34
+ COMMENT = /#{LINE_COMMENT}|#{GENERAL_COMMENT}/
35
+
36
+ # Keywords
37
+
38
+ KEYWORD = /\b(?:
39
+ break | default | func
40
+ | interface | select | case
41
+ | defer | go | map
42
+ | struct | chan | else
43
+ | goto | package | switch
44
+ | const | fallthrough | if
45
+ | range | type | continue
46
+ | for | import | return
47
+ | var
48
+ )\b/x
49
+
50
+ # Identifiers
51
+
52
+ IDENTIFIER = / (?!#{KEYWORD})
53
+ #{LETTER}(?:#{LETTER}|#{UNICODE_DIGIT})* /x
54
+
55
+ # Operators and delimiters
56
+
57
+ OPERATOR = / \+= | \+\+ | \+ | &\^= | &\^
58
+ | &= | && | & | == | =
59
+ | \!= | \! | -= | -- | -
60
+ | \|= | \|\| | \| | <= | <-
61
+ | <<= | << | < | \*= | \*
62
+ | \^= | \^ | >>= | >> | >=
63
+ | > | \/ | \/= | := | %
64
+ | %= | \.\.\. | \. | :
65
+ /x
66
+
67
+ SEPARATOR = / \( | \) | \[ | \] | \{
68
+ | \} | , | ;
69
+ /x
70
+
71
+ # Integer literals
72
+
73
+ DECIMAL_LIT = /[0-9]#{DECIMAL_DIGIT}*/
74
+ OCTAL_LIT = /0#{OCTAL_DIGIT}*/
75
+ HEX_LIT = /0[xX]#{HEX_DIGIT}+/
76
+ INT_LIT = /#{HEX_LIT}|#{DECIMAL_LIT}|#{OCTAL_LIT}/
77
+
78
+ # Floating-point literals
79
+
80
+ DECIMALS = /#{DECIMAL_DIGIT}+/
81
+ EXPONENT = /[eE][+\-]?#{DECIMALS}/
82
+ FLOAT_LIT = / #{DECIMALS} \. #{DECIMALS}? #{EXPONENT}?
83
+ | #{DECIMALS} #{EXPONENT}
84
+ | \. #{DECIMALS} #{EXPONENT}?
85
+ /x
86
+
87
+ # Imaginary literals
88
+
89
+ IMAGINARY_LIT = /(?:#{DECIMALS}|#{FLOAT_LIT})i/
90
+
91
+ # Rune literals
92
+
93
+ ESCAPED_CHAR = /\\[abfnrtv\\'"]/
94
+ LITTLE_U_VALUE = /\\u#{HEX_DIGIT}{4}/
95
+ BIG_U_VALUE = /\\U#{HEX_DIGIT}{8}/
96
+ UNICODE_VALUE = / #{UNICODE_CHAR} | #{LITTLE_U_VALUE}
97
+ | #{BIG_U_VALUE} | #{ESCAPED_CHAR}
98
+ /x
99
+ OCTAL_BYTE_VALUE = /\\#{OCTAL_DIGIT}{3}/
100
+ HEX_BYTE_VALUE = /\\x#{HEX_DIGIT}{2}/
101
+ BYTE_VALUE = /#{OCTAL_BYTE_VALUE}|#{HEX_BYTE_VALUE}/
102
+ CHAR_LIT = /'(?:#{UNICODE_VALUE}|#{BYTE_VALUE})'/
103
+ ESCAPE_SEQUENCE = / #{ESCAPED_CHAR}
104
+ | #{LITTLE_U_VALUE}
105
+ | #{BIG_U_VALUE}
106
+ | #{HEX_BYTE_VALUE}
107
+ /x
108
+
109
+ # String literals
110
+
111
+ RAW_STRING_LIT = /`(?:#{UNICODE_CHAR}|#{NEWLINE})*`/
112
+ INTERPRETED_STRING_LIT = / "(?: (?!")
113
+ (?: #{UNICODE_VALUE} | #{BYTE_VALUE} )
114
+ )*" /x
115
+ STRING_LIT = /#{RAW_STRING_LIT}|#{INTERPRETED_STRING_LIT}/
116
+
117
+ # Predeclared identifiers
118
+
119
+ PREDECLARED_TYPES = /\b(?:
120
+ bool | byte | complex64
121
+ | complex128 | error | float32
122
+ | float64 | int8 | int16
123
+ | int32 | int64 | int
124
+ | rune | string | uint8
125
+ | uint16 | uint32 | uint64
126
+ | uintptr | uint
127
+ )\b/x
128
+
129
+ PREDECLARED_CONSTANTS = /\b(?:true|false|iota|nil)\b/
130
+
131
+ PREDECLARED_FUNCTIONS = /\b(?:
132
+ append | cap | close | complex
133
+ | copy | delete | imag | len
134
+ | make | new | panic | print
135
+ | println | real | recover
136
+ )\b/x
137
+
138
+ state :simple_tokens do
139
+ rule(COMMENT, Comment)
140
+ rule(KEYWORD, Keyword)
141
+ rule(PREDECLARED_TYPES, Keyword::Type)
142
+ rule(PREDECLARED_FUNCTIONS, Name::Builtin)
143
+ rule(PREDECLARED_CONSTANTS, Name::Constant)
144
+ rule(IMAGINARY_LIT, Num)
145
+ rule(FLOAT_LIT, Num)
146
+ rule(INT_LIT, Num)
147
+ rule(CHAR_LIT, Str::Char)
148
+ rule(OPERATOR, Operator)
149
+ rule(SEPARATOR, Punctuation)
150
+ rule(IDENTIFIER, Name)
151
+ rule(WHITE_SPACE, Other)
152
+ end
153
+
154
+ state :root do
155
+ mixin :simple_tokens
156
+
157
+ rule(/`/, Str, :raw_string)
158
+ rule(/"/, Str, :interpreted_string)
159
+ end
160
+
161
+ state :interpreted_string do
162
+ rule(ESCAPE_SEQUENCE, Str::Escape)
163
+ rule(/\\./, Error)
164
+ rule(/"/, Str, :pop!)
165
+ rule(/[^"\\]+/, Str)
166
+ end
167
+
168
+ state :raw_string do
169
+ rule(/`/, Str, :pop!)
170
+ rule(/[^`]+/m, Str)
171
+ end
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,37 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module RougeLines
4
+ module Lexers
5
+ load_lexer 'groovy.rb'
6
+
7
+ class Gradle < Groovy
8
+ title "Gradle"
9
+ desc "A powerful build system for the JVM"
10
+
11
+ tag 'gradle'
12
+ filenames '*.gradle'
13
+ mimetypes 'text/x-gradle'
14
+
15
+ def self.keywords
16
+ @keywords ||= super + Set.new(%w(
17
+ allprojects artifacts buildscript configuration dependencies
18
+ repositories sourceSets subprojects publishing
19
+ ))
20
+ end
21
+
22
+ def self.types
23
+ @types ||= super + Set.new(%w(
24
+ Project Task Gradle Settings Script JavaToolChain SourceSet
25
+ SourceSetOutput IncrementalTaskInputs Configuration
26
+ ResolutionStrategy ArtifactResolutionQuery ComponentSelection
27
+ ComponentSelectionRules ConventionProperty ExtensionAware
28
+ ExtraPropertiesExtension PublishingExtension IvyPublication
29
+ IvyArtifact IvyArtifactSet IvyModuleDescriptorSpec
30
+ MavenPublication MavenArtifact MavenArtifactSet MavenPom
31
+ PluginDependenciesSpec PluginDependencySpec ResourceHandler
32
+ TextResourceFactory
33
+ ))
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,243 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module RougeLines
4
+ module Lexers
5
+ class GraphQL < RegexLexer
6
+ desc 'GraphQL'
7
+ tag 'graphql'
8
+ filenames '*.graphql', '*.gql'
9
+ mimetypes 'application/graphql'
10
+
11
+ name = /[_A-Za-z][_0-9A-Za-z]*/
12
+
13
+ state :root do
14
+ rule /\b(?:query|mutation|subscription)\b/, Keyword, :query_definition
15
+ rule /\{/ do
16
+ token Punctuation
17
+ push :query_definition
18
+ push :selection_set
19
+ end
20
+
21
+ rule /\bfragment\b/, Keyword, :fragment_definition
22
+
23
+ rule /\b(?:type|interface|enum)\b/, Keyword, :type_definition
24
+ rule /\b(?:input|schema)\b/, Keyword, :type_definition
25
+
26
+ rule /\bunion\b/, Keyword, :union_definition
27
+
28
+ mixin :basic
29
+ end
30
+
31
+ state :basic do
32
+ rule /\s+/m, Text::Whitespace
33
+ rule /#.*$/, Comment
34
+
35
+ rule /[!,]/, Punctuation
36
+ end
37
+
38
+ state :has_directives do
39
+ rule /(@#{name})(\s*)(\()/ do
40
+ groups Keyword, Text::Whitespace, Punctuation
41
+ push :arguments
42
+ end
43
+ rule /@#{name}\b/, Keyword
44
+ end
45
+
46
+ state :fragment_definition do
47
+ rule /\bon\b/, Keyword
48
+
49
+ mixin :query_definition
50
+ end
51
+
52
+ state :query_definition do
53
+ mixin :has_directives
54
+
55
+ rule /\b#{name}\b/, Name
56
+ rule /\(/, Punctuation, :variable_definitions
57
+ rule /\{/, Punctuation, :selection_set
58
+
59
+ mixin :basic
60
+ end
61
+
62
+ state :type_definition do
63
+ rule /\bimplements\b/, Keyword
64
+ rule /\b#{name}\b/, Name
65
+ rule /\(/, Punctuation, :variable_definitions
66
+ rule /\{/, Punctuation, :type_definition_set
67
+
68
+ mixin :basic
69
+ end
70
+
71
+ state :union_definition do
72
+ rule /\b#{name}\b/, Name
73
+ rule /\=/, Punctuation, :union_definition_variant
74
+
75
+ mixin :basic
76
+ end
77
+
78
+ state :union_definition_variant do
79
+ rule /\b#{name}\b/ do
80
+ token Name
81
+ pop!
82
+ push :union_definition_pipe
83
+ end
84
+
85
+ mixin :basic
86
+ end
87
+
88
+ state :union_definition_pipe do
89
+ rule /\|/ do
90
+ token Punctuation
91
+ pop!
92
+ push :union_definition_variant
93
+ end
94
+
95
+ rule /(?!\||\s+|#[^\n]*)/ do
96
+ pop! 2
97
+ end
98
+
99
+ mixin :basic
100
+ end
101
+
102
+ state :type_definition_set do
103
+ rule /\}/ do
104
+ token Punctuation
105
+ pop! 2
106
+ end
107
+
108
+ rule /\b(#{name})(\s*)(\()/ do
109
+ groups Name, Text::Whitespace, Punctuation
110
+ push :variable_definitions
111
+ end
112
+ rule /\b#{name}\b/, Name
113
+
114
+ rule /:/, Punctuation, :type_names
115
+
116
+ mixin :basic
117
+ end
118
+
119
+ state :arguments do
120
+ rule /\)/ do
121
+ token Punctuation
122
+ pop!
123
+ end
124
+
125
+ rule /\b#{name}\b/, Name
126
+ rule /:/, Punctuation, :value
127
+
128
+ mixin :basic
129
+ end
130
+
131
+ state :variable_definitions do
132
+ rule /\)/ do
133
+ token Punctuation
134
+ pop!
135
+ end
136
+
137
+ rule /\$#{name}\b/, Name::Variable
138
+ rule /\b#{name}\b/, Name
139
+ rule /:/, Punctuation, :type_names
140
+ rule /\=/, Punctuation, :value
141
+
142
+ mixin :basic
143
+ end
144
+
145
+ state :type_names do
146
+ rule /\b(?:Int|Float|String|Boolean|ID)\b/, Name::Builtin, :pop!
147
+ rule /\b#{name}\b/, Name, :pop!
148
+
149
+ rule /\[/, Punctuation, :type_name_list
150
+
151
+ mixin :basic
152
+ end
153
+
154
+ state :type_name_list do
155
+ rule /\b(?:Int|Float|String|Boolean|ID)\b/, Name::Builtin
156
+ rule /\b#{name}\b/, Name
157
+
158
+ rule /\]/ do
159
+ token Punctuation
160
+ pop! 2
161
+ end
162
+
163
+ mixin :basic
164
+ end
165
+
166
+ state :selection_set do
167
+ mixin :has_directives
168
+
169
+ rule /\}/ do
170
+ token Punctuation
171
+ pop!
172
+ pop! if state?(:query_definition) || state?(:fragment_definition)
173
+ end
174
+
175
+ rule /\b(#{name})(\s*)(\()/ do
176
+ groups Name, Text::Whitespace, Punctuation
177
+ push :arguments
178
+ end
179
+
180
+ rule /\b(#{name})(\s*)(:)/ do
181
+ groups Name, Text::Whitespace, Punctuation
182
+ end
183
+
184
+ rule /\b#{name}\b/, Name
185
+
186
+ rule /(\.\.\.)(\s+)(on)\b/ do
187
+ groups Punctuation, Text::Whitespace, Keyword
188
+ end
189
+ rule /\.\.\./, Punctuation
190
+
191
+ rule /\{/, Punctuation, :selection_set
192
+
193
+ mixin :basic
194
+ end
195
+
196
+ state :list do
197
+ rule /\]/ do
198
+ token Punctuation
199
+ pop!
200
+ pop! if state?(:value)
201
+ end
202
+
203
+ mixin :value
204
+ end
205
+
206
+ state :object do
207
+ rule /\}/ do
208
+ token Punctuation
209
+ pop!
210
+ pop! if state?(:value)
211
+ end
212
+
213
+ rule /\b(#{name})(\s*)(:)/ do
214
+ groups Name, Text::Whitespace, Punctuation
215
+ push :value
216
+ end
217
+
218
+ mixin :basic
219
+ end
220
+
221
+ state :value do
222
+ pop_unless_list = ->(t) {
223
+ ->(m) {
224
+ token t
225
+ pop! unless state?(:list)
226
+ }
227
+ }
228
+
229
+ rule /\$#{name}\b/, &pop_unless_list[Name::Variable]
230
+ rule /\b(?:true|false|null)\b/, &pop_unless_list[Keyword::Constant]
231
+ rule /[+-]?[0-9]+\.[0-9]+(?:[eE][+-]?[0-9]+)?/, &pop_unless_list[Num::Float]
232
+ rule /[+-]?[1-9][0-9]*(?:[eE][+-]?[0-9]+)?/, &pop_unless_list[Num::Integer]
233
+ rule /"(\\[\\"]|[^"])*"/, &pop_unless_list[Str::Double]
234
+ rule /\b#{name}\b/, &pop_unless_list[Name]
235
+
236
+ rule /\{/, Punctuation, :object
237
+ rule /\[/, Punctuation, :list
238
+
239
+ mixin :basic
240
+ end
241
+ end
242
+ end
243
+ end