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,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.analyze_text(text)
15
+ return 1 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,71 @@
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
+ def self.analyze_text(text)
14
+ return 0.1 if text =~ /\A\[[\w.]+\]\s*\w+\s*=\s*("\w+")+/
15
+ end
16
+
17
+ identifier = /[\w.\S]+/
18
+
19
+ state :basic do
20
+ rule /\s+/, Text
21
+ rule /#.*?$/, Comment
22
+ rule /(true|false)/, Keyword::Constant
23
+ rule /(?<!=)\s*\[[\w\d\S]+\]/, Name::Namespace
24
+
25
+ rule /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/, Literal::Date
26
+
27
+ rule /(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?/, Num::Float
28
+ rule /\d+[eE][+-]?[0-9]+j?/, Num::Float
29
+ rule /\-?\d+/, Num::Integer
30
+ end
31
+
32
+ state :root do
33
+ mixin :basic
34
+
35
+ rule /(#{identifier})(\s*)(=)/ do
36
+ groups Name::Property, Text, Punctuation
37
+ push :value
38
+ end
39
+
40
+ end
41
+
42
+ state :value do
43
+ rule /\n/, Text, :pop!
44
+ mixin :content
45
+ end
46
+
47
+ state :content do
48
+ mixin :basic
49
+ rule /"/, Str, :dq
50
+ mixin :esc_str
51
+ rule /\,/, Punctuation
52
+ rule /\[/, Punctuation, :array
53
+ end
54
+
55
+ state :dq do
56
+ rule /"/, Str, :pop!
57
+ mixin :esc_str
58
+ rule /[^\\"]+/, Str
59
+ end
60
+
61
+ state :esc_str do
62
+ rule /\\[0t\tn\n "\\ r]/, Str::Escape
63
+ end
64
+
65
+ state :array do
66
+ mixin :content
67
+ rule /\]/, Punctuation, :pop!
68
+ end
69
+ end
70
+ end
71
+ 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,107 @@
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.analyze_text(text)
13
+ return 1 if text.shebang? 'tulip'
14
+ return 0
15
+ end
16
+
17
+ id = /[a-z][\w-]*/i
18
+ upper_id = /[A-Z][\w-]*/
19
+
20
+ state :comments_and_whitespace do
21
+ rule /\s+/, Text
22
+ rule /#.*?$/, Comment
23
+ end
24
+
25
+ state :root do
26
+ mixin :comments_and_whitespace
27
+
28
+ rule /@#{id}/, Keyword
29
+
30
+
31
+ rule /(\\#{id})([{])/ do
32
+ groups Name::Function, Str
33
+ push :nested_string
34
+ end
35
+
36
+ rule /([+]#{id})([{])/ do
37
+ groups Name::Decorator, Str
38
+ push :nested_string
39
+ end
40
+
41
+ rule /\\#{id}/, Name::Function
42
+ rule /[+]#{id}/, Name::Decorator
43
+
44
+ rule /"[{]/, Str, :dqi
45
+ rule /"/, Str, :dq
46
+
47
+ rule /'{/, Str, :nested_string
48
+ rule /'#{id}/, Str
49
+
50
+ rule /[.]#{id}/, Name::Tag
51
+ rule /[$]#{id}?/, Name::Variable
52
+ rule /-#{id}:?/, Name::Label
53
+ rule /%#{id}/, Name::Function
54
+ rule /`#{id}/, Operator::Word
55
+
56
+ rule /[?~%._>,!\[\]:{}()=;\/-]/, Punctuation
57
+
58
+ rule /[0-9]+([.][0-9]+)?/, Num
59
+
60
+ rule /#{id}/, Name
61
+
62
+ rule /</, Comment::Preproc, :angle_brackets
63
+ end
64
+
65
+ state :dq do
66
+ rule /[^\\"]+/, Str
67
+ rule /"/, Str, :pop!
68
+ rule /\\./, Str::Escape
69
+ end
70
+
71
+ state :dqi do
72
+ rule /[$][(]/, Str::Interpol, :interp_root
73
+ rule /[{]/, Str, :dqi
74
+ rule /[}]/, Str, :pop!
75
+ rule /[^{}$]+/, Str
76
+ rule /./, Str
77
+ end
78
+
79
+ state :interp_root do
80
+ rule /[)]/, Str::Interpol, :pop!
81
+ mixin :interp
82
+ end
83
+
84
+ state :interp do
85
+ rule /[(]/, Punctuation, :interp
86
+ rule /[)]/, Punctuation, :pop!
87
+ mixin :root
88
+ end
89
+
90
+ state :nested_string do
91
+ rule /\\./, Str::Escape
92
+ rule(/{/) { token Str; push :nested_string }
93
+ rule(/}/) { token Str; pop! }
94
+ rule(/[^{}\\]+/) { token Str }
95
+ end
96
+
97
+ state :angle_brackets do
98
+ mixin :comments_and_whitespace
99
+ rule />/, Comment::Preproc, :pop!
100
+ rule /[*:]/, Punctuation
101
+ rule /#{upper_id}/, Keyword::Type
102
+ rule /#{id}/, Name::Variable
103
+ end
104
+ end
105
+ end
106
+ end
107
+
@@ -0,0 +1,72 @@
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
+ def self.analyze_text(text)
16
+ start = text[0..1000]
17
+ return 0.5 if start =~ %r(@prefix\b)
18
+ return 0.5 if start =~ %r(@base\b)
19
+ return 0.4 if start =~ %r(PREFIX\b)i
20
+ return 0.4 if start =~ %r(BASE\b)i
21
+ end
22
+
23
+ state :root do
24
+ rule /@base\b/, Keyword::Declaration
25
+ rule /@prefix\b/, Keyword::Declaration
26
+ rule /true\b/, Keyword::Constant
27
+ rule /false\b/, Keyword::Constant
28
+
29
+ rule /""".*?"""/m, Literal::String
30
+ rule /"([^"\\]|\\.)*"/, Literal::String
31
+ rule /'''.*?'''/m, Literal::String
32
+ rule /'([^'\\]|\\.)*'/, Literal::String
33
+
34
+ rule /#.*$/, Comment::Single
35
+
36
+ rule /@[^\s,.; ]+/, Name::Attribute
37
+
38
+ rule /[+-]?[0-9]+\.[0-9]*E[+-]?[0-9]+/, Literal::Number::Float
39
+ rule /[+-]?\.[0-9]+E[+-]?[0-9]+/, Literal::Number::Float
40
+ rule /[+-]?[0-9]+E[+-]?[0-9]+/, Literal::Number::Float
41
+
42
+ rule /[+-]?[0-9]*\.[0-9]+?/, Literal::Number::Float
43
+
44
+ rule /[+-]?[0-9]+/, Literal::Number::Integer
45
+
46
+ rule /\./, Punctuation
47
+ rule /,/, Punctuation
48
+ rule /;/, Punctuation
49
+ rule /\(/, Punctuation
50
+ rule /\)/, Punctuation
51
+ rule /\{/, Punctuation
52
+ rule /\}/, Punctuation
53
+ rule /\[/, Punctuation
54
+ rule /\]/, Punctuation
55
+ rule /\^\^/, Punctuation
56
+
57
+ rule /<[^>]*>/, Name::Label
58
+
59
+ rule /base\b/i, Keyword::Declaration
60
+ rule /prefix\b/i, Keyword::Declaration
61
+ rule /GRAPH\b/, Keyword
62
+ rule /a\b/, Keyword
63
+
64
+ rule /\s+/, Text::Whitespace
65
+
66
+ rule /[^:;<>#\@"\(\).\[\]\{\} ]+:/, Name::Namespace
67
+ rule /[^:;<>#\@"\(\).\[\]\{\} ]+/, Name
68
+
69
+ end
70
+ end
71
+ end
72
+ 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