rouge_ecl 0.0.1

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 (319) 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.rb +82 -0
  6. data/lib/rouge/cli.rb +429 -0
  7. data/lib/rouge/demos/abap +6 -0
  8. data/lib/rouge/demos/actionscript +4 -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/csharp +5 -0
  27. data/lib/rouge/demos/css +4 -0
  28. data/lib/rouge/demos/d +16 -0
  29. data/lib/rouge/demos/dart +6 -0
  30. data/lib/rouge/demos/diff +7 -0
  31. data/lib/rouge/demos/digdag +19 -0
  32. data/lib/rouge/demos/docker +9 -0
  33. data/lib/rouge/demos/dot +5 -0
  34. data/lib/rouge/demos/ecl +1 -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/html +8 -0
  54. data/lib/rouge/demos/http +14 -0
  55. data/lib/rouge/demos/hylang +10 -0
  56. data/lib/rouge/demos/idlang +8 -0
  57. data/lib/rouge/demos/igorpro +9 -0
  58. data/lib/rouge/demos/ini +4 -0
  59. data/lib/rouge/demos/io +11 -0
  60. data/lib/rouge/demos/irb +4 -0
  61. data/lib/rouge/demos/irb_output +2 -0
  62. data/lib/rouge/demos/java +5 -0
  63. data/lib/rouge/demos/javascript +1 -0
  64. data/lib/rouge/demos/jinja +9 -0
  65. data/lib/rouge/demos/json +1 -0
  66. data/lib/rouge/demos/json-doc +1 -0
  67. data/lib/rouge/demos/jsonnet +28 -0
  68. data/lib/rouge/demos/jsx +17 -0
  69. data/lib/rouge/demos/julia +11 -0
  70. data/lib/rouge/demos/kotlin +3 -0
  71. data/lib/rouge/demos/lasso +12 -0
  72. data/lib/rouge/demos/liquid +11 -0
  73. data/lib/rouge/demos/literate_coffeescript +3 -0
  74. data/lib/rouge/demos/literate_haskell +7 -0
  75. data/lib/rouge/demos/llvm +20 -0
  76. data/lib/rouge/demos/lua +12 -0
  77. data/lib/rouge/demos/make +6 -0
  78. data/lib/rouge/demos/markdown +4 -0
  79. data/lib/rouge/demos/matlab +6 -0
  80. data/lib/rouge/demos/moonscript +16 -0
  81. data/lib/rouge/demos/mosel +10 -0
  82. data/lib/rouge/demos/mxml +22 -0
  83. data/lib/rouge/demos/nasm +26 -0
  84. data/lib/rouge/demos/nginx +5 -0
  85. data/lib/rouge/demos/nim +27 -0
  86. data/lib/rouge/demos/nix +19 -0
  87. data/lib/rouge/demos/objective_c +18 -0
  88. data/lib/rouge/demos/ocaml +12 -0
  89. data/lib/rouge/demos/pascal +14 -0
  90. data/lib/rouge/demos/perl +5 -0
  91. data/lib/rouge/demos/php +3 -0
  92. data/lib/rouge/demos/plaintext +1 -0
  93. data/lib/rouge/demos/plist +142 -0
  94. data/lib/rouge/demos/pony +17 -0
  95. data/lib/rouge/demos/powershell +49 -0
  96. data/lib/rouge/demos/praat +26 -0
  97. data/lib/rouge/demos/prolog +9 -0
  98. data/lib/rouge/demos/prometheus +9 -0
  99. data/lib/rouge/demos/properties +7 -0
  100. data/lib/rouge/demos/protobuf +5 -0
  101. data/lib/rouge/demos/puppet +6 -0
  102. data/lib/rouge/demos/python +6 -0
  103. data/lib/rouge/demos/q +2 -0
  104. data/lib/rouge/demos/qml +9 -0
  105. data/lib/rouge/demos/r +8 -0
  106. data/lib/rouge/demos/racket +24 -0
  107. data/lib/rouge/demos/ruby +9 -0
  108. data/lib/rouge/demos/rust +12 -0
  109. data/lib/rouge/demos/sass +3 -0
  110. data/lib/rouge/demos/scala +3 -0
  111. data/lib/rouge/demos/scheme +4 -0
  112. data/lib/rouge/demos/scss +5 -0
  113. data/lib/rouge/demos/sed +4 -0
  114. data/lib/rouge/demos/shell +2 -0
  115. data/lib/rouge/demos/sieve +10 -0
  116. data/lib/rouge/demos/slim +17 -0
  117. data/lib/rouge/demos/smalltalk +6 -0
  118. data/lib/rouge/demos/smarty +12 -0
  119. data/lib/rouge/demos/sml +4 -0
  120. data/lib/rouge/demos/sql +1 -0
  121. data/lib/rouge/demos/swift +5 -0
  122. data/lib/rouge/demos/tap +5 -0
  123. data/lib/rouge/demos/tcl +1 -0
  124. data/lib/rouge/demos/tex +1 -0
  125. data/lib/rouge/demos/toml +9 -0
  126. data/lib/rouge/demos/tsx +17 -0
  127. data/lib/rouge/demos/tulip +13 -0
  128. data/lib/rouge/demos/turtle +26 -0
  129. data/lib/rouge/demos/twig +9 -0
  130. data/lib/rouge/demos/typescript +1 -0
  131. data/lib/rouge/demos/vala +8 -0
  132. data/lib/rouge/demos/vb +4 -0
  133. data/lib/rouge/demos/verilog +27 -0
  134. data/lib/rouge/demos/vhdl +23 -0
  135. data/lib/rouge/demos/viml +14 -0
  136. data/lib/rouge/demos/vue +11 -0
  137. data/lib/rouge/demos/wollok +11 -0
  138. data/lib/rouge/demos/xml +2 -0
  139. data/lib/rouge/demos/yaml +4 -0
  140. data/lib/rouge/formatter.rb +75 -0
  141. data/lib/rouge/formatters/html.rb +37 -0
  142. data/lib/rouge/formatters/html_inline.rb +30 -0
  143. data/lib/rouge/formatters/html_legacy.rb +44 -0
  144. data/lib/rouge/formatters/html_linewise.rb +27 -0
  145. data/lib/rouge/formatters/html_pygments.rb +16 -0
  146. data/lib/rouge/formatters/html_table.rb +61 -0
  147. data/lib/rouge/formatters/null.rb +19 -0
  148. data/lib/rouge/formatters/terminal256.rb +180 -0
  149. data/lib/rouge/guesser.rb +55 -0
  150. data/lib/rouge/guessers/disambiguation.rb +101 -0
  151. data/lib/rouge/guessers/filename.rb +25 -0
  152. data/lib/rouge/guessers/glob_mapping.rb +43 -0
  153. data/lib/rouge/guessers/mimetype.rb +14 -0
  154. data/lib/rouge/guessers/modeline.rb +44 -0
  155. data/lib/rouge/guessers/source.rb +29 -0
  156. data/lib/rouge/guessers/util.rb +32 -0
  157. data/lib/rouge/lexer.rb +461 -0
  158. data/lib/rouge/lexers/abap.rb +238 -0
  159. data/lib/rouge/lexers/actionscript.rb +195 -0
  160. data/lib/rouge/lexers/apache.rb +71 -0
  161. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  162. data/lib/rouge/lexers/apiblueprint.rb +47 -0
  163. data/lib/rouge/lexers/apple_script.rb +367 -0
  164. data/lib/rouge/lexers/awk.rb +161 -0
  165. data/lib/rouge/lexers/biml.rb +41 -0
  166. data/lib/rouge/lexers/bsl.rb +81 -0
  167. data/lib/rouge/lexers/c.rb +212 -0
  168. data/lib/rouge/lexers/ceylon.rb +123 -0
  169. data/lib/rouge/lexers/cfscript.rb +153 -0
  170. data/lib/rouge/lexers/clojure.rb +112 -0
  171. data/lib/rouge/lexers/cmake.rb +206 -0
  172. data/lib/rouge/lexers/coffeescript.rb +174 -0
  173. data/lib/rouge/lexers/common_lisp.rb +345 -0
  174. data/lib/rouge/lexers/conf.rb +24 -0
  175. data/lib/rouge/lexers/console.rb +136 -0
  176. data/lib/rouge/lexers/coq.rb +187 -0
  177. data/lib/rouge/lexers/cpp.rb +78 -0
  178. data/lib/rouge/lexers/csharp.rb +114 -0
  179. data/lib/rouge/lexers/css.rb +273 -0
  180. data/lib/rouge/lexers/d.rb +176 -0
  181. data/lib/rouge/lexers/dart.rb +104 -0
  182. data/lib/rouge/lexers/diff.rb +31 -0
  183. data/lib/rouge/lexers/digdag.rb +68 -0
  184. data/lib/rouge/lexers/docker.rb +50 -0
  185. data/lib/rouge/lexers/dot.rb +68 -0
  186. data/lib/rouge/lexers/ecl.rb +138 -0
  187. data/lib/rouge/lexers/eiffel.rb +65 -0
  188. data/lib/rouge/lexers/elixir.rb +133 -0
  189. data/lib/rouge/lexers/elm.rb +89 -0
  190. data/lib/rouge/lexers/erb.rb +52 -0
  191. data/lib/rouge/lexers/erlang.rb +114 -0
  192. data/lib/rouge/lexers/factor.rb +302 -0
  193. data/lib/rouge/lexers/fortran.rb +176 -0
  194. data/lib/rouge/lexers/fsharp.rb +118 -0
  195. data/lib/rouge/lexers/gherkin.rb +137 -0
  196. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  197. data/lib/rouge/lexers/glsl.rb +135 -0
  198. data/lib/rouge/lexers/go.rb +174 -0
  199. data/lib/rouge/lexers/gradle.rb +37 -0
  200. data/lib/rouge/lexers/graphql.rb +243 -0
  201. data/lib/rouge/lexers/groovy.rb +112 -0
  202. data/lib/rouge/lexers/hack.rb +48 -0
  203. data/lib/rouge/lexers/haml.rb +229 -0
  204. data/lib/rouge/lexers/handlebars.rb +79 -0
  205. data/lib/rouge/lexers/haskell.rb +182 -0
  206. data/lib/rouge/lexers/html.rb +139 -0
  207. data/lib/rouge/lexers/http.rb +80 -0
  208. data/lib/rouge/lexers/hylang.rb +93 -0
  209. data/lib/rouge/lexers/idlang.rb +310 -0
  210. data/lib/rouge/lexers/igorpro.rb +408 -0
  211. data/lib/rouge/lexers/ini.rb +53 -0
  212. data/lib/rouge/lexers/io.rb +68 -0
  213. data/lib/rouge/lexers/irb.rb +66 -0
  214. data/lib/rouge/lexers/java.rb +87 -0
  215. data/lib/rouge/lexers/javascript.rb +281 -0
  216. data/lib/rouge/lexers/jinja.rb +137 -0
  217. data/lib/rouge/lexers/json.rb +29 -0
  218. data/lib/rouge/lexers/json_doc.rb +23 -0
  219. data/lib/rouge/lexers/jsonnet.rb +151 -0
  220. data/lib/rouge/lexers/jsx.rb +102 -0
  221. data/lib/rouge/lexers/julia.rb +172 -0
  222. data/lib/rouge/lexers/kotlin.rb +79 -0
  223. data/lib/rouge/lexers/lasso.rb +214 -0
  224. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  225. data/lib/rouge/lexers/liquid.rb +287 -0
  226. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  227. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  228. data/lib/rouge/lexers/llvm.rb +80 -0
  229. data/lib/rouge/lexers/lua.rb +125 -0
  230. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  231. data/lib/rouge/lexers/make.rb +112 -0
  232. data/lib/rouge/lexers/markdown.rb +154 -0
  233. data/lib/rouge/lexers/matlab.rb +71 -0
  234. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  235. data/lib/rouge/lexers/moonscript.rb +114 -0
  236. data/lib/rouge/lexers/mosel.rb +231 -0
  237. data/lib/rouge/lexers/mxml.rb +68 -0
  238. data/lib/rouge/lexers/nasm.rb +198 -0
  239. data/lib/rouge/lexers/nginx.rb +71 -0
  240. data/lib/rouge/lexers/nim.rb +152 -0
  241. data/lib/rouge/lexers/nix.rb +205 -0
  242. data/lib/rouge/lexers/objective_c.rb +194 -0
  243. data/lib/rouge/lexers/ocaml.rb +100 -0
  244. data/lib/rouge/lexers/pascal.rb +66 -0
  245. data/lib/rouge/lexers/perl.rb +196 -0
  246. data/lib/rouge/lexers/php.rb +193 -0
  247. data/lib/rouge/lexers/php/builtins.rb +194 -0
  248. data/lib/rouge/lexers/plain_text.rb +26 -0
  249. data/lib/rouge/lexers/plist.rb +45 -0
  250. data/lib/rouge/lexers/pony.rb +93 -0
  251. data/lib/rouge/lexers/powershell.rb +678 -0
  252. data/lib/rouge/lexers/praat.rb +350 -0
  253. data/lib/rouge/lexers/prolog.rb +59 -0
  254. data/lib/rouge/lexers/prometheus.rb +121 -0
  255. data/lib/rouge/lexers/properties.rb +51 -0
  256. data/lib/rouge/lexers/protobuf.rb +70 -0
  257. data/lib/rouge/lexers/puppet.rb +128 -0
  258. data/lib/rouge/lexers/python.rb +232 -0
  259. data/lib/rouge/lexers/q.rb +123 -0
  260. data/lib/rouge/lexers/qml.rb +73 -0
  261. data/lib/rouge/lexers/r.rb +89 -0
  262. data/lib/rouge/lexers/racket.rb +543 -0
  263. data/lib/rouge/lexers/ruby.rb +437 -0
  264. data/lib/rouge/lexers/rust.rb +192 -0
  265. data/lib/rouge/lexers/sass.rb +74 -0
  266. data/lib/rouge/lexers/sass/common.rb +180 -0
  267. data/lib/rouge/lexers/scala.rb +142 -0
  268. data/lib/rouge/lexers/scheme.rb +112 -0
  269. data/lib/rouge/lexers/scss.rb +34 -0
  270. data/lib/rouge/lexers/sed.rb +172 -0
  271. data/lib/rouge/lexers/shell.rb +189 -0
  272. data/lib/rouge/lexers/sieve.rb +96 -0
  273. data/lib/rouge/lexers/slim.rb +228 -0
  274. data/lib/rouge/lexers/smalltalk.rb +116 -0
  275. data/lib/rouge/lexers/smarty.rb +80 -0
  276. data/lib/rouge/lexers/sml.rb +344 -0
  277. data/lib/rouge/lexers/sql.rb +140 -0
  278. data/lib/rouge/lexers/swift.rb +181 -0
  279. data/lib/rouge/lexers/tap.rb +87 -0
  280. data/lib/rouge/lexers/tcl.rb +192 -0
  281. data/lib/rouge/lexers/tex.rb +69 -0
  282. data/lib/rouge/lexers/toml.rb +67 -0
  283. data/lib/rouge/lexers/tsx.rb +19 -0
  284. data/lib/rouge/lexers/tulip.rb +106 -0
  285. data/lib/rouge/lexers/turtle.rb +63 -0
  286. data/lib/rouge/lexers/twig.rb +39 -0
  287. data/lib/rouge/lexers/typescript.rb +22 -0
  288. data/lib/rouge/lexers/typescript/common.rb +33 -0
  289. data/lib/rouge/lexers/vala.rb +77 -0
  290. data/lib/rouge/lexers/vb.rb +164 -0
  291. data/lib/rouge/lexers/verilog.rb +164 -0
  292. data/lib/rouge/lexers/vhdl.rb +97 -0
  293. data/lib/rouge/lexers/viml.rb +101 -0
  294. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  295. data/lib/rouge/lexers/vue.rb +122 -0
  296. data/lib/rouge/lexers/wollok.rb +103 -0
  297. data/lib/rouge/lexers/xml.rb +57 -0
  298. data/lib/rouge/lexers/yaml.rb +373 -0
  299. data/lib/rouge/plugins/redcarpet.rb +30 -0
  300. data/lib/rouge/regex_lexer.rb +441 -0
  301. data/lib/rouge/template_lexer.rb +20 -0
  302. data/lib/rouge/text_analyzer.rb +49 -0
  303. data/lib/rouge/theme.rb +213 -0
  304. data/lib/rouge/themes/base16.rb +130 -0
  305. data/lib/rouge/themes/colorful.rb +67 -0
  306. data/lib/rouge/themes/github.rb +71 -0
  307. data/lib/rouge/themes/gruvbox.rb +167 -0
  308. data/lib/rouge/themes/igor_pro.rb +20 -0
  309. data/lib/rouge/themes/molokai.rb +82 -0
  310. data/lib/rouge/themes/monokai.rb +92 -0
  311. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  312. data/lib/rouge/themes/pastie.rb +69 -0
  313. data/lib/rouge/themes/thankful_eyes.rb +74 -0
  314. data/lib/rouge/themes/tulip.rb +69 -0
  315. data/lib/rouge/token.rb +182 -0
  316. data/lib/rouge/util.rb +101 -0
  317. data/lib/rouge/version.rb +7 -0
  318. data/rouge.gemspec +23 -0
  319. metadata +365 -0
@@ -0,0 +1,31 @@
1
+ module Rouge
2
+ module Lexers
3
+ class Diff < RegexLexer
4
+ title 'diff'
5
+ desc 'Lexes unified diffs or patches'
6
+
7
+ tag 'diff'
8
+ aliases 'patch', 'udiff'
9
+ filenames '*.diff', '*.patch'
10
+ mimetypes 'text/x-diff', 'text/x-patch'
11
+
12
+ def self.detect?(text)
13
+ return true if text.start_with?('Index: ')
14
+ return true if text =~ %r(\Adiff[^\n]*?\ba/[^\n]*\bb/)
15
+ return true if text =~ /(---|[+][+][+]).*?\n(---|[+][+][+])/
16
+ end
17
+
18
+ state :root do
19
+ rule(/^ .*$\n?/, Text)
20
+ rule(/^---$\n?/, Text)
21
+ rule(/^\+.*$\n?/, Generic::Inserted)
22
+ rule(/^-+.*$\n?/, Generic::Deleted)
23
+ rule(/^!.*$\n?/, Generic::Strong)
24
+ rule(/^@.*$\n?/, Generic::Subheading)
25
+ rule(/^([Ii]ndex|diff).*$\n?/, Generic::Heading)
26
+ rule(/^=.*$\n?/, Generic::Heading)
27
+ rule(/.*$\n?/, Text)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,68 @@
1
+ require 'set'
2
+ module Rouge
3
+ module Lexers
4
+ load_lexer 'yaml.rb'
5
+
6
+ class Digdag < YAML
7
+ title 'digdag'
8
+ desc 'A simple, open source, multi-cloud workflow engine (https://www.digdag.io/)'
9
+ tag 'digdag'
10
+ filenames '*.dig'
11
+
12
+ mimetypes 'application/x-digdag'
13
+
14
+ # http://docs.digdag.io/operators.html
15
+ # as of digdag v0.9.10
16
+ KEYWORD_PATTERN = Regexp.union(%w(
17
+ call
18
+ require
19
+ loop
20
+ for_each
21
+ if
22
+ fail
23
+ echo
24
+
25
+ td
26
+ td_run
27
+ td_ddl
28
+ td_load
29
+ td_for_each
30
+ td_wait
31
+ td_wait_table
32
+ td_partial_delete
33
+ td_table_export
34
+
35
+ pg
36
+
37
+ mail
38
+ http
39
+ s3_wait
40
+ redshift
41
+ redshift_load
42
+ redshift_unload
43
+ emr
44
+
45
+ gcs_wait
46
+ bq
47
+ bq_ddl
48
+ bq_extract
49
+ bq_load
50
+
51
+ sh
52
+ py
53
+ rb
54
+ embulk
55
+ ).map { |name| "#{name}>"} + %w(
56
+ _do
57
+ _parallel
58
+ ))
59
+
60
+ prepend :block_nodes do
61
+ rule /(#{KEYWORD_PATTERN})(:)(?=\s|$)/ do |m|
62
+ groups Keyword::Reserved, Punctuation::Indicator
63
+ set_indent m[0], :implicit => true
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,50 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Docker < RegexLexer
6
+ title "Docker"
7
+ desc "Dockerfile syntax"
8
+ tag 'docker'
9
+ aliases 'dockerfile'
10
+ filenames 'Dockerfile', '*.docker'
11
+ mimetypes 'text/x-dockerfile-config'
12
+
13
+ KEYWORDS = %w(
14
+ FROM MAINTAINER CMD LABEL EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USER WORKDIR ARG STOPSIGNAL HEALTHCHECK SHELL
15
+ ).join('|')
16
+
17
+ start { @shell = Shell.new(@options) }
18
+
19
+ state :root do
20
+ rule /\s+/, Text
21
+
22
+ rule /^(ONBUILD)(\s+)(#{KEYWORDS})(.*)/io do |m|
23
+ groups Keyword, Text::Whitespace, Keyword, Str
24
+ end
25
+
26
+ rule /^(#{KEYWORDS})\b(.*)/io do |m|
27
+ groups Keyword, Str
28
+ end
29
+
30
+ rule /#.*?$/, Comment
31
+
32
+ rule /^(ONBUILD\s+)?RUN(\s+)/i do
33
+ token Keyword
34
+ push :run
35
+ @shell.reset!
36
+ end
37
+
38
+ rule /\w+/, Text
39
+ rule /[^\w]+/, Text
40
+ rule /./, Text
41
+ end
42
+
43
+ state :run do
44
+ rule /\n/, Text, :pop!
45
+ rule /\\./m, Str::Escape
46
+ rule(/(\\.|[^\n\\])+/) { delegate @shell }
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,68 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Dot < RegexLexer
6
+ title "DOT"
7
+ desc "graph description language"
8
+
9
+ tag 'dot'
10
+ filenames '*.dot'
11
+ mimetypes 'text/vnd.graphviz'
12
+
13
+ start do
14
+ @html = HTML.new(options)
15
+ end
16
+
17
+ state :comments_and_whitespace do
18
+ rule /\s+/, Text
19
+ rule %r(#.*?\n), Comment::Single
20
+ rule %r(//.*?\n), Comment::Single
21
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
22
+ end
23
+
24
+ state :html do
25
+ rule /[^<>]+/ do
26
+ delegate @html
27
+ end
28
+ rule /<.+?>/m do
29
+ delegate @html
30
+ end
31
+ rule />/, Punctuation, :pop!
32
+ end
33
+
34
+ state :ID do
35
+ rule /([a-zA-Z][a-zA-Z_0-9]*)(\s*)(=)/ do |m|
36
+ token Name, m[1]
37
+ token Text, m[2]
38
+ token Punctuation, m[3]
39
+ end
40
+ rule /[a-zA-Z][a-zA-Z_0-9]*/, Name::Variable
41
+ rule /([0-9]+)?\.[0-9]+/, Num::Float
42
+ rule /[0-9]+/, Num::Integer
43
+ rule /"(\\"|[^"])*"/, Str::Double
44
+ rule /</ do
45
+ token Punctuation
46
+ @html.reset!
47
+ push :html
48
+ end
49
+ end
50
+
51
+ state :a_list do
52
+ mixin :comments_and_whitespace
53
+ mixin :ID
54
+ rule /[=;,]/, Punctuation
55
+ rule /\]/, Operator, :pop!
56
+ end
57
+
58
+ state :root do
59
+ mixin :comments_and_whitespace
60
+ rule /\b(strict|graph|digraph|subgraph|node|edge)\b/i, Keyword
61
+ rule /[{};:=]/, Punctuation
62
+ rule /-[->]/, Operator
63
+ rule /\[/, Operator, :a_list
64
+ mixin :ID
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,138 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class ECL < RegexLexer
6
+ title "ECL"
7
+ desc "The ECL Programming Language (hpccsystems.com/about#Platform)"
8
+
9
+ tag 'ECL'
10
+ aliases 'ecl'
11
+
12
+ filenames '*.ecl'
13
+
14
+ mimetypes 'text/x-ecl', 'application/x-ecl'
15
+
16
+ def self.keywords
17
+ @keywords ||= Set.new %w(
18
+ AND OR IN NOT ALL ANY AS FROM ATMOST BEFORE BEGINC BEST BETWEEN CASE CONST
19
+ COUNTER CSV DESCEND EMBED ENCRYPT END ENDC ENDEMBED ENDMACRO ENUM EXCEPT
20
+ EXCLUSIVE EXPIRE EXPORT EXTEND FAIL FEW FIRST FLAT FULL FUNCTION FUNCTIONMACRO
21
+ GROUP HEADING HOLE IFBLOCK IMPORT IN JOINED KEEP KEYED LAST LEFT LIMIT LOAD
22
+ LOCAL LOCALE LOOKUP MACRO MANY MAXCOUNT MAXLENGTH MIN SKEW MODULE INTERFACE
23
+ NAMED NOCASE NOROOT NOSCAN NOSORT OF ONLY OPT OUTER OVERWRITE PACKED
24
+ PARTITION PENALTY PHYSICALLENGTH PIPE QUOTE RECORD REPEAT RETURN RIGHT
25
+ ROWS SCAN SELF SEPARATOR SERVICE SHARED SKEW SKIP SQL STORE TERMINATOR
26
+ THOR THRESHOLD TOKEN TRANSFORM TRIM TYPE UNICODEORDER UNSORTED VALIDATE
27
+ VIRTUAL WHOLE WILD WITHIN XML XPATH AFTER CLUSTER COMPRESSED COMPRESSION
28
+ DEFAULT ENCODING ESCAPE FILEPOSITION FORWARD GROUPED INNER INTERNAL
29
+ LINKCOUNTED LITERAL LITTLE_ENDIAN LZW MOFN MULTIPLE NAMESPACE NOCASE
30
+ WNOTRIM NOXPATH ONFAIL OVERWRITE PREFETCH RETRY RIGHT1 RIGHT2 ROWSET
31
+ XPATH SCOPE SMART SOAPACTION STABLE TIMELIMIT TIMEOUT UNORDERED UNSTABLE
32
+ UPDATE USE WIDTH __COMPRESSED__
33
+ )
34
+ end
35
+
36
+ def self.builtins
37
+ @builtins ||= Set.new %w(
38
+ ABS ACOS AGGREGATE ALLNODES APPLY ASCII ASIN ASSTRING ATAN ATAN2 AVE CASE
39
+ CATCH CHOOSE CHOOSEN CHOOSESETS CLUSTERSIZE COMBINE CORRELATION COS COSH
40
+ COUNT COVARIANCE CRON DATASET DEDUP DEFINE DENORMALIZE DICTIONARY DISTRIBUTE
41
+ DISTRIBUTED DISTRIBUTION EBCDIC ENTH ERROR EVALUATE EVENT EVENTEXTRA EVENTNAME
42
+ EXISTS EXP FAILCODE FAILMESSAGE FETCH FROMUNICODE FROMXML GETENV GETISVALID GLOBAL
43
+ GRAPH GROUP HASH HASH32 HASH64 HASHCRC HASHMD5 HAVING HTTPCALL HTTPHEADER IF IFF
44
+ INDEX INTFORMAT ISVALID ITERATE JOIN KEYUNICODE LENGTH LIBRARY LIMIT LN LOCAL LOG
45
+ LOOP MAP MATCHED MATCHLENGTH MATCHPOSITION MATCHTEXT MATCHUNICODE MAX MERGE MERGEJOIN
46
+ MIN NOFOLD NOLOCAL NONEMPTY NORMALIZE PARSE PIPE POWER PRELOAD PROCESS PROJECT PULL RANDOM
47
+ RANGE RANK RANKED REALFORMAT RECORDOF REGEXFIND REGEXREPLACE REGROUP REJECTED ROLLUP ROUND
48
+ ROUNDUP ROW ROWDIFF SAMPLE SET SIN SINH SIZEOF SOAPCALL SORT SORTED SQRT STEPPED STORED
49
+ SUM TABLE TAN TANH THISNODE TOPN TOUNICODE TOXML TRANSFER TRANSFORM TRIM TRUNCATE TYPEOF
50
+ UNGROUP UNICODEORDER VARIANCE WHICH WORKUNIT XMLDECODE XMLENCODE XMLTEXT XMLUNICODE
51
+ )
52
+ end
53
+
54
+ def self.actions
55
+ @actions ||= Set.new %w(
56
+ APPLY ASSERT BUILD BUILDINDEX EVALUATE FAIL KEYDIFF KEYPATCH LOADXML NOTHOR NOTIFY OUTPUT
57
+ PARALLEL SEQUENTIAL SOAPCALL WAIT
58
+ )
59
+ end
60
+
61
+ def self.template
62
+ @template ||= Set.new %w(
63
+ APPEND BREAK DECLARE DEMANGLE END FOR GETDATATYPE IF INMODULE LOOP MANGLE ONWARNING OPTION
64
+ SET STORED UNIQUENAME WORKUNIT
65
+ )
66
+ end
67
+
68
+ state :root do
69
+ rule /\s+/m, Text
70
+ rule %r(//(\\.|.)*?$), Comment::Single
71
+ rule %r(/\*), Comment::Multiline, :multiline_comments
72
+ rule /\d+/, Num::Integer
73
+ rule /\b(?i:(abs|acos|aggregate|allnodes|apply|ascii|asin|asstring|atan|atan2|ave|case|catch|choose|choosen|choosesets|clustersize|combine|correlation|cos|cosh|count|covariance|cron|dataset|dedup|define|denormalize|dictionary|distribute|distributed|distribution|ebcdic|enth|error|evaluate|event|eventextra|eventname|exists|exp|failcode|failmessage|fetch|fromunicode|fromxml|getenv|getisvalid|global|graph|group|hash|hash32|hash64|hashcrc|hashmd5|having|httpcall|httpheader|if|iff|index|intformat|isvalid|iterate|join|keyunicode|length|library|limit|ln|local|log|loop|map|matched|matchlength|matchposition|matchtext|matchunicode|max|merge|mergejoin|min|nofold|nolocal|nonempty|normalize|parse|pipe|power|preload|process|project|pull|random|range|rank|ranked|realformat|recordof|regexfind|regexreplace|regroup|rejected|rollup|round|roundup|row|rowdiff|sample|set|sin|sinh|sizeof|soapcall|sort|sorted|sqrt|stepped|stored|sum|table|tan|tanh|thisnode|topn|tounicode|toxml|transfer|transform|trim|truncate|typeof|ungroup|unicodeorder|variance|which|workunit|xmldecode|xmlencode|xmltext|xmlunicode))\b/, Operator
74
+ rule /\b(?i:(data|string|qstring|varstring|varunicode|unicode))\d+\b/, Keyword::Type
75
+ rule /\b(?i:(integer|unsigned))[1-8]\b/, Keyword::Type
76
+ rule /\b(?i:(ascii|big_endian|boolean|data|decimal|ebcdic|grouped|integer|linkcounted|pattern|qstring|real|record|rule|set of|streamed|string|token|udecimal|unicode|unsigned|varstring|varunicode))\b/, Keyword::Type
77
+ rule /\b(?i)(u?)decimal(\d+(_\d+)?)\b/, Keyword::Type
78
+ rule /\b(?i:(apply|assert|build|buildindex|evaluate|fail|keydiff|keypatch|loadxml|nothor|notify|output|parallel|sequential|soapcall|wait))\b/, Operator
79
+
80
+ rule /'/, Str::Single, :single_string
81
+ rule /"/, Name::Variable, :double_string
82
+ rule /`/, Name::Variable, :backtick
83
+
84
+ rule /(#)(?i)(\w+)/, Operator
85
+
86
+ rule /([A-Za-z_]+)\s*(\()/ do |m|
87
+ if !(self.class.keywords.include? m[1].upcase or self.class.builtins.include? m[1].upcase)
88
+ token Name::Function
89
+ end
90
+ if self.class.keywords.include? m[1].upcase
91
+ token Keyword
92
+ end
93
+ if self.class.builtins.include? m[1].upcase
94
+ token Operator
95
+ end
96
+ end
97
+ rule /[\$\w][\w\d]*/ do |m|
98
+ if self.class.keywords.include? m[0].upcase
99
+ token Keyword
100
+ else
101
+ token Name
102
+ end
103
+ end
104
+
105
+ rule %r([+*/<>=~!@#%^&|?^-]), Operator
106
+ rule /[;:()\[\],.]/, Punctuation
107
+ end
108
+
109
+ state :multiline_comments do
110
+ rule %r(/[*]), Comment::Multiline, :multiline_comments
111
+ rule %r([*]/), Comment::Multiline, :pop!
112
+ rule %r([^/*]+), Comment::Multiline
113
+ rule %r([/*]), Comment::Multiline
114
+ end
115
+
116
+ state :backtick do
117
+ rule /\\./, Str::Escape
118
+ rule /``/, Str::Escape
119
+ rule /`/, Name::Variable, :pop!
120
+ rule /[^\\`]+/, Name::Variable
121
+ end
122
+
123
+ state :single_string do
124
+ rule /\\./, Str::Escape
125
+ rule /''/, Str::Escape
126
+ rule /'/, Str::Single, :pop!
127
+ rule /[^\\']+/, Str::Single
128
+ end
129
+
130
+ state :double_string do
131
+ rule /\\./, Str::Escape
132
+ rule /""/, Str::Escape
133
+ rule /"/, Name::Variable, :pop!
134
+ rule /[^\\"]+/, Name::Variable
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,65 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Eiffel < RegexLexer
6
+ title "Eiffel"
7
+ desc "Eiffel programming language"
8
+
9
+ tag 'eiffel'
10
+ filenames '*.e'
11
+ mimetypes 'text/x-eiffel'
12
+
13
+ LanguageKeywords = %w(
14
+ across agent alias all and attached as assign attribute check
15
+ class convert create debug deferred detachable do else elseif end
16
+ ensure expanded export external feature from frozen if implies inherit
17
+ inspect invariant like local loop not note obsolete old once or
18
+ Precursor redefine rename require rescue retry select separate
19
+ some then undefine until variant Void when xor
20
+ )
21
+
22
+ BooleanConstants = %w(True False)
23
+
24
+ LanguageVariables = %w(Current Result)
25
+
26
+ 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)*)\/)+?/
27
+
28
+ state :root do
29
+ rule /"\[/, Str::Other, :aligned_verbatim_string
30
+ rule /"\{/, Str::Other, :non_aligned_verbatim_string
31
+ 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
32
+ rule /--.*/, Comment::Single
33
+ 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
34
+
35
+ rule /(?:#{LanguageKeywords.join('|')})\b/, Keyword
36
+ rule /(?:#{LanguageVariables.join('|')})\b/, Keyword::Variable
37
+ rule /(?:#{BooleanConstants.join('|')})\b/, Keyword::Constant
38
+
39
+ rule /\b0[xX][\da-fA-F](?:_*[\da-fA-F])*b/, Num::Hex
40
+ rule /\b0[cC][0-7](?:_*[0-7])*\b/, Num::Oct
41
+ rule /\b0[bB][01](?:_*[01])*\b/, Num::Bin
42
+ rule /\d(?:_*\d)*/, Num::Integer
43
+ rule /(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/, Num::Float
44
+
45
+ rule /:=|<<|>>|\(\||\|\)|->|\.|[{}\[\];(),:?]/, Punctuation::Indicator
46
+ rule /\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/, Operator
47
+
48
+ rule /[A-Z][\dA-Z_]*/, Name::Class
49
+ rule /[A-Za-z][\dA-Za-z_]*/, Name
50
+ rule /\s+/, Text
51
+ end
52
+
53
+ state :aligned_verbatim_string do
54
+ rule /]"/, Str::Other, :pop!
55
+ rule SimpleString, Str::Other
56
+ end
57
+
58
+ state :non_aligned_verbatim_string do
59
+ rule /}"/, Str::Other, :pop!
60
+ rule SimpleString, Str::Other
61
+ end
62
+ end
63
+ end
64
+ end
65
+
@@ -0,0 +1,133 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ # Direct port of pygments Lexer.
6
+ # See: https://bitbucket.org/birkenfeld/pygments-main/src/7304e4759ae65343d89a51359ca538912519cc31/pygments/lexers/functional.py?at=default#cl-2362
7
+ class Elixir < RegexLexer
8
+ title "Elixir"
9
+ desc "Elixir language (elixir-lang.org)"
10
+
11
+ tag 'elixir'
12
+ aliases 'elixir', 'exs'
13
+
14
+ filenames '*.ex', '*.exs'
15
+
16
+ mimetypes 'text/x-elixir', 'application/x-elixir'
17
+
18
+ state :root do
19
+ rule /\s+/m, Text
20
+ rule /#.*$/, Comment::Single
21
+ rule %r{\b(case|cond|end|bc|lc|if|unless|try|loop|receive|fn|defmodule|
22
+ defp?|defprotocol|defimpl|defrecord|defmacrop?|defdelegate|
23
+ defexception|exit|raise|throw|after|rescue|catch|else)\b(?![?!])|
24
+ (?<!\.)\b(do|\-\>)\b}x, Keyword
25
+ rule /\b(import|require|use|recur|quote|unquote|super|refer)\b(?![?!])/, Keyword::Namespace
26
+ rule /(?<!\.)\b(and|not|or|when|xor|in)\b/, Operator::Word
27
+ rule %r{%=|\*=|\*\*=|\+=|\-=|\^=|\|\|=|
28
+ <=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?=[\s\t])\?|
29
+ (?<=[\s\t])!+|&(&&?|(?!\d))|\|\||\^|\*|\+|\-|/|
30
+ \||\+\+|\-\-|\*\*|\/\/|\<\-|\<\>|<<|>>|=|\.|~~~}x, Operator
31
+ rule %r{(?<!:)(:)([a-zA-Z_]\w*([?!]|=(?![>=]))?|\<\>|===?|>=?|<=?|
32
+ <=>|&&?|%\(\)|%\[\]|%\{\}|\+\+?|\-\-?|\|\|?|\!|//|[%&`/\|]|
33
+ \*\*?|=?~|<\-)|([a-zA-Z_]\w*([?!])?)(:)(?!:)}, Str::Symbol
34
+ rule /:"/, Str::Symbol, :interpoling_symbol
35
+ rule /\b(nil|true|false)\b(?![?!])|\b[A-Z]\w*\b/, Name::Constant
36
+ rule /\b(__(FILE|LINE|MODULE|MAIN|FUNCTION)__)\b(?![?!])/, Name::Builtin::Pseudo
37
+ rule /[a-zA-Z_!][\w_]*[!\?]?/, Name
38
+ rule %r{::|[%(){};,/\|:\\\[\]]}, Punctuation
39
+ rule /@[a-zA-Z_]\w*|&\d/, Name::Variable
40
+ rule %r{\b(0[xX][0-9A-Fa-f]+|\d(_?\d)*(\.(?![^\d\s])
41
+ (_?\d)*)?([eE][-+]?\d(_?\d)*)?|0[bB][01]+)\b}x, Num
42
+
43
+ mixin :strings
44
+ mixin :sigil_strings
45
+ end
46
+
47
+ state :strings do
48
+ rule /(%[A-Ba-z])?"""(?:.|\n)*?"""/, Str::Doc
49
+ rule /'''(?:.|\n)*?'''/, Str::Doc
50
+ rule /"/, Str::Doc, :dqs
51
+ rule /'.*?'/, Str::Single
52
+ 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
53
+
54
+ end
55
+
56
+ state :dqs do
57
+ rule /"/, Str::Double, :pop!
58
+ mixin :enddoublestr
59
+ end
60
+
61
+ state :interpoling do
62
+ rule /#\{/, Str::Interpol, :interpoling_string
63
+ end
64
+
65
+ state :interpoling_string do
66
+ rule /\}/, Str::Interpol, :pop!
67
+ mixin :root
68
+ end
69
+
70
+ state :interpoling_symbol do
71
+ rule /"/, Str::Symbol, :pop!
72
+ mixin :interpoling
73
+ rule /[^#"]+/, Str::Symbol
74
+ end
75
+
76
+ state :enddoublestr do
77
+ mixin :interpoling
78
+ rule /[^#"]+/, Str::Double
79
+ end
80
+
81
+ state :sigil_strings do
82
+ # ~-sigiled strings
83
+ # ~(abc), ~[abc], ~<abc>, ~|abc|, ~r/abc/, etc
84
+ # Cribbed and adjusted from Ruby lexer
85
+ delimiter_map = { '{' => '}', '[' => ']', '(' => ')', '<' => '>' }
86
+ # Match a-z for custom sigils too
87
+ sigil_opens = Regexp.union(delimiter_map.keys + %w(| / ' "))
88
+ rule /~([A-Za-z])?(#{sigil_opens})/ do |m|
89
+ open = Regexp.escape(m[2])
90
+ close = Regexp.escape(delimiter_map[m[2]] || m[2])
91
+ interp = /[SRCW]/ === m[1]
92
+ toktype = Str::Other
93
+
94
+ puts " open: #{open.inspect}" if @debug
95
+ puts " close: #{close.inspect}" if @debug
96
+
97
+ # regexes
98
+ if 'Rr'.include? m[1]
99
+ toktype = Str::Regex
100
+ push :regex_flags
101
+ end
102
+
103
+ if 'Ww'.include? m[1]
104
+ push :list_flags
105
+ end
106
+
107
+ token toktype
108
+
109
+ push do
110
+ rule /#{close}/, toktype, :pop!
111
+
112
+ if interp
113
+ mixin :interpoling
114
+ rule /#/, toktype
115
+ else
116
+ rule /[\\#]/, toktype
117
+ end
118
+
119
+ rule /[^##{open}#{close}\\]+/m, toktype
120
+ end
121
+ end
122
+ end
123
+
124
+ state :regex_flags do
125
+ rule /[fgimrsux]*/, Str::Regex, :pop!
126
+ end
127
+
128
+ state :list_flags do
129
+ rule /[csa]?/, Str::Other, :pop!
130
+ end
131
+ end
132
+ end
133
+ end