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,69 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class TeX < RegexLexer
6
+ title "TeX"
7
+ desc "The TeX typesetting system"
8
+ tag 'tex'
9
+ aliases 'TeX', 'LaTeX', 'latex'
10
+
11
+ filenames '*.tex', '*.aux', '*.toc', '*.sty', '*.cls'
12
+ mimetypes 'text/x-tex', 'text/x-latex'
13
+
14
+ def self.detect?(text)
15
+ return true if text =~ /\A\s*\\(documentclass|input|documentstyle|relax|ProvidesPackage|ProvidesClass)/
16
+ end
17
+
18
+ command = /\\([a-z]+|\s+|.)/i
19
+
20
+ state :general do
21
+ rule /%.*$/, Comment
22
+ rule /[{}&_^]/, Punctuation
23
+ end
24
+
25
+ state :root do
26
+ rule /\\\[/, Punctuation, :displaymath
27
+ rule /\\\(/, Punctuation, :inlinemath
28
+ rule /\$\$/, Punctuation, :displaymath
29
+ rule /\$/, Punctuation, :inlinemath
30
+ rule /\\(begin|end)\{.*?\}/, Name::Tag
31
+
32
+ rule /(\\verb)\b(\S)(.*?)(\2)/ do |m|
33
+ groups Name::Builtin, Keyword::Pseudo, Str::Other, Keyword::Pseudo
34
+ end
35
+
36
+ rule command, Keyword, :command
37
+ mixin :general
38
+ rule /[^\\$%&_^{}]+/, Text
39
+ end
40
+
41
+ state :math do
42
+ rule command, Name::Variable
43
+ mixin :general
44
+ rule /[0-9]+/, Num
45
+ rule /[-=!+*\/()\[\]]/, Operator
46
+ rule /[^=!+*\/()\[\]\\$%&_^{}0-9-]+/, Name::Builtin
47
+ end
48
+
49
+ state :inlinemath do
50
+ rule /\\\)/, Punctuation, :pop!
51
+ rule /\$/, Punctuation, :pop!
52
+ mixin :math
53
+ end
54
+
55
+ state :displaymath do
56
+ rule /\\\]/, Punctuation, :pop!
57
+ rule /\$\$/, Punctuation, :pop!
58
+ rule /\$/, Name::Builtin
59
+ mixin :math
60
+ end
61
+
62
+ state :command do
63
+ rule /\[.*?\]/, Name::Attribute
64
+ rule /\*/, Keyword
65
+ rule(//) { pop! }
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,67 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class TOML < RegexLexer
6
+ title "TOML"
7
+ desc 'the TOML configuration format (https://github.com/mojombo/toml)'
8
+ tag 'toml'
9
+
10
+ filenames '*.toml'
11
+ mimetypes 'text/x-toml'
12
+
13
+ identifier = /[\w.\S]+/
14
+
15
+ state :basic do
16
+ rule /\s+/, Text
17
+ rule /#.*?$/, Comment
18
+ rule /(true|false)/, Keyword::Constant
19
+ rule /(?<!=)\s*\[[\w\d\S]+\]/, Name::Namespace
20
+
21
+ rule /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/, Literal::Date
22
+
23
+ rule /(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?/, Num::Float
24
+ rule /\d+[eE][+-]?[0-9]+j?/, Num::Float
25
+ rule /\-?\d+/, Num::Integer
26
+ end
27
+
28
+ state :root do
29
+ mixin :basic
30
+
31
+ rule /(#{identifier})(\s*)(=)/ do
32
+ groups Name::Property, Text, Punctuation
33
+ push :value
34
+ end
35
+
36
+ end
37
+
38
+ state :value do
39
+ rule /\n/, Text, :pop!
40
+ mixin :content
41
+ end
42
+
43
+ state :content do
44
+ mixin :basic
45
+ rule /"/, Str, :dq
46
+ mixin :esc_str
47
+ rule /\,/, Punctuation
48
+ rule /\[/, Punctuation, :array
49
+ end
50
+
51
+ state :dq do
52
+ rule /"/, Str, :pop!
53
+ mixin :esc_str
54
+ rule /[^\\"]+/, Str
55
+ end
56
+
57
+ state :esc_str do
58
+ rule /\\[0t\tn\n "\\ r]/, Str::Escape
59
+ end
60
+
61
+ state :array do
62
+ mixin :content
63
+ rule /\]/, Punctuation, :pop!
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'jsx.rb'
6
+ load_lexer 'typescript/common.rb'
7
+
8
+ class TSX < JSX
9
+ include TypescriptCommon
10
+
11
+ title 'TypeScript'
12
+ desc 'tsx'
13
+
14
+ tag 'tsx'
15
+ filenames '*.tsx'
16
+ end
17
+ end
18
+ end
19
+
@@ -0,0 +1,106 @@
1
+ module Rouge
2
+ module Lexers
3
+ class Tulip < RegexLexer
4
+ desc 'the tulip programming language (twitter.com/tuliplang)'
5
+ tag 'tulip'
6
+ aliases 'tulip'
7
+
8
+ filenames '*.tlp'
9
+
10
+ mimetypes 'text/x-tulip', 'application/x-tulip'
11
+
12
+ def self.detect?(text)
13
+ return true if text.shebang? 'tulip'
14
+ end
15
+
16
+ id = /[a-z][\w-]*/i
17
+ upper_id = /[A-Z][\w-]*/
18
+
19
+ state :comments_and_whitespace do
20
+ rule /\s+/, Text
21
+ rule /#.*?$/, Comment
22
+ end
23
+
24
+ state :root do
25
+ mixin :comments_and_whitespace
26
+
27
+ rule /@#{id}/, Keyword
28
+
29
+
30
+ rule /(\\#{id})([{])/ do
31
+ groups Name::Function, Str
32
+ push :nested_string
33
+ end
34
+
35
+ rule /([+]#{id})([{])/ do
36
+ groups Name::Decorator, Str
37
+ push :nested_string
38
+ end
39
+
40
+ rule /\\#{id}/, Name::Function
41
+ rule /[+]#{id}/, Name::Decorator
42
+
43
+ rule /"[{]/, Str, :dqi
44
+ rule /"/, Str, :dq
45
+
46
+ rule /'{/, Str, :nested_string
47
+ rule /'#{id}/, Str
48
+
49
+ rule /[.]#{id}/, Name::Tag
50
+ rule /[$]#{id}?/, Name::Variable
51
+ rule /-#{id}:?/, Name::Label
52
+ rule /%#{id}/, Name::Function
53
+ rule /`#{id}/, Operator::Word
54
+
55
+ rule /[?~%._>,!\[\]:{}()=;\/-]/, Punctuation
56
+
57
+ rule /[0-9]+([.][0-9]+)?/, Num
58
+
59
+ rule /#{id}/, Name
60
+
61
+ rule /</, Comment::Preproc, :angle_brackets
62
+ end
63
+
64
+ state :dq do
65
+ rule /[^\\"]+/, Str
66
+ rule /"/, Str, :pop!
67
+ rule /\\./, Str::Escape
68
+ end
69
+
70
+ state :dqi do
71
+ rule /[$][(]/, Str::Interpol, :interp_root
72
+ rule /[{]/, Str, :dqi
73
+ rule /[}]/, Str, :pop!
74
+ rule /[^{}$]+/, Str
75
+ rule /./, Str
76
+ end
77
+
78
+ state :interp_root do
79
+ rule /[)]/, Str::Interpol, :pop!
80
+ mixin :interp
81
+ end
82
+
83
+ state :interp do
84
+ rule /[(]/, Punctuation, :interp
85
+ rule /[)]/, Punctuation, :pop!
86
+ mixin :root
87
+ end
88
+
89
+ state :nested_string do
90
+ rule /\\./, Str::Escape
91
+ rule(/{/) { token Str; push :nested_string }
92
+ rule(/}/) { token Str; pop! }
93
+ rule(/[^{}\\]+/) { token Str }
94
+ end
95
+
96
+ state :angle_brackets do
97
+ mixin :comments_and_whitespace
98
+ rule />/, Comment::Preproc, :pop!
99
+ rule /[*:]/, Punctuation
100
+ rule /#{upper_id}/, Keyword::Type
101
+ rule /#{id}/, Name::Variable
102
+ end
103
+ end
104
+ end
105
+ end
106
+
@@ -0,0 +1,63 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Turtle < RegexLexer
6
+ title "Turtle/TriG"
7
+ desc "Terse RDF Triple Language, TriG"
8
+ tag 'turtle'
9
+ filenames *%w(*.ttl *.trig)
10
+ mimetypes *%w(
11
+ text/turtle
12
+ application/trig
13
+ )
14
+
15
+ state :root do
16
+ rule /@base\b/, Keyword::Declaration
17
+ rule /@prefix\b/, Keyword::Declaration
18
+ rule /true\b/, Keyword::Constant
19
+ rule /false\b/, Keyword::Constant
20
+
21
+ rule /""".*?"""/m, Literal::String
22
+ rule /"([^"\\]|\\.)*"/, Literal::String
23
+ rule /'''.*?'''/m, Literal::String
24
+ rule /'([^'\\]|\\.)*'/, Literal::String
25
+
26
+ rule /#.*$/, Comment::Single
27
+
28
+ rule /@[^\s,.; ]+/, Name::Attribute
29
+
30
+ rule /[+-]?[0-9]+\.[0-9]*E[+-]?[0-9]+/, Literal::Number::Float
31
+ rule /[+-]?\.[0-9]+E[+-]?[0-9]+/, Literal::Number::Float
32
+ rule /[+-]?[0-9]+E[+-]?[0-9]+/, Literal::Number::Float
33
+
34
+ rule /[+-]?[0-9]*\.[0-9]+?/, Literal::Number::Float
35
+
36
+ rule /[+-]?[0-9]+/, Literal::Number::Integer
37
+
38
+ rule /\./, Punctuation
39
+ rule /,/, Punctuation
40
+ rule /;/, Punctuation
41
+ rule /\(/, Punctuation
42
+ rule /\)/, Punctuation
43
+ rule /\{/, Punctuation
44
+ rule /\}/, Punctuation
45
+ rule /\[/, Punctuation
46
+ rule /\]/, Punctuation
47
+ rule /\^\^/, Punctuation
48
+
49
+ rule /<[^>]*>/, Name::Label
50
+
51
+ rule /base\b/i, Keyword::Declaration
52
+ rule /prefix\b/i, Keyword::Declaration
53
+ rule /GRAPH\b/, Keyword
54
+ rule /a\b/, Keyword
55
+
56
+ rule /\s+/, Text::Whitespace
57
+
58
+ rule /[^:;<>#\@"\(\).\[\]\{\} ]+:/, Name::Namespace
59
+ rule /[^:;<>#\@"\(\).\[\]\{\} ]+/, Name
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,39 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'jinja.rb'
6
+
7
+ class Twig < Jinja
8
+ title "Twig"
9
+ desc "Twig template engine (twig.sensiolabs.org)"
10
+
11
+ tag "twig"
12
+
13
+ filenames '*.twig'
14
+
15
+ mimetypes 'application/x-twig', 'text/html+twig'
16
+
17
+ def self.keywords
18
+ @@keywords ||= %w(as do extends flush from import include use else starts
19
+ ends with without autoescape endautoescape block endblock
20
+ embed endembed filter endfilter for endfor if endif
21
+ macro endmacro sandbox endsandbox set endset
22
+ spaceless endspaceless verbatim endverbatim)
23
+ end
24
+
25
+ def self.tests
26
+ @@tests ||= %w(constant defined divisibleby empty even iterable null odd
27
+ sameas)
28
+ end
29
+
30
+ def self.pseudo_keywords
31
+ @@pseudo_keywords ||= %w(true false none)
32
+ end
33
+
34
+ def self.word_operators
35
+ @@word_operators ||= %w(b-and b-or b-xor is in and or not)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,22 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'javascript.rb'
6
+ load_lexer 'typescript/common.rb'
7
+
8
+ class Typescript < Javascript
9
+ include TypescriptCommon
10
+
11
+ title "TypeScript"
12
+ desc "TypeScript, a superset of JavaScript"
13
+
14
+ tag 'typescript'
15
+ aliases 'ts'
16
+
17
+ filenames '*.ts', '*.d.ts'
18
+
19
+ mimetypes 'text/typescript'
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,33 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ module TypescriptCommon
6
+ def self.keywords
7
+ @keywords ||= super + Set.new(%w(
8
+ is namespace static private protected public
9
+ implements readonly
10
+ ))
11
+ end
12
+
13
+ def self.declarations
14
+ @declarations ||= super + Set.new(%w(
15
+ type abstract
16
+ ))
17
+ end
18
+
19
+ def self.reserved
20
+ @reserved ||= super + Set.new(%w(
21
+ string any void number namespace module
22
+ declare default interface keyof
23
+ ))
24
+ end
25
+
26
+ def self.builtins
27
+ @builtins ||= super + %w(
28
+ Pick Partial Readonly Record
29
+ )
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,77 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Vala < RegexLexer
6
+ tag 'vala'
7
+ filenames '*.vala'
8
+ mimetypes 'text/x-vala'
9
+
10
+ title "Vala"
11
+ desc 'A programming language similar to csharp.'
12
+
13
+ id = /@?[_a-z]\w*/i
14
+
15
+ keywords = %w(
16
+ abstract as async base break case catch const construct continue
17
+ default delegate delete do dynamic else ensures enum errordomain
18
+ extern false finally for foreach get global if in inline interface
19
+ internal is lock new null out override owned private protected
20
+ public ref requires return set signal sizeof static switch this
21
+ throw throws true try typeof unowned var value virtual void weak
22
+ while yield
23
+ )
24
+
25
+ keywords_type = %w(
26
+ bool char double float int int8 int16 int32 int64 long short size_t
27
+ ssize_t string unichar uint uint8 uint16 uint32 uint64 ulong ushort
28
+ )
29
+
30
+ state :whitespace do
31
+ rule /\s+/m, Text
32
+ rule %r(//.*?$), Comment::Single
33
+ rule %r(/[*].*?[*]/)m, Comment::Multiline
34
+ end
35
+
36
+ state :root do
37
+ mixin :whitespace
38
+
39
+ rule /^\s*\[.*?\]/, Name::Attribute
40
+
41
+ rule /(<\[)\s*(#{id}:)?/, Keyword
42
+ rule /\]>/, Keyword
43
+
44
+ rule /[~!%^&*()+=|\[\]{}:;,.<>\/?-]/, Punctuation
45
+ rule /@"(\\.|.)*?"/, Str
46
+ rule /"(\\.|.)*?["\n]/, Str
47
+ rule /'(\\.|.)'/, Str::Char
48
+ rule /0x[0-9a-f]+[lu]?/i, Num
49
+ rule %r(
50
+ [0-9]
51
+ ([.][0-9]*)? # decimal
52
+ (e[+-][0-9]+)? # exponent
53
+ [fldu]? # type
54
+ )ix, Num
55
+ rule /\b(#{keywords.join('|')})\b/, Keyword
56
+ rule /\b(#{keywords_type.join('|')})\b/, Keyword::Type
57
+ rule /class|struct/, Keyword, :class
58
+ rule /namespace|using/, Keyword, :namespace
59
+ rule /#{id}(?=\s*[(])/, Name::Function
60
+ rule id, Name
61
+
62
+ rule /#.*/, Comment::Preproc
63
+ end
64
+
65
+ state :class do
66
+ mixin :whitespace
67
+ rule id, Name::Class, :pop!
68
+ end
69
+
70
+ state :namespace do
71
+ mixin :whitespace
72
+ rule /(?=[(])/, Text, :pop!
73
+ rule /(#{id}|[.])+/, Name::Namespace, :pop!
74
+ end
75
+ end
76
+ end
77
+ end