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,30 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class JSON < RegexLexer
7
+ title 'JSON'
8
+ desc "JavaScript Object Notation (json.org)"
9
+ tag 'json'
10
+ filenames '*.json'
11
+ mimetypes 'application/json', 'application/vnd.api+json',
12
+ 'application/hal+json'
13
+
14
+ state :root do
15
+ rule /\s+/m, Text::Whitespace
16
+ rule /"/, Str::Double, :string
17
+ rule /(?:true|false|null)\b/, Keyword::Constant
18
+ rule /[{},:\[\]]/, Punctuation
19
+ rule /-?(?:0|[1-9]\d*)\.\d+(?:e[+-]?\d+)?/i, Num::Float
20
+ rule /-?(?:0|[1-9]\d*)(?:e[+-]?\d+)?/i, Num::Integer
21
+ end
22
+
23
+ state :string do
24
+ rule /[^\\"]+/, Str::Double
25
+ rule /\\./, Str::Escape
26
+ rule /"/, Str::Double, :pop!
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,24 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'json.rb'
7
+
8
+ class JSONDOC < JSON
9
+ desc "JavaScript Object Notation with extenstions for documentation"
10
+ tag 'json-doc'
11
+
12
+ prepend :root do
13
+ rule /([$\w]+)(\s*)(:)/ do
14
+ groups Name::Attribute, Text, Punctuation
15
+ end
16
+
17
+ rule %r(/[*].*?[*]/), Comment
18
+
19
+ rule %r(//.*?$), Comment::Single
20
+ rule /(\.\.\.)/, Comment::Single
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,152 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Jsonnet < RegexLexer
7
+ title 'Jsonnet'
8
+ desc 'An elegant, formally-specified config language for JSON'
9
+ tag 'jsonnet'
10
+ filenames '*.jsonnet'
11
+ mimetypes 'text/x-jsonnet'
12
+
13
+ def self.keywords
14
+ @keywords ||= Set.new %w(
15
+ self super local for in if then else import importstr error
16
+ tailstrict assert
17
+ )
18
+ end
19
+
20
+ def self.declarations
21
+ @declarations ||= Set.new %w(
22
+ function
23
+ )
24
+ end
25
+
26
+ def self.constants
27
+ @constants ||= Set.new %w(
28
+ null true false
29
+ )
30
+ end
31
+
32
+ def self.builtins
33
+ @builtins ||= Set.new %w(
34
+ acos
35
+ asin
36
+ atan
37
+ ceil
38
+ char
39
+ codepoint
40
+ cos
41
+ exp
42
+ exponent
43
+ filter
44
+ floor
45
+ force
46
+ length
47
+ log
48
+ makeArray
49
+ mantissa
50
+ objectFields
51
+ objectHas
52
+ pow
53
+ sin
54
+ sqrt
55
+ tan
56
+ thisFile
57
+ type
58
+ abs
59
+ assertEqual
60
+ escapeStringBash
61
+ escapeStringDollars
62
+ escapeStringJson
63
+ escapeStringPython
64
+ filterMap
65
+ flattenArrays
66
+ foldl
67
+ foldr
68
+ format
69
+ join
70
+ lines
71
+ manifestIni
72
+ manifestPython
73
+ manifestPythonVars
74
+ map
75
+ max
76
+ min
77
+ mod
78
+ range
79
+ set
80
+ setDiff
81
+ setInter
82
+ setMember
83
+ setUnion
84
+ sort
85
+ split
86
+ stringChars
87
+ substr
88
+ toString
89
+ uniq
90
+ )
91
+ end
92
+
93
+ identifier = /[a-zA-Z_][a-zA-Z0-9_]*/
94
+
95
+ state :root do
96
+ rule /\s+/, Text
97
+ rule %r(//.*?$), Comment::Single
98
+ rule %r(#.*?$), Comment::Single
99
+ rule %r(/\*.*?\*/)m, Comment::Multiline
100
+
101
+ rule /-?(?:0|[1-9]\d*)\.\d+(?:e[+-]\d+)?/i, Num::Float
102
+ rule /-?(?:0|[1-9]\d*)(?:e[+-]\d+)?/i, Num::Integer
103
+
104
+ rule /[{}:\.,;+\[\]=%\(\)]/, Punctuation
105
+
106
+ rule /"/, Str, :string_double
107
+ rule /'/, Str, :string_single
108
+ rule /\|\|\|/, Str, :string_block
109
+
110
+ rule /\$/, Keyword
111
+
112
+ rule identifier do |m|
113
+ if self.class.keywords.include? m[0]
114
+ token Keyword
115
+ elsif self.class.declarations.include? m[0]
116
+ token Keyword::Declaration
117
+ elsif self.class.constants.include? m[0]
118
+ token Keyword::Constant
119
+ elsif self.class.builtins.include? m[0]
120
+ token Name::Builtin
121
+ else
122
+ token Name::Other
123
+ end
124
+ end
125
+ end
126
+
127
+ state :string do
128
+ rule /\\([\\\/bfnrt]|(u[0-9a-fA-F]{4}))/, Str::Escape
129
+ end
130
+
131
+ state :string_double do
132
+ mixin :string
133
+ rule /\\"/, Str::Escape
134
+ rule /"/, Str, :pop!
135
+ rule /[^\\"]+/, Str
136
+ end
137
+
138
+ state :string_single do
139
+ mixin :string
140
+ rule /\\'/, Str::Escape
141
+ rule /'/, Str, :pop!
142
+ rule /[^\\']+/, Str
143
+ end
144
+
145
+ state :string_block do
146
+ mixin :string
147
+ rule /\|\|\|/, Str, :pop!
148
+ rule /.*/, Str
149
+ end
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,120 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class JSP < TemplateLexer
7
+ desc 'JSP'
8
+ tag 'jsp'
9
+ filenames '*.jsp'
10
+ mimetypes 'text/x-jsp', 'application/x-jsp'
11
+
12
+ def initialize(*)
13
+ super
14
+ @java = Java.new
15
+ end
16
+
17
+ directives = %w(page include taglib)
18
+ actions = %w(scriptlet declaration expression)
19
+
20
+ state :root do
21
+
22
+ rule /<%--/, Comment, :jsp_comment
23
+
24
+ rule /<%@\s*(#{directives.join('|')})\s*/, Name::Tag, :jsp_directive
25
+
26
+ rule /<jsp:directive\.(#{directives.join('|')})/, Name::Tag, :jsp_directive2
27
+
28
+ rule /<jsp:(#{actions.join('|')})>/, Name::Tag, :jsp_expression
29
+
30
+ # start of tag, e.g. <c:if>
31
+ rule /<[a-zA-Z]*:[a-zA-Z]*\s*/, Name::Tag, :jsp_tag
32
+
33
+ # end of tag, e.g. </c:if>
34
+ rule /<\/[a-zA-Z]*:[a-zA-Z]*>/, Name::Tag
35
+
36
+ rule /<%[!=]?/, Name::Tag, :jsp_expression2
37
+
38
+ # fallback to HTML
39
+ rule(/(.+?)(?=(<%|<\/?[a-zA-Z]*:))/m) { delegate parent }
40
+ rule(/.+/m) { delegate parent }
41
+ end
42
+
43
+ state :jsp_comment do
44
+ rule /(--%>)/, Comment, :pop!
45
+ rule /./m, Comment
46
+ end
47
+
48
+ state :jsp_directive do
49
+ rule /(%>)/, Name::Tag, :pop!
50
+ mixin :attributes
51
+ rule(/(.+?)(?=%>)/m) { delegate parent }
52
+ end
53
+
54
+ state :jsp_directive2 do
55
+ rule /(\/>)/, Name::Tag, :pop!
56
+ mixin :attributes
57
+ rule(/(.+?)(?=\/>)/m) { delegate parent }
58
+ end
59
+
60
+ state :jsp_expression do
61
+ rule /<\/jsp:(#{actions.join('|')})>/, Name::Tag, :pop!
62
+ mixin :attributes
63
+ rule(/[^<\/]+/) { delegate @java }
64
+ end
65
+
66
+ state :jsp_expression2 do
67
+ rule /%>/, Name::Tag, :pop!
68
+ rule(/[^%>]+/) { delegate @java }
69
+ end
70
+
71
+ state :jsp_tag do
72
+ rule /\/?>/, Name::Tag, :pop!
73
+ mixin :attributes
74
+ rule(/(.+?)(?=\/?>)/m) { delegate parent }
75
+ end
76
+
77
+ state :attributes do
78
+ rule /\s*[a-zA-Z0-9_:-]+\s*=\s*/m, Name::Attribute, :attr
79
+ end
80
+
81
+ state :attr do
82
+ rule /"/ do
83
+ token Str
84
+ goto :double_quotes
85
+ end
86
+
87
+ rule /'/ do
88
+ token Str
89
+ goto :single_quotes
90
+ end
91
+
92
+ rule /[^\s>]+/, Str, :pop!
93
+ end
94
+
95
+ state :double_quotes do
96
+ rule /"/, Str, :pop!
97
+ rule /\$\{/, Str::Interpol, :jsp_interp
98
+ rule /[^"]+/, Str
99
+ end
100
+
101
+ state :single_quotes do
102
+ rule /'/, Str, :pop!
103
+ rule /\$\{/, Str::Interpol, :jsp_interp
104
+ rule /[^']+/, Str
105
+ end
106
+
107
+ state :jsp_interp do
108
+ rule /\}/, Str::Interpol, :pop!
109
+ rule /'/, Literal, :jsp_interp_literal_start
110
+ rule(/[^'\}]+/) { delegate @java }
111
+ end
112
+
113
+ state :jsp_interp_literal_start do
114
+ rule /'/, Literal, :pop!
115
+ rule /[^']*/, Literal
116
+ end
117
+
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'javascript.rb'
6
+
7
+ class JSX < Javascript
8
+ title 'JSX'
9
+ desc 'React JSX (https://facebook.github.io/react/)'
10
+ tag 'jsx'
11
+ aliases 'jsx', 'react'
12
+ filenames '*.jsx'
13
+
14
+ mimetypes 'text/x-jsx', 'application/x-jsx'
15
+
16
+ id = Javascript.id_regex
17
+
18
+ def start_embed!
19
+ @embed ||= JSX.new(options)
20
+ @embed.reset!
21
+ @embed.push(:expr_start)
22
+ push :jsx_embed_root
23
+ end
24
+
25
+ def tag_token(name)
26
+ name[0] =~ /\p{Lower}/ ? Name::Tag : Name::Class
27
+ end
28
+
29
+ start { @html = HTML.new(options) }
30
+
31
+ state :jsx_tags do
32
+ rule /</, Punctuation, :jsx_element
33
+ end
34
+
35
+ state :jsx_internal do
36
+ rule %r(</) do
37
+ token Punctuation
38
+ goto :jsx_end_tag
39
+ end
40
+
41
+ rule /{/ do
42
+ token Str::Interpol
43
+ start_embed!
44
+ end
45
+
46
+ rule /[^<>{]+/ do
47
+ delegate @html
48
+ end
49
+
50
+ mixin :jsx_tags
51
+ end
52
+
53
+ prepend :expr_start do
54
+ mixin :jsx_tags
55
+ end
56
+
57
+ state :jsx_tag do
58
+ mixin :comments_and_whitespace
59
+ rule /#{id}/ do |m|
60
+ token tag_token(m[0])
61
+ end
62
+
63
+ rule /[.]/, Punctuation
64
+ end
65
+
66
+ state :jsx_end_tag do
67
+ mixin :jsx_tag
68
+ rule />/, Punctuation, :pop!
69
+ end
70
+
71
+ state :jsx_element do
72
+ rule /#{id}=/, Name::Attribute, :jsx_attribute
73
+ mixin :jsx_tag
74
+ rule />/ do token Punctuation; goto :jsx_internal end
75
+ rule %r(/>), Punctuation, :pop!
76
+ end
77
+
78
+ state :jsx_attribute do
79
+ rule /"(\\[\\"]|[^"])*"/, Str::Double, :pop!
80
+ rule /'(\\[\\']|[^'])*'/, Str::Single, :pop!
81
+ rule /{/ do
82
+ token Str::Interpol
83
+ pop!
84
+ start_embed!
85
+ end
86
+ end
87
+
88
+ state :jsx_embed_root do
89
+ rule /[.][.][.]/, Punctuation
90
+ rule /}/, Str::Interpol, :pop!
91
+ mixin :jsx_embed
92
+ end
93
+
94
+ state :jsx_embed do
95
+ rule /{/ do delegate @embed; push :jsx_embed end
96
+ rule /}/ do delegate @embed; pop! end
97
+ rule /[^{}]+/ do
98
+ delegate @embed
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+
@@ -0,0 +1,167 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Julia < RegexLexer
7
+ title "Julia"
8
+ desc "The Julia programming language"
9
+ tag 'julia'
10
+ aliases 'jl'
11
+ filenames '*.jl'
12
+ mimetypes 'text/x-julia', 'application/x-julia'
13
+
14
+ def self.detect?(text)
15
+ return true if text.shebang? 'julia'
16
+ end
17
+
18
+ BUILTINS = /\b(?:
19
+ true | false | missing | nothing
20
+ | Inf | Inf16 | Inf32 | Inf64
21
+ | NaN | NaN16 | NaN32 | NaN64
22
+ | stdout | stderr | stdin | devnull
23
+ | pi | π | ℯ | im
24
+ )\b/x
25
+
26
+ KEYWORDS = /\b(?:
27
+ function | return | module | import | export
28
+ | if | else | elseif | end | for
29
+ | in | isa | while | try | catch
30
+ | const | local | global | using | struct
31
+ | mutable struct | abstract type | finally
32
+ | begin | do | quote | macro | for outer
33
+ )\b/x
34
+
35
+ TYPES = /\b(?:
36
+ Int | UInt | Int8
37
+ | UInt8 | Int16 | UInt16
38
+ | Int32 | UInt32 | Int64
39
+ | UInt64 | Int128 | UInt128
40
+ | Float16 | Float32 | Float64
41
+ | Bool | BigInt | BigFloat
42
+ | Complex | ComplexF16 | ComplexF32
43
+ | ComplexF64 | Missing | Nothing
44
+ | Char | String | SubString
45
+ | Regex | RegexMatch | Any
46
+ | Type | DataType | UnionAll
47
+ | (Abstract)?(Array|Vector|Matrix|VecOrMat)
48
+ )\b/x
49
+
50
+ OPERATORS = / \+ | = | - | \* | \/
51
+ | \\ | & | \| | \$ | ~
52
+ | \^ | % | ! | >>> | >>
53
+ | << | && | \|\| | \+= | -=
54
+ | \*= | \/= | \\= | ÷= | %=
55
+ | \^= | &= | \|= | \$= | >>>=
56
+ | >>= | <<= | == | != | ≠
57
+ | <= | ≤ | >= | ≥ | \.
58
+ | :: | <: | -> | \? | \.\*
59
+ | \.\^ | \.\\ | \.\/ | \\ | <
60
+ | > | ÷ | >: | : | ===
61
+ | !==
62
+ /x
63
+
64
+ PUNCTUATION = / [ \[ \] { } \( \) , ; @ ] /x
65
+
66
+
67
+ state :root do
68
+ rule /\n/, Text
69
+ rule /[^\S\n]+/, Text
70
+ rule /#=/, Comment::Multiline, :blockcomment
71
+ rule /#.*$/, Comment
72
+ rule OPERATORS, Operator
73
+ rule /\\\n/, Text
74
+ rule /\\/, Text
75
+
76
+
77
+ # functions
78
+ rule /(function)((?:\s|\\\s)+)/ do
79
+ groups Keyword, Name::Function
80
+ push :funcname
81
+ end
82
+
83
+ # types
84
+ rule /(type|typealias|abstract)((?:\s|\\\s)+)/ do
85
+ groups Keyword, Name::Class
86
+ push :typename
87
+ end
88
+ rule TYPES, Keyword::Type
89
+
90
+ # keywords
91
+ rule /(local|global|const)\b/, Keyword::Declaration
92
+ rule KEYWORDS, Keyword
93
+
94
+ rule BUILTINS, Name::Builtin
95
+
96
+ # backticks
97
+ rule /`.*?`/, Literal::String::Backtick
98
+
99
+ # chars
100
+ rule /'(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,3}|\\u[a-fA-F0-9]{1,4}|\\U[a-fA-F0-9]{1,6}|[^\\\'\n])'/, Literal::String::Char
101
+
102
+ # try to match trailing transpose
103
+ rule /(?<=[.\w)\]])\'+/, Operator
104
+
105
+ # strings
106
+ rule /(?:[IL])"/, Literal::String, :string
107
+ rule /[E]?"/, Literal::String, :string
108
+
109
+ # names
110
+ rule /@[\w.]+/, Name::Decorator
111
+ rule /(?:[a-zA-Z_\u00A1-\uffff]|[\u1000-\u10ff])(?:[a-zA-Z_0-9\u00A1-\uffff]|[\u1000-\u10ff])*!*/, Name
112
+
113
+ rule PUNCTUATION, Other
114
+
115
+ # numbers
116
+ rule /(\d+(_\d+)+\.\d*|\d*\.\d+(_\d+)+)([eEf][+-]?[0-9]+)?/, Literal::Number::Float
117
+ rule /(\d+\.\d*|\d*\.\d+)([eEf][+-]?[0-9]+)?/, Literal::Number::Float
118
+ rule /\d+(_\d+)+[eEf][+-]?[0-9]+/, Literal::Number::Float
119
+ rule /\d+[eEf][+-]?[0-9]+/, Literal::Number::Float
120
+ rule /0b[01]+(_[01]+)+/, Literal::Number::Bin
121
+ rule /0b[01]+/, Literal::Number::Bin
122
+ rule /0o[0-7]+(_[0-7]+)+/, Literal::Number::Oct
123
+ rule /0o[0-7]+/, Literal::Number::Oct
124
+ rule /0x[a-fA-F0-9]+(_[a-fA-F0-9]+)+/, Literal::Number::Hex
125
+ rule /0x[a-fA-F0-9]+/, Literal::Number::Hex
126
+ rule /\d+(_\d+)+/, Literal::Number::Integer
127
+ rule /\d+/, Literal::Number::Integer
128
+ end
129
+
130
+
131
+ state :funcname do
132
+ rule /[a-zA-Z_]\w*/, Name::Function, :pop!
133
+ rule /\([^\s\w{]{1,2}\)/, Operator, :pop!
134
+ rule /[^\s\w{]{1,2}/, Operator, :pop!
135
+ end
136
+
137
+ state :typename do
138
+ rule /[a-zA-Z_]\w*/, Name::Class, :pop!
139
+ end
140
+
141
+ state :stringescape do
142
+ rule /\\([\\abfnrtv"\']|\n|N\{.*?\}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|x[a-fA-F0-9]{2}|[0-7]{1,3})/,
143
+ Literal::String::Escape
144
+ end
145
+
146
+ state :blockcomment do
147
+ rule /[^=#]/, Comment::Multiline
148
+ rule /#=/, Comment::Multiline, :blockcomment
149
+ rule /\=#/, Comment::Multiline, :pop!
150
+ rule /[=#]/, Comment::Multiline
151
+ end
152
+
153
+ state :string do
154
+ mixin :stringescape
155
+
156
+ rule /"/, Literal::String, :pop!
157
+ rule /\\\\|\\"|\\\n/, Literal::String::Escape # included here for raw strings
158
+ rule /\$(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?/, Literal::String::Interpol
159
+ rule /[^\\"$]+/, Literal::String
160
+ # quotes, dollar signs, and backslashes must be parsed one at a time
161
+ rule /["\\]/, Literal::String
162
+ # unhandled string formatting sign
163
+ rule /\$/, Literal::String
164
+ end
165
+ end
166
+ end
167
+ end