rouge-lines 3.2.3

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 (318) 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-lines.rb +84 -0
  6. data/lib/rouge-lines/cli.rb +429 -0
  7. data/lib/rouge-lines/demos/abap +6 -0
  8. data/lib/rouge-lines/demos/actionscript +4 -0
  9. data/lib/rouge-lines/demos/apache +21 -0
  10. data/lib/rouge-lines/demos/apiblueprint +33 -0
  11. data/lib/rouge-lines/demos/applescript +2 -0
  12. data/lib/rouge-lines/demos/awk +4 -0
  13. data/lib/rouge-lines/demos/biml +38 -0
  14. data/lib/rouge-lines/demos/bsl +7 -0
  15. data/lib/rouge-lines/demos/c +8 -0
  16. data/lib/rouge-lines/demos/ceylon +7 -0
  17. data/lib/rouge-lines/demos/cfscript +18 -0
  18. data/lib/rouge-lines/demos/clojure +5 -0
  19. data/lib/rouge-lines/demos/cmake +7 -0
  20. data/lib/rouge-lines/demos/coffeescript +5 -0
  21. data/lib/rouge-lines/demos/common_lisp +1 -0
  22. data/lib/rouge-lines/demos/conf +4 -0
  23. data/lib/rouge-lines/demos/console +6 -0
  24. data/lib/rouge-lines/demos/coq +13 -0
  25. data/lib/rouge-lines/demos/cpp +8 -0
  26. data/lib/rouge-lines/demos/csharp +5 -0
  27. data/lib/rouge-lines/demos/css +4 -0
  28. data/lib/rouge-lines/demos/d +16 -0
  29. data/lib/rouge-lines/demos/dart +6 -0
  30. data/lib/rouge-lines/demos/diff +7 -0
  31. data/lib/rouge-lines/demos/digdag +19 -0
  32. data/lib/rouge-lines/demos/docker +9 -0
  33. data/lib/rouge-lines/demos/dot +5 -0
  34. data/lib/rouge-lines/demos/eiffel +30 -0
  35. data/lib/rouge-lines/demos/elixir +1 -0
  36. data/lib/rouge-lines/demos/elm +4 -0
  37. data/lib/rouge-lines/demos/erb +1 -0
  38. data/lib/rouge-lines/demos/erlang +7 -0
  39. data/lib/rouge-lines/demos/factor +5 -0
  40. data/lib/rouge-lines/demos/fortran +22 -0
  41. data/lib/rouge-lines/demos/fsharp +12 -0
  42. data/lib/rouge-lines/demos/gherkin +17 -0
  43. data/lib/rouge-lines/demos/glsl +14 -0
  44. data/lib/rouge-lines/demos/go +7 -0
  45. data/lib/rouge-lines/demos/gradle +10 -0
  46. data/lib/rouge-lines/demos/graphql +17 -0
  47. data/lib/rouge-lines/demos/groovy +9 -0
  48. data/lib/rouge-lines/demos/hack +5 -0
  49. data/lib/rouge-lines/demos/haml +5 -0
  50. data/lib/rouge-lines/demos/handlebars +7 -0
  51. data/lib/rouge-lines/demos/haskell +6 -0
  52. data/lib/rouge-lines/demos/html +8 -0
  53. data/lib/rouge-lines/demos/http +14 -0
  54. data/lib/rouge-lines/demos/hylang +10 -0
  55. data/lib/rouge-lines/demos/idlang +8 -0
  56. data/lib/rouge-lines/demos/igorpro +9 -0
  57. data/lib/rouge-lines/demos/ini +4 -0
  58. data/lib/rouge-lines/demos/io +11 -0
  59. data/lib/rouge-lines/demos/irb +4 -0
  60. data/lib/rouge-lines/demos/irb_output +2 -0
  61. data/lib/rouge-lines/demos/java +5 -0
  62. data/lib/rouge-lines/demos/javascript +1 -0
  63. data/lib/rouge-lines/demos/jinja +9 -0
  64. data/lib/rouge-lines/demos/json +1 -0
  65. data/lib/rouge-lines/demos/json-doc +1 -0
  66. data/lib/rouge-lines/demos/jsonnet +28 -0
  67. data/lib/rouge-lines/demos/jsx +17 -0
  68. data/lib/rouge-lines/demos/julia +11 -0
  69. data/lib/rouge-lines/demos/kotlin +3 -0
  70. data/lib/rouge-lines/demos/lasso +12 -0
  71. data/lib/rouge-lines/demos/liquid +11 -0
  72. data/lib/rouge-lines/demos/literate_coffeescript +3 -0
  73. data/lib/rouge-lines/demos/literate_haskell +7 -0
  74. data/lib/rouge-lines/demos/llvm +20 -0
  75. data/lib/rouge-lines/demos/lua +12 -0
  76. data/lib/rouge-lines/demos/make +6 -0
  77. data/lib/rouge-lines/demos/markdown +4 -0
  78. data/lib/rouge-lines/demos/matlab +6 -0
  79. data/lib/rouge-lines/demos/moonscript +16 -0
  80. data/lib/rouge-lines/demos/mosel +10 -0
  81. data/lib/rouge-lines/demos/mxml +22 -0
  82. data/lib/rouge-lines/demos/nasm +26 -0
  83. data/lib/rouge-lines/demos/nginx +5 -0
  84. data/lib/rouge-lines/demos/nim +27 -0
  85. data/lib/rouge-lines/demos/nix +19 -0
  86. data/lib/rouge-lines/demos/objective_c +18 -0
  87. data/lib/rouge-lines/demos/ocaml +12 -0
  88. data/lib/rouge-lines/demos/pascal +14 -0
  89. data/lib/rouge-lines/demos/perl +5 -0
  90. data/lib/rouge-lines/demos/php +3 -0
  91. data/lib/rouge-lines/demos/plaintext +1 -0
  92. data/lib/rouge-lines/demos/plist +142 -0
  93. data/lib/rouge-lines/demos/pony +17 -0
  94. data/lib/rouge-lines/demos/powershell +49 -0
  95. data/lib/rouge-lines/demos/praat +26 -0
  96. data/lib/rouge-lines/demos/prolog +9 -0
  97. data/lib/rouge-lines/demos/prometheus +9 -0
  98. data/lib/rouge-lines/demos/properties +7 -0
  99. data/lib/rouge-lines/demos/protobuf +5 -0
  100. data/lib/rouge-lines/demos/puppet +6 -0
  101. data/lib/rouge-lines/demos/python +6 -0
  102. data/lib/rouge-lines/demos/q +2 -0
  103. data/lib/rouge-lines/demos/qml +9 -0
  104. data/lib/rouge-lines/demos/r +8 -0
  105. data/lib/rouge-lines/demos/racket +24 -0
  106. data/lib/rouge-lines/demos/ruby +9 -0
  107. data/lib/rouge-lines/demos/rust +12 -0
  108. data/lib/rouge-lines/demos/sass +3 -0
  109. data/lib/rouge-lines/demos/scala +3 -0
  110. data/lib/rouge-lines/demos/scheme +4 -0
  111. data/lib/rouge-lines/demos/scss +5 -0
  112. data/lib/rouge-lines/demos/sed +4 -0
  113. data/lib/rouge-lines/demos/shell +2 -0
  114. data/lib/rouge-lines/demos/sieve +10 -0
  115. data/lib/rouge-lines/demos/slim +17 -0
  116. data/lib/rouge-lines/demos/smalltalk +6 -0
  117. data/lib/rouge-lines/demos/smarty +12 -0
  118. data/lib/rouge-lines/demos/sml +4 -0
  119. data/lib/rouge-lines/demos/sql +1 -0
  120. data/lib/rouge-lines/demos/swift +5 -0
  121. data/lib/rouge-lines/demos/tap +5 -0
  122. data/lib/rouge-lines/demos/tcl +1 -0
  123. data/lib/rouge-lines/demos/tex +1 -0
  124. data/lib/rouge-lines/demos/toml +9 -0
  125. data/lib/rouge-lines/demos/tsx +17 -0
  126. data/lib/rouge-lines/demos/tulip +13 -0
  127. data/lib/rouge-lines/demos/turtle +26 -0
  128. data/lib/rouge-lines/demos/twig +9 -0
  129. data/lib/rouge-lines/demos/typescript +1 -0
  130. data/lib/rouge-lines/demos/vala +8 -0
  131. data/lib/rouge-lines/demos/vb +4 -0
  132. data/lib/rouge-lines/demos/verilog +27 -0
  133. data/lib/rouge-lines/demos/vhdl +23 -0
  134. data/lib/rouge-lines/demos/viml +14 -0
  135. data/lib/rouge-lines/demos/vue +11 -0
  136. data/lib/rouge-lines/demos/wollok +11 -0
  137. data/lib/rouge-lines/demos/xml +2 -0
  138. data/lib/rouge-lines/demos/yaml +4 -0
  139. data/lib/rouge-lines/formatter.rb +75 -0
  140. data/lib/rouge-lines/formatters/html.rb +37 -0
  141. data/lib/rouge-lines/formatters/html_inline.rb +30 -0
  142. data/lib/rouge-lines/formatters/html_legacy.rb +49 -0
  143. data/lib/rouge-lines/formatters/html_lineanchors.rb +27 -0
  144. data/lib/rouge-lines/formatters/html_linewise.rb +27 -0
  145. data/lib/rouge-lines/formatters/html_pygments.rb +16 -0
  146. data/lib/rouge-lines/formatters/html_table.rb +61 -0
  147. data/lib/rouge-lines/formatters/null.rb +19 -0
  148. data/lib/rouge-lines/formatters/terminal256.rb +180 -0
  149. data/lib/rouge-lines/guesser.rb +55 -0
  150. data/lib/rouge-lines/guessers/disambiguation.rb +101 -0
  151. data/lib/rouge-lines/guessers/filename.rb +25 -0
  152. data/lib/rouge-lines/guessers/glob_mapping.rb +43 -0
  153. data/lib/rouge-lines/guessers/mimetype.rb +14 -0
  154. data/lib/rouge-lines/guessers/modeline.rb +44 -0
  155. data/lib/rouge-lines/guessers/source.rb +29 -0
  156. data/lib/rouge-lines/guessers/util.rb +32 -0
  157. data/lib/rouge-lines/lexer.rb +461 -0
  158. data/lib/rouge-lines/lexers/abap.rb +238 -0
  159. data/lib/rouge-lines/lexers/actionscript.rb +195 -0
  160. data/lib/rouge-lines/lexers/apache.rb +71 -0
  161. data/lib/rouge-lines/lexers/apache/keywords.yml +764 -0
  162. data/lib/rouge-lines/lexers/apiblueprint.rb +47 -0
  163. data/lib/rouge-lines/lexers/apple_script.rb +367 -0
  164. data/lib/rouge-lines/lexers/awk.rb +161 -0
  165. data/lib/rouge-lines/lexers/biml.rb +41 -0
  166. data/lib/rouge-lines/lexers/bsl.rb +81 -0
  167. data/lib/rouge-lines/lexers/c.rb +212 -0
  168. data/lib/rouge-lines/lexers/ceylon.rb +123 -0
  169. data/lib/rouge-lines/lexers/cfscript.rb +153 -0
  170. data/lib/rouge-lines/lexers/clojure.rb +112 -0
  171. data/lib/rouge-lines/lexers/cmake.rb +206 -0
  172. data/lib/rouge-lines/lexers/coffeescript.rb +174 -0
  173. data/lib/rouge-lines/lexers/common_lisp.rb +345 -0
  174. data/lib/rouge-lines/lexers/conf.rb +24 -0
  175. data/lib/rouge-lines/lexers/console.rb +136 -0
  176. data/lib/rouge-lines/lexers/coq.rb +187 -0
  177. data/lib/rouge-lines/lexers/cpp.rb +78 -0
  178. data/lib/rouge-lines/lexers/csharp.rb +114 -0
  179. data/lib/rouge-lines/lexers/css.rb +273 -0
  180. data/lib/rouge-lines/lexers/d.rb +176 -0
  181. data/lib/rouge-lines/lexers/dart.rb +104 -0
  182. data/lib/rouge-lines/lexers/diff.rb +31 -0
  183. data/lib/rouge-lines/lexers/digdag.rb +68 -0
  184. data/lib/rouge-lines/lexers/docker.rb +50 -0
  185. data/lib/rouge-lines/lexers/dot.rb +68 -0
  186. data/lib/rouge-lines/lexers/eiffel.rb +65 -0
  187. data/lib/rouge-lines/lexers/elixir.rb +133 -0
  188. data/lib/rouge-lines/lexers/elm.rb +89 -0
  189. data/lib/rouge-lines/lexers/erb.rb +52 -0
  190. data/lib/rouge-lines/lexers/erlang.rb +114 -0
  191. data/lib/rouge-lines/lexers/factor.rb +302 -0
  192. data/lib/rouge-lines/lexers/fortran.rb +176 -0
  193. data/lib/rouge-lines/lexers/fsharp.rb +118 -0
  194. data/lib/rouge-lines/lexers/gherkin.rb +137 -0
  195. data/lib/rouge-lines/lexers/gherkin/keywords.rb +14 -0
  196. data/lib/rouge-lines/lexers/glsl.rb +135 -0
  197. data/lib/rouge-lines/lexers/go.rb +174 -0
  198. data/lib/rouge-lines/lexers/gradle.rb +37 -0
  199. data/lib/rouge-lines/lexers/graphql.rb +243 -0
  200. data/lib/rouge-lines/lexers/groovy.rb +112 -0
  201. data/lib/rouge-lines/lexers/hack.rb +48 -0
  202. data/lib/rouge-lines/lexers/haml.rb +229 -0
  203. data/lib/rouge-lines/lexers/handlebars.rb +79 -0
  204. data/lib/rouge-lines/lexers/haskell.rb +197 -0
  205. data/lib/rouge-lines/lexers/html.rb +139 -0
  206. data/lib/rouge-lines/lexers/http.rb +80 -0
  207. data/lib/rouge-lines/lexers/hylang.rb +93 -0
  208. data/lib/rouge-lines/lexers/idlang.rb +310 -0
  209. data/lib/rouge-lines/lexers/igorpro.rb +408 -0
  210. data/lib/rouge-lines/lexers/ini.rb +53 -0
  211. data/lib/rouge-lines/lexers/io.rb +68 -0
  212. data/lib/rouge-lines/lexers/irb.rb +66 -0
  213. data/lib/rouge-lines/lexers/java.rb +87 -0
  214. data/lib/rouge-lines/lexers/javascript.rb +281 -0
  215. data/lib/rouge-lines/lexers/jinja.rb +137 -0
  216. data/lib/rouge-lines/lexers/json.rb +29 -0
  217. data/lib/rouge-lines/lexers/json_doc.rb +23 -0
  218. data/lib/rouge-lines/lexers/jsonnet.rb +151 -0
  219. data/lib/rouge-lines/lexers/jsx.rb +102 -0
  220. data/lib/rouge-lines/lexers/julia.rb +172 -0
  221. data/lib/rouge-lines/lexers/kotlin.rb +79 -0
  222. data/lib/rouge-lines/lexers/lasso.rb +214 -0
  223. data/lib/rouge-lines/lexers/lasso/keywords.yml +446 -0
  224. data/lib/rouge-lines/lexers/liquid.rb +287 -0
  225. data/lib/rouge-lines/lexers/literate_coffeescript.rb +33 -0
  226. data/lib/rouge-lines/lexers/literate_haskell.rb +36 -0
  227. data/lib/rouge-lines/lexers/llvm.rb +80 -0
  228. data/lib/rouge-lines/lexers/lua.rb +125 -0
  229. data/lib/rouge-lines/lexers/lua/builtins.rb +22 -0
  230. data/lib/rouge-lines/lexers/make.rb +112 -0
  231. data/lib/rouge-lines/lexers/markdown.rb +154 -0
  232. data/lib/rouge-lines/lexers/matlab.rb +71 -0
  233. data/lib/rouge-lines/lexers/matlab/builtins.rb +11 -0
  234. data/lib/rouge-lines/lexers/moonscript.rb +114 -0
  235. data/lib/rouge-lines/lexers/mosel.rb +231 -0
  236. data/lib/rouge-lines/lexers/mxml.rb +68 -0
  237. data/lib/rouge-lines/lexers/nasm.rb +198 -0
  238. data/lib/rouge-lines/lexers/nginx.rb +71 -0
  239. data/lib/rouge-lines/lexers/nim.rb +152 -0
  240. data/lib/rouge-lines/lexers/nix.rb +205 -0
  241. data/lib/rouge-lines/lexers/objective_c.rb +194 -0
  242. data/lib/rouge-lines/lexers/ocaml.rb +100 -0
  243. data/lib/rouge-lines/lexers/pascal.rb +66 -0
  244. data/lib/rouge-lines/lexers/perl.rb +196 -0
  245. data/lib/rouge-lines/lexers/php.rb +193 -0
  246. data/lib/rouge-lines/lexers/php/builtins.rb +194 -0
  247. data/lib/rouge-lines/lexers/plain_text.rb +26 -0
  248. data/lib/rouge-lines/lexers/plist.rb +45 -0
  249. data/lib/rouge-lines/lexers/pony.rb +93 -0
  250. data/lib/rouge-lines/lexers/powershell.rb +678 -0
  251. data/lib/rouge-lines/lexers/praat.rb +350 -0
  252. data/lib/rouge-lines/lexers/prolog.rb +59 -0
  253. data/lib/rouge-lines/lexers/prometheus.rb +121 -0
  254. data/lib/rouge-lines/lexers/properties.rb +51 -0
  255. data/lib/rouge-lines/lexers/protobuf.rb +70 -0
  256. data/lib/rouge-lines/lexers/puppet.rb +128 -0
  257. data/lib/rouge-lines/lexers/python.rb +232 -0
  258. data/lib/rouge-lines/lexers/q.rb +123 -0
  259. data/lib/rouge-lines/lexers/qml.rb +73 -0
  260. data/lib/rouge-lines/lexers/r.rb +89 -0
  261. data/lib/rouge-lines/lexers/racket.rb +543 -0
  262. data/lib/rouge-lines/lexers/ruby.rb +437 -0
  263. data/lib/rouge-lines/lexers/rust.rb +192 -0
  264. data/lib/rouge-lines/lexers/sass.rb +74 -0
  265. data/lib/rouge-lines/lexers/sass/common.rb +180 -0
  266. data/lib/rouge-lines/lexers/scala.rb +142 -0
  267. data/lib/rouge-lines/lexers/scheme.rb +112 -0
  268. data/lib/rouge-lines/lexers/scss.rb +34 -0
  269. data/lib/rouge-lines/lexers/sed.rb +172 -0
  270. data/lib/rouge-lines/lexers/shell.rb +189 -0
  271. data/lib/rouge-lines/lexers/sieve.rb +96 -0
  272. data/lib/rouge-lines/lexers/slim.rb +228 -0
  273. data/lib/rouge-lines/lexers/smalltalk.rb +116 -0
  274. data/lib/rouge-lines/lexers/smarty.rb +80 -0
  275. data/lib/rouge-lines/lexers/sml.rb +344 -0
  276. data/lib/rouge-lines/lexers/sql.rb +140 -0
  277. data/lib/rouge-lines/lexers/swift.rb +181 -0
  278. data/lib/rouge-lines/lexers/tap.rb +87 -0
  279. data/lib/rouge-lines/lexers/tcl.rb +192 -0
  280. data/lib/rouge-lines/lexers/tex.rb +69 -0
  281. data/lib/rouge-lines/lexers/toml.rb +67 -0
  282. data/lib/rouge-lines/lexers/tsx.rb +19 -0
  283. data/lib/rouge-lines/lexers/tulip.rb +106 -0
  284. data/lib/rouge-lines/lexers/turtle.rb +63 -0
  285. data/lib/rouge-lines/lexers/twig.rb +39 -0
  286. data/lib/rouge-lines/lexers/typescript.rb +22 -0
  287. data/lib/rouge-lines/lexers/typescript/common.rb +33 -0
  288. data/lib/rouge-lines/lexers/vala.rb +77 -0
  289. data/lib/rouge-lines/lexers/vb.rb +164 -0
  290. data/lib/rouge-lines/lexers/verilog.rb +164 -0
  291. data/lib/rouge-lines/lexers/vhdl.rb +97 -0
  292. data/lib/rouge-lines/lexers/viml.rb +101 -0
  293. data/lib/rouge-lines/lexers/viml/keywords.rb +12 -0
  294. data/lib/rouge-lines/lexers/vue.rb +122 -0
  295. data/lib/rouge-lines/lexers/wollok.rb +103 -0
  296. data/lib/rouge-lines/lexers/xml.rb +57 -0
  297. data/lib/rouge-lines/lexers/yaml.rb +373 -0
  298. data/lib/rouge-lines/plugins/redcarpet.rb +30 -0
  299. data/lib/rouge-lines/regex_lexer.rb +441 -0
  300. data/lib/rouge-lines/template_lexer.rb +20 -0
  301. data/lib/rouge-lines/text_analyzer.rb +49 -0
  302. data/lib/rouge-lines/theme.rb +213 -0
  303. data/lib/rouge-lines/themes/base16.rb +130 -0
  304. data/lib/rouge-lines/themes/colorful.rb +67 -0
  305. data/lib/rouge-lines/themes/github.rb +71 -0
  306. data/lib/rouge-lines/themes/gruvbox.rb +167 -0
  307. data/lib/rouge-lines/themes/igor_pro.rb +20 -0
  308. data/lib/rouge-lines/themes/molokai.rb +82 -0
  309. data/lib/rouge-lines/themes/monokai.rb +92 -0
  310. data/lib/rouge-lines/themes/monokai_sublime.rb +90 -0
  311. data/lib/rouge-lines/themes/pastie.rb +69 -0
  312. data/lib/rouge-lines/themes/thankful_eyes.rb +74 -0
  313. data/lib/rouge-lines/themes/tulip.rb +69 -0
  314. data/lib/rouge-lines/token.rb +182 -0
  315. data/lib/rouge-lines/util.rb +101 -0
  316. data/lib/rouge-lines/version.rb +7 -0
  317. data/rouge-lines.gemspec +23 -0
  318. metadata +368 -0
@@ -0,0 +1,31 @@
1
+ module RougeLines
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 RougeLines
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 RougeLines
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 RougeLines
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 RougeLines
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 RougeLines
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,89 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module RougeLines
4
+ module Lexers
5
+ class Elm < RegexLexer
6
+ title "Elm"
7
+ desc "The Elm programming language (http://elm-lang.org/)"
8
+
9
+ tag 'elm'
10
+ filenames '*.elm'
11
+ mimetypes 'text/x-elm'
12
+
13
+ # Keywords are logically grouped by lines
14
+ keywords = %w(
15
+ module exposing port
16
+ import as
17
+ type alias
18
+ if then else
19
+ case of
20
+ let in
21
+ )
22
+
23
+ state :root do
24
+ # Whitespaces
25
+ rule /\s+/m, Text
26
+ # Single line comments
27
+ rule /--.*/, Comment::Single
28
+ # Multiline comments
29
+ rule /{-/, Comment::Multiline, :multiline_comment
30
+
31
+ # Keywords
32
+ rule /\b(#{keywords.join('|')})\b/, Keyword
33
+
34
+ # Variable or a function
35
+ rule /[a-z][\w]*/, Name
36
+ # Underscore is a name for a variable, when it won't be used later
37
+ rule /_/, Name
38
+ # Type
39
+ rule /[A-Z][\w]*/, Keyword::Type
40
+
41
+ # Two symbol operators: -> :: // .. && || ++ |> <| << >> == /= <= >=
42
+ rule /(->|::|\/\/|\.\.|&&|\|\||\+\+|\|>|<\||>>|<<|==|\/=|<=|>=)/, Operator
43
+ # One symbol operators: + - / * % = < > ^ | !
44
+ rule /[+-\/*%=<>^\|!]/, Operator
45
+ # Lambda operator
46
+ rule /\\/, Operator
47
+ # Not standard Elm operators, but these symbols can be used for custom inflix operators. We need to highlight them as operators as well.
48
+ rule /[@\#$&~?]/, Operator
49
+
50
+ # Single, double quotes, and triple double quotes
51
+ rule /"""/, Str, :multiline_string
52
+ rule /'(\\.|.)'/, Str::Char
53
+ rule /"/, Str, :double_quote
54
+
55
+ # Numbers
56
+ rule /0x[\da-f]+/i, Num::Hex
57
+ rule /\d+e[+-]?\d+/i, Num::Float
58
+ rule /\d+\.\d+(e[+-]?\d+)?/i, Num::Float
59
+ rule /\d+/, Num::Integer
60
+
61
+ # Punctuation: [ ] ( ) , ; ` { } :
62
+ rule /[\[\](),;`{}:]/, Punctuation
63
+ end
64
+
65
+ # Multiline and nested commenting
66
+ state :multiline_comment do
67
+ rule /-}/, Comment::Multiline, :pop!
68
+ rule /{-/, Comment::Multiline, :multiline_comment
69
+ rule /[^-{}]+/, Comment::Multiline
70
+ rule /[-{}]/, Comment::Multiline
71
+ end
72
+
73
+ # Double quotes
74
+ state :double_quote do
75
+ rule /[^\\"]+/, Str::Double
76
+ rule /\\"/, Str::Escape
77
+ rule /"/, Str::Double, :pop!
78
+ end
79
+
80
+ # Multiple line string with tripple double quotes, e.g. """ multi """
81
+ state :multiline_string do
82
+ rule /\s*"""/, Str, :pop!
83
+ rule /.*/, Str
84
+ rule /\s*/, Str
85
+ end
86
+
87
+ end
88
+ end
89
+ end