rougegal 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +26 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +17 -0
  5. data/lib/rouge/cli.rb +394 -0
  6. data/lib/rouge/demos/abap +6 -0
  7. data/lib/rouge/demos/actionscript +4 -0
  8. data/lib/rouge/demos/apache +21 -0
  9. data/lib/rouge/demos/apiblueprint +33 -0
  10. data/lib/rouge/demos/applescript +2 -0
  11. data/lib/rouge/demos/awk +4 -0
  12. data/lib/rouge/demos/biml +38 -0
  13. data/lib/rouge/demos/bsl +7 -0
  14. data/lib/rouge/demos/c +8 -0
  15. data/lib/rouge/demos/ceylon +7 -0
  16. data/lib/rouge/demos/cfscript +18 -0
  17. data/lib/rouge/demos/clojure +5 -0
  18. data/lib/rouge/demos/cmake +7 -0
  19. data/lib/rouge/demos/coffeescript +5 -0
  20. data/lib/rouge/demos/common_lisp +1 -0
  21. data/lib/rouge/demos/conf +4 -0
  22. data/lib/rouge/demos/console +6 -0
  23. data/lib/rouge/demos/coq +13 -0
  24. data/lib/rouge/demos/cpp +8 -0
  25. data/lib/rouge/demos/csharp +5 -0
  26. data/lib/rouge/demos/css +4 -0
  27. data/lib/rouge/demos/d +16 -0
  28. data/lib/rouge/demos/dart +6 -0
  29. data/lib/rouge/demos/diff +7 -0
  30. data/lib/rouge/demos/digdag +19 -0
  31. data/lib/rouge/demos/docker +9 -0
  32. data/lib/rouge/demos/dot +5 -0
  33. data/lib/rouge/demos/eiffel +30 -0
  34. data/lib/rouge/demos/elixir +1 -0
  35. data/lib/rouge/demos/erb +1 -0
  36. data/lib/rouge/demos/erlang +7 -0
  37. data/lib/rouge/demos/factor +5 -0
  38. data/lib/rouge/demos/fortran +22 -0
  39. data/lib/rouge/demos/fsharp +12 -0
  40. data/lib/rouge/demos/gal +22 -0
  41. data/lib/rouge/demos/gherkin +17 -0
  42. data/lib/rouge/demos/glsl +14 -0
  43. data/lib/rouge/demos/go +7 -0
  44. data/lib/rouge/demos/gradle +10 -0
  45. data/lib/rouge/demos/graphql +17 -0
  46. data/lib/rouge/demos/groovy +9 -0
  47. data/lib/rouge/demos/haml +5 -0
  48. data/lib/rouge/demos/handlebars +7 -0
  49. data/lib/rouge/demos/haskell +6 -0
  50. data/lib/rouge/demos/html +8 -0
  51. data/lib/rouge/demos/http +14 -0
  52. data/lib/rouge/demos/hylang +10 -0
  53. data/lib/rouge/demos/idlang +8 -0
  54. data/lib/rouge/demos/igorpro +9 -0
  55. data/lib/rouge/demos/ini +4 -0
  56. data/lib/rouge/demos/io +11 -0
  57. data/lib/rouge/demos/irb +4 -0
  58. data/lib/rouge/demos/irb_output +2 -0
  59. data/lib/rouge/demos/java +5 -0
  60. data/lib/rouge/demos/javascript +1 -0
  61. data/lib/rouge/demos/jinja +9 -0
  62. data/lib/rouge/demos/json +1 -0
  63. data/lib/rouge/demos/json-doc +1 -0
  64. data/lib/rouge/demos/jsonnet +28 -0
  65. data/lib/rouge/demos/jsx +17 -0
  66. data/lib/rouge/demos/julia +11 -0
  67. data/lib/rouge/demos/kotlin +3 -0
  68. data/lib/rouge/demos/lasso +12 -0
  69. data/lib/rouge/demos/liquid +11 -0
  70. data/lib/rouge/demos/literate_coffeescript +3 -0
  71. data/lib/rouge/demos/literate_haskell +7 -0
  72. data/lib/rouge/demos/llvm +20 -0
  73. data/lib/rouge/demos/lua +12 -0
  74. data/lib/rouge/demos/make +6 -0
  75. data/lib/rouge/demos/markdown +4 -0
  76. data/lib/rouge/demos/matlab +6 -0
  77. data/lib/rouge/demos/moonscript +16 -0
  78. data/lib/rouge/demos/mosel +10 -0
  79. data/lib/rouge/demos/mxml +22 -0
  80. data/lib/rouge/demos/nasm +26 -0
  81. data/lib/rouge/demos/nginx +5 -0
  82. data/lib/rouge/demos/nim +27 -0
  83. data/lib/rouge/demos/objective_c +18 -0
  84. data/lib/rouge/demos/ocaml +12 -0
  85. data/lib/rouge/demos/pascal +14 -0
  86. data/lib/rouge/demos/perl +5 -0
  87. data/lib/rouge/demos/php +3 -0
  88. data/lib/rouge/demos/plaintext +1 -0
  89. data/lib/rouge/demos/plist +142 -0
  90. data/lib/rouge/demos/pony +17 -0
  91. data/lib/rouge/demos/powershell +49 -0
  92. data/lib/rouge/demos/praat +26 -0
  93. data/lib/rouge/demos/prolog +9 -0
  94. data/lib/rouge/demos/prometheus +9 -0
  95. data/lib/rouge/demos/properties +7 -0
  96. data/lib/rouge/demos/protobuf +5 -0
  97. data/lib/rouge/demos/puppet +6 -0
  98. data/lib/rouge/demos/python +6 -0
  99. data/lib/rouge/demos/q +2 -0
  100. data/lib/rouge/demos/qml +9 -0
  101. data/lib/rouge/demos/r +8 -0
  102. data/lib/rouge/demos/racket +24 -0
  103. data/lib/rouge/demos/ruby +9 -0
  104. data/lib/rouge/demos/rust +12 -0
  105. data/lib/rouge/demos/sass +3 -0
  106. data/lib/rouge/demos/scala +3 -0
  107. data/lib/rouge/demos/scheme +4 -0
  108. data/lib/rouge/demos/scss +5 -0
  109. data/lib/rouge/demos/sed +4 -0
  110. data/lib/rouge/demos/shell +2 -0
  111. data/lib/rouge/demos/sieve +10 -0
  112. data/lib/rouge/demos/slim +17 -0
  113. data/lib/rouge/demos/smalltalk +6 -0
  114. data/lib/rouge/demos/smarty +12 -0
  115. data/lib/rouge/demos/sml +4 -0
  116. data/lib/rouge/demos/sql +1 -0
  117. data/lib/rouge/demos/swift +5 -0
  118. data/lib/rouge/demos/tap +5 -0
  119. data/lib/rouge/demos/tcl +1 -0
  120. data/lib/rouge/demos/tex +1 -0
  121. data/lib/rouge/demos/toml +9 -0
  122. data/lib/rouge/demos/tsx +17 -0
  123. data/lib/rouge/demos/tulip +13 -0
  124. data/lib/rouge/demos/turtle +26 -0
  125. data/lib/rouge/demos/twig +9 -0
  126. data/lib/rouge/demos/typescript +1 -0
  127. data/lib/rouge/demos/vala +8 -0
  128. data/lib/rouge/demos/vb +4 -0
  129. data/lib/rouge/demos/verilog +27 -0
  130. data/lib/rouge/demos/vhdl +23 -0
  131. data/lib/rouge/demos/viml +14 -0
  132. data/lib/rouge/demos/vue +11 -0
  133. data/lib/rouge/demos/wollok +11 -0
  134. data/lib/rouge/demos/xml +2 -0
  135. data/lib/rouge/demos/yaml +4 -0
  136. data/lib/rouge/formatter.rb +75 -0
  137. data/lib/rouge/formatters/html.rb +37 -0
  138. data/lib/rouge/formatters/html_inline.rb +30 -0
  139. data/lib/rouge/formatters/html_legacy.rb +44 -0
  140. data/lib/rouge/formatters/html_linewise.rb +27 -0
  141. data/lib/rouge/formatters/html_pygments.rb +16 -0
  142. data/lib/rouge/formatters/html_table.rb +61 -0
  143. data/lib/rouge/formatters/null.rb +19 -0
  144. data/lib/rouge/formatters/terminal256.rb +172 -0
  145. data/lib/rouge/guesser.rb +55 -0
  146. data/lib/rouge/guessers/filename.rb +25 -0
  147. data/lib/rouge/guessers/glob_mapping.rb +46 -0
  148. data/lib/rouge/guessers/mimetype.rb +14 -0
  149. data/lib/rouge/guessers/modeline.rb +42 -0
  150. data/lib/rouge/guessers/source.rb +39 -0
  151. data/lib/rouge/lexer.rb +452 -0
  152. data/lib/rouge/lexers/abap.rb +238 -0
  153. data/lib/rouge/lexers/actionscript.rb +195 -0
  154. data/lib/rouge/lexers/apache.rb +71 -0
  155. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  156. data/lib/rouge/lexers/apiblueprint.rb +51 -0
  157. data/lib/rouge/lexers/apple_script.rb +367 -0
  158. data/lib/rouge/lexers/awk.rb +161 -0
  159. data/lib/rouge/lexers/biml.rb +41 -0
  160. data/lib/rouge/lexers/bsl.rb +81 -0
  161. data/lib/rouge/lexers/c.rb +217 -0
  162. data/lib/rouge/lexers/ceylon.rb +123 -0
  163. data/lib/rouge/lexers/cfscript.rb +153 -0
  164. data/lib/rouge/lexers/clojure.rb +112 -0
  165. data/lib/rouge/lexers/cmake.rb +206 -0
  166. data/lib/rouge/lexers/coffeescript.rb +174 -0
  167. data/lib/rouge/lexers/common_lisp.rb +345 -0
  168. data/lib/rouge/lexers/conf.rb +24 -0
  169. data/lib/rouge/lexers/console.rb +136 -0
  170. data/lib/rouge/lexers/coq.rb +191 -0
  171. data/lib/rouge/lexers/cpp.rb +78 -0
  172. data/lib/rouge/lexers/csharp.rb +114 -0
  173. data/lib/rouge/lexers/css.rb +273 -0
  174. data/lib/rouge/lexers/d.rb +176 -0
  175. data/lib/rouge/lexers/dart.rb +104 -0
  176. data/lib/rouge/lexers/diff.rb +31 -0
  177. data/lib/rouge/lexers/digdag.rb +72 -0
  178. data/lib/rouge/lexers/docker.rb +50 -0
  179. data/lib/rouge/lexers/dot.rb +68 -0
  180. data/lib/rouge/lexers/eiffel.rb +65 -0
  181. data/lib/rouge/lexers/elixir.rb +133 -0
  182. data/lib/rouge/lexers/erb.rb +56 -0
  183. data/lib/rouge/lexers/erlang.rb +118 -0
  184. data/lib/rouge/lexers/factor.rb +302 -0
  185. data/lib/rouge/lexers/fortran.rb +170 -0
  186. data/lib/rouge/lexers/fsharp.rb +118 -0
  187. data/lib/rouge/lexers/gal.rb +50 -0
  188. data/lib/rouge/lexers/gherkin.rb +137 -0
  189. data/lib/rouge/lexers/gherkin/keywords.rb +14 -0
  190. data/lib/rouge/lexers/glsl.rb +135 -0
  191. data/lib/rouge/lexers/go.rb +178 -0
  192. data/lib/rouge/lexers/gradle.rb +37 -0
  193. data/lib/rouge/lexers/graphql.rb +243 -0
  194. data/lib/rouge/lexers/groovy.rb +112 -0
  195. data/lib/rouge/lexers/haml.rb +233 -0
  196. data/lib/rouge/lexers/handlebars.rb +79 -0
  197. data/lib/rouge/lexers/haskell.rb +183 -0
  198. data/lib/rouge/lexers/html.rb +138 -0
  199. data/lib/rouge/lexers/http.rb +80 -0
  200. data/lib/rouge/lexers/hylang.rb +93 -0
  201. data/lib/rouge/lexers/idlang.rb +316 -0
  202. data/lib/rouge/lexers/igorpro.rb +407 -0
  203. data/lib/rouge/lexers/ini.rb +57 -0
  204. data/lib/rouge/lexers/io.rb +68 -0
  205. data/lib/rouge/lexers/irb.rb +66 -0
  206. data/lib/rouge/lexers/java.rb +87 -0
  207. data/lib/rouge/lexers/javascript.rb +269 -0
  208. data/lib/rouge/lexers/jinja.rb +137 -0
  209. data/lib/rouge/lexers/json.rb +29 -0
  210. data/lib/rouge/lexers/json_doc.rb +23 -0
  211. data/lib/rouge/lexers/jsonnet.rb +151 -0
  212. data/lib/rouge/lexers/jsx.rb +102 -0
  213. data/lib/rouge/lexers/julia.rb +172 -0
  214. data/lib/rouge/lexers/kotlin.rb +84 -0
  215. data/lib/rouge/lexers/lasso.rb +217 -0
  216. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  217. data/lib/rouge/lexers/liquid.rb +287 -0
  218. data/lib/rouge/lexers/literate_coffeescript.rb +33 -0
  219. data/lib/rouge/lexers/literate_haskell.rb +36 -0
  220. data/lib/rouge/lexers/llvm.rb +84 -0
  221. data/lib/rouge/lexers/lua.rb +125 -0
  222. data/lib/rouge/lexers/lua/builtins.rb +22 -0
  223. data/lib/rouge/lexers/make.rb +116 -0
  224. data/lib/rouge/lexers/markdown.rb +154 -0
  225. data/lib/rouge/lexers/matlab.rb +75 -0
  226. data/lib/rouge/lexers/matlab/builtins.rb +11 -0
  227. data/lib/rouge/lexers/moonscript.rb +114 -0
  228. data/lib/rouge/lexers/mosel.rb +231 -0
  229. data/lib/rouge/lexers/mxml.rb +68 -0
  230. data/lib/rouge/lexers/nasm.rb +203 -0
  231. data/lib/rouge/lexers/nginx.rb +71 -0
  232. data/lib/rouge/lexers/nim.rb +152 -0
  233. data/lib/rouge/lexers/objective_c.rb +208 -0
  234. data/lib/rouge/lexers/ocaml.rb +100 -0
  235. data/lib/rouge/lexers/pascal.rb +66 -0
  236. data/lib/rouge/lexers/perl.rb +197 -0
  237. data/lib/rouge/lexers/php.rb +193 -0
  238. data/lib/rouge/lexers/php/builtins.rb +194 -0
  239. data/lib/rouge/lexers/plain_text.rb +26 -0
  240. data/lib/rouge/lexers/plist.rb +49 -0
  241. data/lib/rouge/lexers/pony.rb +93 -0
  242. data/lib/rouge/lexers/powershell.rb +132 -0
  243. data/lib/rouge/lexers/praat.rb +350 -0
  244. data/lib/rouge/lexers/prolog.rb +64 -0
  245. data/lib/rouge/lexers/prometheus.rb +121 -0
  246. data/lib/rouge/lexers/properties.rb +55 -0
  247. data/lib/rouge/lexers/protobuf.rb +70 -0
  248. data/lib/rouge/lexers/puppet.rb +128 -0
  249. data/lib/rouge/lexers/python.rb +231 -0
  250. data/lib/rouge/lexers/q.rb +124 -0
  251. data/lib/rouge/lexers/qml.rb +73 -0
  252. data/lib/rouge/lexers/r.rb +89 -0
  253. data/lib/rouge/lexers/racket.rb +542 -0
  254. data/lib/rouge/lexers/ruby.rb +437 -0
  255. data/lib/rouge/lexers/rust.rb +192 -0
  256. data/lib/rouge/lexers/sass.rb +74 -0
  257. data/lib/rouge/lexers/sass/common.rb +180 -0
  258. data/lib/rouge/lexers/scala.rb +142 -0
  259. data/lib/rouge/lexers/scheme.rb +112 -0
  260. data/lib/rouge/lexers/scss.rb +34 -0
  261. data/lib/rouge/lexers/sed.rb +172 -0
  262. data/lib/rouge/lexers/shell.rb +180 -0
  263. data/lib/rouge/lexers/sieve.rb +96 -0
  264. data/lib/rouge/lexers/slim.rb +228 -0
  265. data/lib/rouge/lexers/smalltalk.rb +116 -0
  266. data/lib/rouge/lexers/smarty.rb +91 -0
  267. data/lib/rouge/lexers/sml.rb +348 -0
  268. data/lib/rouge/lexers/sql.rb +140 -0
  269. data/lib/rouge/lexers/swift.rb +161 -0
  270. data/lib/rouge/lexers/tap.rb +91 -0
  271. data/lib/rouge/lexers/tcl.rb +192 -0
  272. data/lib/rouge/lexers/tex.rb +69 -0
  273. data/lib/rouge/lexers/toml.rb +71 -0
  274. data/lib/rouge/lexers/tsx.rb +19 -0
  275. data/lib/rouge/lexers/tulip.rb +107 -0
  276. data/lib/rouge/lexers/turtle.rb +72 -0
  277. data/lib/rouge/lexers/twig.rb +39 -0
  278. data/lib/rouge/lexers/typescript.rb +22 -0
  279. data/lib/rouge/lexers/typescript/common.rb +33 -0
  280. data/lib/rouge/lexers/vala.rb +77 -0
  281. data/lib/rouge/lexers/vb.rb +164 -0
  282. data/lib/rouge/lexers/verilog.rb +164 -0
  283. data/lib/rouge/lexers/vhdl.rb +97 -0
  284. data/lib/rouge/lexers/viml.rb +101 -0
  285. data/lib/rouge/lexers/viml/keywords.rb +12 -0
  286. data/lib/rouge/lexers/vue.rb +124 -0
  287. data/lib/rouge/lexers/wollok.rb +107 -0
  288. data/lib/rouge/lexers/xml.rb +59 -0
  289. data/lib/rouge/lexers/yaml.rb +373 -0
  290. data/lib/rouge/plugins/redcarpet.rb +30 -0
  291. data/lib/rouge/regex_lexer.rb +441 -0
  292. data/lib/rouge/template_lexer.rb +20 -0
  293. data/lib/rouge/text_analyzer.rb +48 -0
  294. data/lib/rouge/theme.rb +213 -0
  295. data/lib/rouge/themes/base16.rb +130 -0
  296. data/lib/rouge/themes/colorful.rb +67 -0
  297. data/lib/rouge/themes/github.rb +71 -0
  298. data/lib/rouge/themes/gruvbox.rb +167 -0
  299. data/lib/rouge/themes/igor_pro.rb +20 -0
  300. data/lib/rouge/themes/molokai.rb +82 -0
  301. data/lib/rouge/themes/monokai.rb +92 -0
  302. data/lib/rouge/themes/monokai_sublime.rb +90 -0
  303. data/lib/rouge/themes/pastie.rb +69 -0
  304. data/lib/rouge/themes/thankful_eyes.rb +74 -0
  305. data/lib/rouge/themes/tulip.rb +69 -0
  306. data/lib/rouge/token.rb +182 -0
  307. data/lib/rouge/util.rb +101 -0
  308. data/lib/rouge/version.rb +7 -0
  309. data/lib/rougegal.rb +80 -0
  310. data/rougegal.gemspec +18 -0
  311. metadata +356 -0
@@ -0,0 +1,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.analyze_text(text)
13
+ return 1 if text.start_with?('Index: ')
14
+ return 1 if text.start_with?('diff ')
15
+ return 0.9 if text.start_with?('--- ')
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,72 @@
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
+ def self.analyze_text(text)
15
+ # disable YAML.analyze_text
16
+ end
17
+
18
+ # http://docs.digdag.io/operators.html
19
+ # as of digdag v0.9.10
20
+ KEYWORD_PATTERN = Regexp.union(%w(
21
+ call
22
+ require
23
+ loop
24
+ for_each
25
+ if
26
+ fail
27
+ echo
28
+
29
+ td
30
+ td_run
31
+ td_ddl
32
+ td_load
33
+ td_for_each
34
+ td_wait
35
+ td_wait_table
36
+ td_partial_delete
37
+ td_table_export
38
+
39
+ pg
40
+
41
+ mail
42
+ http
43
+ s3_wait
44
+ redshift
45
+ redshift_load
46
+ redshift_unload
47
+ emr
48
+
49
+ gcs_wait
50
+ bq
51
+ bq_ddl
52
+ bq_extract
53
+ bq_load
54
+
55
+ sh
56
+ py
57
+ rb
58
+ embulk
59
+ ).map { |name| "#{name}>"} + %w(
60
+ _do
61
+ _parallel
62
+ ))
63
+
64
+ prepend :block_nodes do
65
+ rule /(#{KEYWORD_PATTERN})(:)(?=\s|$)/ do |m|
66
+ groups Keyword::Reserved, Punctuation::Indicator
67
+ set_indent m[0], :implicit => true
68
+ end
69
+ end
70
+ end
71
+ end
72
+ 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,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
@@ -0,0 +1,56 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class ERB < TemplateLexer
6
+ title "ERB"
7
+ desc "Embedded ruby template files"
8
+
9
+ tag 'erb'
10
+ aliases 'eruby', 'rhtml'
11
+
12
+ filenames '*.erb', '*.erubis', '*.rhtml', '*.eruby'
13
+
14
+ def self.analyze_text(text)
15
+ return 0.4 if text =~ /<%.*%>/
16
+ end
17
+
18
+ def initialize(opts={})
19
+ @ruby_lexer = Ruby.new(opts)
20
+
21
+ super(opts)
22
+ end
23
+
24
+ start do
25
+ parent.reset!
26
+ @ruby_lexer.reset!
27
+ end
28
+
29
+ open = /<%%|<%=|<%#|<%-|<%/
30
+ close = /%%>|-%>|%>/
31
+
32
+ state :root do
33
+ rule /<%#/, Comment, :comment
34
+
35
+ rule open, Comment::Preproc, :ruby
36
+
37
+ rule /.+?(?=#{open})|.+/m do
38
+ delegate parent
39
+ end
40
+ end
41
+
42
+ state :comment do
43
+ rule close, Comment, :pop!
44
+ rule /.+(?=#{close})|.+/m, Comment
45
+ end
46
+
47
+ state :ruby do
48
+ rule close, Comment::Preproc, :pop!
49
+
50
+ rule /.+?(?=#{close})|.+/m do
51
+ delegate @ruby_lexer
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end