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,51 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Docker < RegexLexer
7
+ title "Docker"
8
+ desc "Dockerfile syntax"
9
+ tag 'docker'
10
+ aliases 'dockerfile'
11
+ filenames 'Dockerfile', '*.docker'
12
+ mimetypes 'text/x-dockerfile-config'
13
+
14
+ KEYWORDS = %w(
15
+ FROM MAINTAINER CMD LABEL EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USER WORKDIR ARG STOPSIGNAL HEALTHCHECK SHELL
16
+ ).join('|')
17
+
18
+ start { @shell = Shell.new(@options) }
19
+
20
+ state :root do
21
+ rule /\s+/, Text
22
+
23
+ rule /^(ONBUILD)(\s+)(#{KEYWORDS})(.*)/io do |m|
24
+ groups Keyword, Text::Whitespace, Keyword, Str
25
+ end
26
+
27
+ rule /^(#{KEYWORDS})\b(.*)/io do |m|
28
+ groups Keyword, Str
29
+ end
30
+
31
+ rule /#.*?$/, Comment
32
+
33
+ rule /^(ONBUILD\s+)?RUN(\s+)/i do
34
+ token Keyword
35
+ push :run
36
+ @shell.reset!
37
+ end
38
+
39
+ rule /\w+/, Text
40
+ rule /[^\w]+/, Text
41
+ rule /./, Text
42
+ end
43
+
44
+ state :run do
45
+ rule /\n/, Text, :pop!
46
+ rule /\\./m, Str::Escape
47
+ rule(/(\\.|[^\n\\])+/) { delegate @shell }
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Dot < RegexLexer
7
+ title "DOT"
8
+ desc "graph description language"
9
+
10
+ tag 'dot'
11
+ filenames '*.dot'
12
+ mimetypes 'text/vnd.graphviz'
13
+
14
+ start do
15
+ @html = HTML.new(options)
16
+ end
17
+
18
+ state :comments_and_whitespace do
19
+ rule /\s+/, Text
20
+ rule %r(#.*?\n), Comment::Single
21
+ rule %r(//.*?\n), Comment::Single
22
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
23
+ end
24
+
25
+ state :html do
26
+ rule /[^<>]+/ do
27
+ delegate @html
28
+ end
29
+ rule /<.+?>/m do
30
+ delegate @html
31
+ end
32
+ rule />/, Punctuation, :pop!
33
+ end
34
+
35
+ state :ID do
36
+ rule /([a-zA-Z][a-zA-Z_0-9]*)(\s*)(=)/ do |m|
37
+ token Name, m[1]
38
+ token Text, m[2]
39
+ token Punctuation, m[3]
40
+ end
41
+ rule /[a-zA-Z][a-zA-Z_0-9]*/, Name::Variable
42
+ rule /([0-9]+)?\.[0-9]+/, Num::Float
43
+ rule /[0-9]+/, Num::Integer
44
+ rule /"(\\"|[^"])*"/, Str::Double
45
+ rule /</ do
46
+ token Punctuation
47
+ @html.reset!
48
+ push :html
49
+ end
50
+ end
51
+
52
+ state :a_list do
53
+ mixin :comments_and_whitespace
54
+ mixin :ID
55
+ rule /[=;,]/, Punctuation
56
+ rule /\]/, Operator, :pop!
57
+ end
58
+
59
+ state :root do
60
+ mixin :comments_and_whitespace
61
+ rule /\b(strict|graph|digraph|subgraph|node|edge)\b/i, Keyword
62
+ rule /[{};:=]/, Punctuation
63
+ rule /-[->]/, Operator
64
+ rule /\[/, Operator, :a_list
65
+ mixin :ID
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,66 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Eiffel < RegexLexer
7
+ title "Eiffel"
8
+ desc "Eiffel programming language"
9
+
10
+ tag 'eiffel'
11
+ filenames '*.e'
12
+ mimetypes 'text/x-eiffel'
13
+
14
+ LanguageKeywords = %w(
15
+ across agent alias all and attached as assign attribute check
16
+ class convert create debug deferred detachable do else elseif end
17
+ ensure expanded export external feature from frozen if implies inherit
18
+ inspect invariant like local loop not note obsolete old once or
19
+ Precursor redefine rename require rescue retry select separate
20
+ some then undefine until variant Void when xor
21
+ )
22
+
23
+ BooleanConstants = %w(True False)
24
+
25
+ LanguageVariables = %w(Current Result)
26
+
27
+ SimpleString = /(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/
28
+
29
+ state :root do
30
+ rule /"\[/, Str::Other, :aligned_verbatim_string
31
+ rule /"\{/, Str::Other, :non_aligned_verbatim_string
32
+ rule /"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/, Str::Double
33
+ rule /--.*/, Comment::Single
34
+ rule /'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/, Str::Char
35
+
36
+ rule /(?:#{LanguageKeywords.join('|')})\b/, Keyword
37
+ rule /(?:#{LanguageVariables.join('|')})\b/, Keyword::Variable
38
+ rule /(?:#{BooleanConstants.join('|')})\b/, Keyword::Constant
39
+
40
+ rule /\b0[xX][\da-fA-F](?:_*[\da-fA-F])*b/, Num::Hex
41
+ rule /\b0[cC][0-7](?:_*[0-7])*\b/, Num::Oct
42
+ rule /\b0[bB][01](?:_*[01])*\b/, Num::Bin
43
+ rule /\d(?:_*\d)*/, Num::Integer
44
+ rule /(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/, Num::Float
45
+
46
+ rule /:=|<<|>>|\(\||\|\)|->|\.|[{}\[\];(),:?]/, Punctuation::Indicator
47
+ rule /\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/, Operator
48
+
49
+ rule /[A-Z][\dA-Z_]*/, Name::Class
50
+ rule /[A-Za-z][\dA-Za-z_]*/, Name
51
+ rule /\s+/, Text
52
+ end
53
+
54
+ state :aligned_verbatim_string do
55
+ rule /]"/, Str::Other, :pop!
56
+ rule SimpleString, Str::Other
57
+ end
58
+
59
+ state :non_aligned_verbatim_string do
60
+ rule /}"/, Str::Other, :pop!
61
+ rule SimpleString, Str::Other
62
+ end
63
+ end
64
+ end
65
+ end
66
+
@@ -0,0 +1,134 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ # Direct port of pygments Lexer.
7
+ # See: https://bitbucket.org/birkenfeld/pygments-main/src/7304e4759ae65343d89a51359ca538912519cc31/pygments/lexers/functional.py?at=default#cl-2362
8
+ class Elixir < RegexLexer
9
+ title "Elixir"
10
+ desc "Elixir language (elixir-lang.org)"
11
+
12
+ tag 'elixir'
13
+ aliases 'elixir', 'exs'
14
+
15
+ filenames '*.ex', '*.exs'
16
+
17
+ mimetypes 'text/x-elixir', 'application/x-elixir'
18
+
19
+ state :root do
20
+ rule /\s+/m, Text
21
+ rule /#.*$/, Comment::Single
22
+ rule %r{\b(case|cond|end|bc|lc|if|unless|try|loop|receive|fn|defmodule|
23
+ defp?|defprotocol|defimpl|defrecord|defmacrop?|defdelegate|
24
+ defexception|defguardp?|defstruct|exit|raise|throw|after|rescue|catch|else)\b(?![?!])|
25
+ (?<!\.)\b(do|\-\>)\b}x, Keyword
26
+ rule /\b(import|require|use|recur|quote|unquote|super|refer)\b(?![?!])/, Keyword::Namespace
27
+ rule /(?<!\.)\b(and|not|or|when|xor|in)\b/, Operator::Word
28
+ rule %r{%=|\*=|\*\*=|\+=|\-=|\^=|\|\|=|
29
+ <=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?=[\s\t])\?|
30
+ (?<=[\s\t])!+|&(&&?|(?!\d))|\|\||\^|\*|\+|\-|/|
31
+ \||\+\+|\-\-|\*\*|\/\/|\<\-|\<\>|<<|>>|=|\.|~~~}x, Operator
32
+ rule %r{(?<!:)(:)([a-zA-Z_]\w*([?!]|=(?![>=]))?|\<\>|===?|>=?|<=?|
33
+ <=>|&&?|%\(\)|%\[\]|%\{\}|\+\+?|\-\-?|\|\|?|\!|//|[%&`/\|]|
34
+ \*\*?|=?~|<\-)|([a-zA-Z_]\w*([?!])?)(:)(?!:)}, Str::Symbol
35
+ rule /:"/, Str::Symbol, :interpoling_symbol
36
+ rule /\b(nil|true|false)\b(?![?!])|\b[A-Z]\w*\b/, Name::Constant
37
+ rule /\b(__(FILE|LINE|MODULE|MAIN|FUNCTION)__)\b(?![?!])/, Name::Builtin::Pseudo
38
+ rule /[a-zA-Z_!][\w_]*[!\?]?/, Name
39
+ rule %r{::|[%(){};,/\|:\\\[\]]}, Punctuation
40
+ rule /@[a-zA-Z_]\w*|&\d/, Name::Variable
41
+ rule %r{\b(0[xX][0-9A-Fa-f]+|\d(_?\d)*(\.(?![^\d\s])
42
+ (_?\d)*)?([eE][-+]?\d(_?\d)*)?|0[bB][01]+)\b}x, Num
43
+
44
+ mixin :strings
45
+ mixin :sigil_strings
46
+ end
47
+
48
+ state :strings do
49
+ rule /(%[A-Ba-z])?"""(?:.|\n)*?"""/, Str::Doc
50
+ rule /'''(?:.|\n)*?'''/, Str::Doc
51
+ rule /"/, Str::Doc, :dqs
52
+ rule /'.*?'/, Str::Single
53
+ rule %r{(?<!\w)\?(\\(x\d{1,2}|\h{1,2}(?!\h)\b|0[0-7]{0,2}(?![0-7])\b[^x0MC])|(\\[MC]-)+\w|[^\s\\])}, Str::Other
54
+
55
+ end
56
+
57
+ state :dqs do
58
+ rule /"/, Str::Double, :pop!
59
+ mixin :enddoublestr
60
+ end
61
+
62
+ state :interpoling do
63
+ rule /#\{/, Str::Interpol, :interpoling_string
64
+ end
65
+
66
+ state :interpoling_string do
67
+ rule /\}/, Str::Interpol, :pop!
68
+ mixin :root
69
+ end
70
+
71
+ state :interpoling_symbol do
72
+ rule /"/, Str::Symbol, :pop!
73
+ mixin :interpoling
74
+ rule /[^#"]+/, Str::Symbol
75
+ end
76
+
77
+ state :enddoublestr do
78
+ mixin :interpoling
79
+ rule /[^#"]+/, Str::Double
80
+ end
81
+
82
+ state :sigil_strings do
83
+ # ~-sigiled strings
84
+ # ~(abc), ~[abc], ~<abc>, ~|abc|, ~r/abc/, etc
85
+ # Cribbed and adjusted from Ruby lexer
86
+ delimiter_map = { '{' => '}', '[' => ']', '(' => ')', '<' => '>' }
87
+ # Match a-z for custom sigils too
88
+ sigil_opens = Regexp.union(delimiter_map.keys + %w(| / ' "))
89
+ rule /~([A-Za-z])?(#{sigil_opens})/ do |m|
90
+ open = Regexp.escape(m[2])
91
+ close = Regexp.escape(delimiter_map[m[2]] || m[2])
92
+ interp = /[SRCW]/ === m[1]
93
+ toktype = Str::Other
94
+
95
+ puts " open: #{open.inspect}" if @debug
96
+ puts " close: #{close.inspect}" if @debug
97
+
98
+ # regexes
99
+ if 'Rr'.include? m[1]
100
+ toktype = Str::Regex
101
+ push :regex_flags
102
+ end
103
+
104
+ if 'Ww'.include? m[1]
105
+ push :list_flags
106
+ end
107
+
108
+ token toktype
109
+
110
+ push do
111
+ rule /#{close}/, toktype, :pop!
112
+
113
+ if interp
114
+ mixin :interpoling
115
+ rule /#/, toktype
116
+ else
117
+ rule /[\\#]/, toktype
118
+ end
119
+
120
+ rule /[^##{open}#{close}\\]+/m, toktype
121
+ end
122
+ end
123
+ end
124
+
125
+ state :regex_flags do
126
+ rule /[fgimrsux]*/, Str::Regex, :pop!
127
+ end
128
+
129
+ state :list_flags do
130
+ rule /[csa]?/, Str::Other, :pop!
131
+ end
132
+ end
133
+ end
134
+ end
@@ -0,0 +1,90 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Elm < RegexLexer
7
+ title "Elm"
8
+ desc "The Elm programming language (http://elm-lang.org/)"
9
+
10
+ tag 'elm'
11
+ filenames '*.elm'
12
+ mimetypes 'text/x-elm'
13
+
14
+ # Keywords are logically grouped by lines
15
+ keywords = %w(
16
+ module exposing port
17
+ import as
18
+ type alias
19
+ if then else
20
+ case of
21
+ let in
22
+ )
23
+
24
+ state :root do
25
+ # Whitespaces
26
+ rule /\s+/m, Text
27
+ # Single line comments
28
+ rule /--.*/, Comment::Single
29
+ # Multiline comments
30
+ rule /{-/, Comment::Multiline, :multiline_comment
31
+
32
+ # Keywords
33
+ rule /\b(#{keywords.join('|')})\b/, Keyword
34
+
35
+ # Variable or a function
36
+ rule /[a-z][\w]*/, Name
37
+ # Underscore is a name for a variable, when it won't be used later
38
+ rule /_/, Name
39
+ # Type
40
+ rule /[A-Z][\w]*/, Keyword::Type
41
+
42
+ # Two symbol operators: -> :: // .. && || ++ |> <| << >> == /= <= >=
43
+ rule /(->|::|\/\/|\.\.|&&|\|\||\+\+|\|>|<\||>>|<<|==|\/=|<=|>=)/, Operator
44
+ # One symbol operators: + - / * % = < > ^ | !
45
+ rule /[+-\/*%=<>^\|!]/, Operator
46
+ # Lambda operator
47
+ rule /\\/, Operator
48
+ # Not standard Elm operators, but these symbols can be used for custom inflix operators. We need to highlight them as operators as well.
49
+ rule /[@\#$&~?]/, Operator
50
+
51
+ # Single, double quotes, and triple double quotes
52
+ rule /"""/, Str, :multiline_string
53
+ rule /'(\\.|.)'/, Str::Char
54
+ rule /"/, Str, :double_quote
55
+
56
+ # Numbers
57
+ rule /0x[\da-f]+/i, Num::Hex
58
+ rule /\d+e[+-]?\d+/i, Num::Float
59
+ rule /\d+\.\d+(e[+-]?\d+)?/i, Num::Float
60
+ rule /\d+/, Num::Integer
61
+
62
+ # Punctuation: [ ] ( ) , ; ` { } :
63
+ rule /[\[\](),;`{}:]/, Punctuation
64
+ end
65
+
66
+ # Multiline and nested commenting
67
+ state :multiline_comment do
68
+ rule /-}/, Comment::Multiline, :pop!
69
+ rule /{-/, Comment::Multiline, :multiline_comment
70
+ rule /[^-{}]+/, Comment::Multiline
71
+ rule /[-{}]/, Comment::Multiline
72
+ end
73
+
74
+ # Double quotes
75
+ state :double_quote do
76
+ rule /[^\\"]+/, Str::Double
77
+ rule /\\"/, Str::Escape
78
+ rule /"/, Str::Double, :pop!
79
+ end
80
+
81
+ # Multiple line string with tripple double quotes, e.g. """ multi """
82
+ state :multiline_string do
83
+ rule /\s*"""/, Str, :pop!
84
+ rule /.*/, Str
85
+ rule /\s*/, Str
86
+ end
87
+
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,53 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class ERB < TemplateLexer
7
+ title "ERB"
8
+ desc "Embedded ruby template files"
9
+
10
+ tag 'erb'
11
+ aliases 'eruby', 'rhtml'
12
+
13
+ filenames '*.erb', '*.erubis', '*.rhtml', '*.eruby'
14
+
15
+ def initialize(opts={})
16
+ @ruby_lexer = Ruby.new(opts)
17
+
18
+ super(opts)
19
+ end
20
+
21
+ start do
22
+ parent.reset!
23
+ @ruby_lexer.reset!
24
+ end
25
+
26
+ open = /<%%|<%=|<%#|<%-|<%/
27
+ close = /%%>|-%>|%>/
28
+
29
+ state :root do
30
+ rule /<%#/, Comment, :comment
31
+
32
+ rule open, Comment::Preproc, :ruby
33
+
34
+ rule /.+?(?=#{open})|.+/m do
35
+ delegate parent
36
+ end
37
+ end
38
+
39
+ state :comment do
40
+ rule close, Comment, :pop!
41
+ rule /.+?(?=#{close})|.+/m, Comment
42
+ end
43
+
44
+ state :ruby do
45
+ rule close, Comment::Preproc, :pop!
46
+
47
+ rule /.+?(?=#{close})|.+/m do
48
+ delegate @ruby_lexer
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,115 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Erlang < RegexLexer
7
+ title "Erlang"
8
+ desc "The Erlang programming language (erlang.org)"
9
+ tag 'erlang'
10
+ aliases 'erl'
11
+ filenames '*.erl', '*.hrl'
12
+
13
+ mimetypes 'text/x-erlang', 'application/x-erlang'
14
+
15
+ keywords = %w(
16
+ after begin case catch cond end fun if
17
+ let of query receive try when
18
+ )
19
+
20
+ builtins = %w(
21
+ abs append_element apply atom_to_list binary_to_list
22
+ bitstring_to_list binary_to_term bit_size bump_reductions
23
+ byte_size cancel_timer check_process_code delete_module
24
+ demonitor disconnect_node display element erase exit
25
+ float float_to_list fun_info fun_to_list
26
+ function_exported garbage_collect get get_keys
27
+ group_leader hash hd integer_to_list iolist_to_binary
28
+ iolist_size is_atom is_binary is_bitstring is_boolean
29
+ is_builtin is_float is_function is_integer is_list
30
+ is_number is_pid is_port is_process_alive is_record
31
+ is_reference is_tuple length link list_to_atom
32
+ list_to_binary list_to_bitstring list_to_existing_atom
33
+ list_to_float list_to_integer list_to_pid list_to_tuple
34
+ load_module localtime_to_universaltime make_tuple md5
35
+ md5_final md5_update memory module_loaded monitor
36
+ monitor_node node nodes open_port phash phash2
37
+ pid_to_list port_close port_command port_connect
38
+ port_control port_call port_info port_to_list
39
+ process_display process_flag process_info purge_module
40
+ put read_timer ref_to_list register resume_process
41
+ round send send_after send_nosuspend set_cookie
42
+ setelement size spawn spawn_link spawn_monitor
43
+ spawn_opt split_binary start_timer statistics
44
+ suspend_process system_flag system_info system_monitor
45
+ system_profile term_to_binary tl trace trace_delivered
46
+ trace_info trace_pattern trunc tuple_size tuple_to_list
47
+ universaltime_to_localtime unlink unregister whereis
48
+ )
49
+
50
+ operators = %r{(\+\+?|--?|\*|/|<|>|/=|=:=|=/=|=<|>=|==?|<-|!|\?)}
51
+ word_operators = %w(
52
+ and andalso band bnot bor bsl bsr bxor
53
+ div not or orelse rem xor
54
+ )
55
+
56
+ atom_re = %r{(?:[a-z][a-zA-Z0-9_]*|'[^\n']*[^\\]')}
57
+
58
+ variable_re = %r{(?:[A-Z_][a-zA-Z0-9_]*)}
59
+
60
+ escape_re = %r{(?:\\(?:[bdefnrstv\'"\\/]|[0-7][0-7]?[0-7]?|\^[a-zA-Z]))}
61
+
62
+ macro_re = %r{(?:#{variable_re}|#{atom_re})}
63
+
64
+ base_re = %r{(?:[2-9]|[12][0-9]|3[0-6])}
65
+
66
+ state :root do
67
+ rule(/\s+/, Text)
68
+ rule(/%.*\n/, Comment)
69
+ rule(%r{(#{keywords.join('|')})\b}, Keyword)
70
+ rule(%r{(#{builtins.join('|')})\b}, Name::Builtin)
71
+ rule(%r{(#{word_operators.join('|')})\b}, Operator::Word)
72
+ rule(/^-/, Punctuation, :directive)
73
+ rule(operators, Operator)
74
+ rule(/"/, Str, :string)
75
+ rule(/<</, Name::Label)
76
+ rule(/>>/, Name::Label)
77
+ rule %r{(#{atom_re})(:)} do
78
+ groups Name::Namespace, Punctuation
79
+ end
80
+ rule %r{(?:^|(?<=:))(#{atom_re})(\s*)(\()} do
81
+ groups Name::Function, Text, Punctuation
82
+ end
83
+ rule(%r{[+-]?#{base_re}#[0-9a-zA-Z]+}, Num::Integer)
84
+ rule(/[+-]?\d+/, Num::Integer)
85
+ rule(/[+-]?\d+.\d+/, Num::Float)
86
+ rule(%r{[\]\[:_@\".{}()|;,]}, Punctuation)
87
+ rule(variable_re, Name::Variable)
88
+ rule(atom_re, Name)
89
+ rule(%r{\?#{macro_re}}, Name::Constant)
90
+ rule(%r{\$(?:#{escape_re}|\\[ %]|[^\\])}, Str::Char)
91
+ rule(%r{##{atom_re}(:?\.#{atom_re})?}, Name::Label)
92
+ end
93
+
94
+ state :string do
95
+ rule(escape_re, Str::Escape)
96
+ rule(/"/, Str, :pop!)
97
+ rule(%r{~[0-9.*]*[~#+bBcdefginpPswWxX]}, Str::Interpol)
98
+ rule(%r{[^"\\~]+}, Str)
99
+ rule(/~/, Str)
100
+ end
101
+
102
+ state :directive do
103
+ rule %r{(define)(\s*)(\()(#{macro_re})} do
104
+ groups Name::Entity, Text, Punctuation, Name::Constant
105
+ pop!
106
+ end
107
+ rule %r{(record)(\s*)(\()(#{macro_re})} do
108
+ groups Name::Entity, Text, Punctuation, Name::Label
109
+ pop!
110
+ end
111
+ rule(atom_re, Name::Entity, :pop!)
112
+ end
113
+ end
114
+ end
115
+ end