rougegal 2.1.2

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