rouge-alda 3.3.0

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 (335) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +28 -0
  3. data/LICENSE +186 -0
  4. data/bin/rougify +18 -0
  5. data/lib/rouge/cli.rb +432 -0
  6. data/lib/rouge/demos/abap +6 -0
  7. data/lib/rouge/demos/actionscript +4 -0
  8. data/lib/rouge/demos/alda +10 -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/crystal +45 -0
  27. data/lib/rouge/demos/csharp +5 -0
  28. data/lib/rouge/demos/css +4 -0
  29. data/lib/rouge/demos/d +16 -0
  30. data/lib/rouge/demos/dart +6 -0
  31. data/lib/rouge/demos/diff +7 -0
  32. data/lib/rouge/demos/digdag +19 -0
  33. data/lib/rouge/demos/docker +9 -0
  34. data/lib/rouge/demos/dot +5 -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/hcl +7 -0
  54. data/lib/rouge/demos/html +8 -0
  55. data/lib/rouge/demos/http +14 -0
  56. data/lib/rouge/demos/hylang +10 -0
  57. data/lib/rouge/demos/idlang +8 -0
  58. data/lib/rouge/demos/igorpro +9 -0
  59. data/lib/rouge/demos/ini +4 -0
  60. data/lib/rouge/demos/io +11 -0
  61. data/lib/rouge/demos/irb +4 -0
  62. data/lib/rouge/demos/irb_output +2 -0
  63. data/lib/rouge/demos/java +5 -0
  64. data/lib/rouge/demos/javascript +1 -0
  65. data/lib/rouge/demos/jinja +9 -0
  66. data/lib/rouge/demos/json +1 -0
  67. data/lib/rouge/demos/json-doc +1 -0
  68. data/lib/rouge/demos/jsonnet +28 -0
  69. data/lib/rouge/demos/jsp +29 -0
  70. data/lib/rouge/demos/jsx +17 -0
  71. data/lib/rouge/demos/julia +11 -0
  72. data/lib/rouge/demos/kotlin +3 -0
  73. data/lib/rouge/demos/lasso +12 -0
  74. data/lib/rouge/demos/liquid +11 -0
  75. data/lib/rouge/demos/literate_coffeescript +3 -0
  76. data/lib/rouge/demos/literate_haskell +7 -0
  77. data/lib/rouge/demos/llvm +20 -0
  78. data/lib/rouge/demos/lua +12 -0
  79. data/lib/rouge/demos/m68k +16 -0
  80. data/lib/rouge/demos/make +6 -0
  81. data/lib/rouge/demos/markdown +4 -0
  82. data/lib/rouge/demos/mathematica +8 -0
  83. data/lib/rouge/demos/matlab +6 -0
  84. data/lib/rouge/demos/moonscript +16 -0
  85. data/lib/rouge/demos/mosel +10 -0
  86. data/lib/rouge/demos/mxml +22 -0
  87. data/lib/rouge/demos/nasm +26 -0
  88. data/lib/rouge/demos/nginx +5 -0
  89. data/lib/rouge/demos/nim +27 -0
  90. data/lib/rouge/demos/nix +19 -0
  91. data/lib/rouge/demos/objective_c +18 -0
  92. data/lib/rouge/demos/ocaml +12 -0
  93. data/lib/rouge/demos/pascal +14 -0
  94. data/lib/rouge/demos/perl +5 -0
  95. data/lib/rouge/demos/php +3 -0
  96. data/lib/rouge/demos/plaintext +1 -0
  97. data/lib/rouge/demos/plist +142 -0
  98. data/lib/rouge/demos/pony +17 -0
  99. data/lib/rouge/demos/powershell +49 -0
  100. data/lib/rouge/demos/praat +26 -0
  101. data/lib/rouge/demos/prolog +9 -0
  102. data/lib/rouge/demos/prometheus +9 -0
  103. data/lib/rouge/demos/properties +7 -0
  104. data/lib/rouge/demos/protobuf +5 -0
  105. data/lib/rouge/demos/puppet +6 -0
  106. data/lib/rouge/demos/python +6 -0
  107. data/lib/rouge/demos/q +2 -0
  108. data/lib/rouge/demos/qml +9 -0
  109. data/lib/rouge/demos/r +8 -0
  110. data/lib/rouge/demos/racket +24 -0
  111. data/lib/rouge/demos/ruby +9 -0
  112. data/lib/rouge/demos/rust +12 -0
  113. data/lib/rouge/demos/sass +3 -0
  114. data/lib/rouge/demos/scala +3 -0
  115. data/lib/rouge/demos/scheme +4 -0
  116. data/lib/rouge/demos/scss +5 -0
  117. data/lib/rouge/demos/sed +4 -0
  118. data/lib/rouge/demos/shell +2 -0
  119. data/lib/rouge/demos/sieve +10 -0
  120. data/lib/rouge/demos/slim +17 -0
  121. data/lib/rouge/demos/smalltalk +6 -0
  122. data/lib/rouge/demos/smarty +12 -0
  123. data/lib/rouge/demos/sml +4 -0
  124. data/lib/rouge/demos/sqf +14 -0
  125. data/lib/rouge/demos/sql +1 -0
  126. data/lib/rouge/demos/swift +5 -0
  127. data/lib/rouge/demos/tap +5 -0
  128. data/lib/rouge/demos/tcl +1 -0
  129. data/lib/rouge/demos/terraform +31 -0
  130. data/lib/rouge/demos/tex +1 -0
  131. data/lib/rouge/demos/toml +9 -0
  132. data/lib/rouge/demos/tsx +17 -0
  133. data/lib/rouge/demos/tulip +13 -0
  134. data/lib/rouge/demos/turtle +26 -0
  135. data/lib/rouge/demos/twig +9 -0
  136. data/lib/rouge/demos/typescript +1 -0
  137. data/lib/rouge/demos/vala +8 -0
  138. data/lib/rouge/demos/vb +4 -0
  139. data/lib/rouge/demos/verilog +27 -0
  140. data/lib/rouge/demos/vhdl +23 -0
  141. data/lib/rouge/demos/viml +14 -0
  142. data/lib/rouge/demos/vue +11 -0
  143. data/lib/rouge/demos/wollok +11 -0
  144. data/lib/rouge/demos/xml +2 -0
  145. data/lib/rouge/demos/yaml +4 -0
  146. data/lib/rouge/formatter.rb +76 -0
  147. data/lib/rouge/formatters/html.rb +38 -0
  148. data/lib/rouge/formatters/html_inline.rb +31 -0
  149. data/lib/rouge/formatters/html_legacy.rb +45 -0
  150. data/lib/rouge/formatters/html_linewise.rb +28 -0
  151. data/lib/rouge/formatters/html_pygments.rb +18 -0
  152. data/lib/rouge/formatters/html_table.rb +62 -0
  153. data/lib/rouge/formatters/null.rb +20 -0
  154. data/lib/rouge/formatters/terminal256.rb +181 -0
  155. data/lib/rouge/guesser.rb +57 -0
  156. data/lib/rouge/guessers/disambiguation.rb +106 -0
  157. data/lib/rouge/guessers/filename.rb +27 -0
  158. data/lib/rouge/guessers/glob_mapping.rb +45 -0
  159. data/lib/rouge/guessers/mimetype.rb +16 -0
  160. data/lib/rouge/guessers/modeline.rb +46 -0
  161. data/lib/rouge/guessers/source.rb +31 -0
  162. data/lib/rouge/guessers/util.rb +34 -0
  163. data/lib/rouge/lexer.rb +462 -0
  164. data/lib/rouge/lexers/abap.rb +240 -0
  165. data/lib/rouge/lexers/actionscript.rb +196 -0
  166. data/lib/rouge/lexers/alda.rb +43 -0
  167. data/lib/rouge/lexers/apache/keywords.yml +764 -0
  168. data/lib/rouge/lexers/apache.rb +73 -0
  169. data/lib/rouge/lexers/apiblueprint.rb +49 -0
  170. data/lib/rouge/lexers/apple_script.rb +369 -0
  171. data/lib/rouge/lexers/awk.rb +162 -0
  172. data/lib/rouge/lexers/biml.rb +43 -0
  173. data/lib/rouge/lexers/bsl.rb +82 -0
  174. data/lib/rouge/lexers/c.rb +213 -0
  175. data/lib/rouge/lexers/ceylon.rb +124 -0
  176. data/lib/rouge/lexers/cfscript.rb +154 -0
  177. data/lib/rouge/lexers/clojure.rb +113 -0
  178. data/lib/rouge/lexers/cmake.rb +207 -0
  179. data/lib/rouge/lexers/coffeescript.rb +175 -0
  180. data/lib/rouge/lexers/common_lisp.rb +346 -0
  181. data/lib/rouge/lexers/conf.rb +25 -0
  182. data/lib/rouge/lexers/console.rb +137 -0
  183. data/lib/rouge/lexers/coq.rb +188 -0
  184. data/lib/rouge/lexers/cpp.rb +79 -0
  185. data/lib/rouge/lexers/crystal.rb +430 -0
  186. data/lib/rouge/lexers/csharp.rb +115 -0
  187. data/lib/rouge/lexers/css.rb +274 -0
  188. data/lib/rouge/lexers/d.rb +177 -0
  189. data/lib/rouge/lexers/dart.rb +105 -0
  190. data/lib/rouge/lexers/diff.rb +33 -0
  191. data/lib/rouge/lexers/digdag.rb +70 -0
  192. data/lib/rouge/lexers/docker.rb +51 -0
  193. data/lib/rouge/lexers/dot.rb +69 -0
  194. data/lib/rouge/lexers/eiffel.rb +66 -0
  195. data/lib/rouge/lexers/elixir.rb +134 -0
  196. data/lib/rouge/lexers/elm.rb +90 -0
  197. data/lib/rouge/lexers/erb.rb +53 -0
  198. data/lib/rouge/lexers/erlang.rb +115 -0
  199. data/lib/rouge/lexers/factor.rb +303 -0
  200. data/lib/rouge/lexers/fortran.rb +178 -0
  201. data/lib/rouge/lexers/fsharp.rb +119 -0
  202. data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
  203. data/lib/rouge/lexers/gherkin.rb +138 -0
  204. data/lib/rouge/lexers/glsl.rb +136 -0
  205. data/lib/rouge/lexers/go.rb +175 -0
  206. data/lib/rouge/lexers/gradle.rb +38 -0
  207. data/lib/rouge/lexers/graphql.rb +254 -0
  208. data/lib/rouge/lexers/groovy.rb +113 -0
  209. data/lib/rouge/lexers/hack.rb +49 -0
  210. data/lib/rouge/lexers/haml.rb +230 -0
  211. data/lib/rouge/lexers/handlebars.rb +80 -0
  212. data/lib/rouge/lexers/haskell.rb +198 -0
  213. data/lib/rouge/lexers/hcl.rb +163 -0
  214. data/lib/rouge/lexers/html.rb +140 -0
  215. data/lib/rouge/lexers/http.rb +81 -0
  216. data/lib/rouge/lexers/hylang.rb +94 -0
  217. data/lib/rouge/lexers/idlang.rb +312 -0
  218. data/lib/rouge/lexers/igorpro.rb +664 -0
  219. data/lib/rouge/lexers/ini.rb +54 -0
  220. data/lib/rouge/lexers/io.rb +69 -0
  221. data/lib/rouge/lexers/irb.rb +67 -0
  222. data/lib/rouge/lexers/java.rb +88 -0
  223. data/lib/rouge/lexers/javascript.rb +283 -0
  224. data/lib/rouge/lexers/jinja.rb +138 -0
  225. data/lib/rouge/lexers/json.rb +30 -0
  226. data/lib/rouge/lexers/json_doc.rb +24 -0
  227. data/lib/rouge/lexers/jsonnet.rb +152 -0
  228. data/lib/rouge/lexers/jsp.rb +120 -0
  229. data/lib/rouge/lexers/jsx.rb +104 -0
  230. data/lib/rouge/lexers/julia.rb +167 -0
  231. data/lib/rouge/lexers/kotlin.rb +127 -0
  232. data/lib/rouge/lexers/lasso/keywords.yml +446 -0
  233. data/lib/rouge/lexers/lasso.rb +215 -0
  234. data/lib/rouge/lexers/liquid.rb +288 -0
  235. data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
  236. data/lib/rouge/lexers/literate_haskell.rb +37 -0
  237. data/lib/rouge/lexers/llvm.rb +81 -0
  238. data/lib/rouge/lexers/lua/builtins.rb +24 -0
  239. data/lib/rouge/lexers/lua.rb +126 -0
  240. data/lib/rouge/lexers/m68k.rb +144 -0
  241. data/lib/rouge/lexers/make.rb +113 -0
  242. data/lib/rouge/lexers/markdown.rb +155 -0
  243. data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
  244. data/lib/rouge/lexers/mathematica.rb +96 -0
  245. data/lib/rouge/lexers/matlab/builtins.rb +13 -0
  246. data/lib/rouge/lexers/matlab.rb +72 -0
  247. data/lib/rouge/lexers/moonscript.rb +115 -0
  248. data/lib/rouge/lexers/mosel.rb +232 -0
  249. data/lib/rouge/lexers/mxml.rb +69 -0
  250. data/lib/rouge/lexers/nasm.rb +199 -0
  251. data/lib/rouge/lexers/nginx.rb +72 -0
  252. data/lib/rouge/lexers/nim.rb +153 -0
  253. data/lib/rouge/lexers/nix.rb +211 -0
  254. data/lib/rouge/lexers/objective_c.rb +195 -0
  255. data/lib/rouge/lexers/ocaml.rb +101 -0
  256. data/lib/rouge/lexers/pascal.rb +67 -0
  257. data/lib/rouge/lexers/perl.rb +201 -0
  258. data/lib/rouge/lexers/php/builtins.rb +196 -0
  259. data/lib/rouge/lexers/php.rb +194 -0
  260. data/lib/rouge/lexers/plain_text.rb +27 -0
  261. data/lib/rouge/lexers/plist.rb +47 -0
  262. data/lib/rouge/lexers/pony.rb +94 -0
  263. data/lib/rouge/lexers/powershell.rb +679 -0
  264. data/lib/rouge/lexers/praat.rb +351 -0
  265. data/lib/rouge/lexers/prolog.rb +61 -0
  266. data/lib/rouge/lexers/prometheus.rb +123 -0
  267. data/lib/rouge/lexers/properties.rb +52 -0
  268. data/lib/rouge/lexers/protobuf.rb +71 -0
  269. data/lib/rouge/lexers/puppet.rb +129 -0
  270. data/lib/rouge/lexers/python.rb +247 -0
  271. data/lib/rouge/lexers/q.rb +125 -0
  272. data/lib/rouge/lexers/qml.rb +74 -0
  273. data/lib/rouge/lexers/r.rb +90 -0
  274. data/lib/rouge/lexers/racket.rb +545 -0
  275. data/lib/rouge/lexers/ruby.rb +439 -0
  276. data/lib/rouge/lexers/rust.rb +198 -0
  277. data/lib/rouge/lexers/sass/common.rb +181 -0
  278. data/lib/rouge/lexers/sass.rb +75 -0
  279. data/lib/rouge/lexers/scala.rb +143 -0
  280. data/lib/rouge/lexers/scheme.rb +113 -0
  281. data/lib/rouge/lexers/scss.rb +35 -0
  282. data/lib/rouge/lexers/sed.rb +173 -0
  283. data/lib/rouge/lexers/shell.rb +190 -0
  284. data/lib/rouge/lexers/sieve.rb +97 -0
  285. data/lib/rouge/lexers/slim.rb +229 -0
  286. data/lib/rouge/lexers/smalltalk.rb +117 -0
  287. data/lib/rouge/lexers/smarty.rb +81 -0
  288. data/lib/rouge/lexers/sml.rb +345 -0
  289. data/lib/rouge/lexers/sqf/commands.rb +15 -0
  290. data/lib/rouge/lexers/sqf.rb +109 -0
  291. data/lib/rouge/lexers/sql.rb +141 -0
  292. data/lib/rouge/lexers/swift.rb +182 -0
  293. data/lib/rouge/lexers/tap.rb +89 -0
  294. data/lib/rouge/lexers/tcl.rb +193 -0
  295. data/lib/rouge/lexers/terraform.rb +105 -0
  296. data/lib/rouge/lexers/tex.rb +70 -0
  297. data/lib/rouge/lexers/toml.rb +68 -0
  298. data/lib/rouge/lexers/tsx.rb +20 -0
  299. data/lib/rouge/lexers/tulip.rb +108 -0
  300. data/lib/rouge/lexers/turtle.rb +64 -0
  301. data/lib/rouge/lexers/twig.rb +40 -0
  302. data/lib/rouge/lexers/typescript/common.rb +34 -0
  303. data/lib/rouge/lexers/typescript.rb +23 -0
  304. data/lib/rouge/lexers/vala.rb +78 -0
  305. data/lib/rouge/lexers/vb.rb +165 -0
  306. data/lib/rouge/lexers/verilog.rb +165 -0
  307. data/lib/rouge/lexers/vhdl.rb +98 -0
  308. data/lib/rouge/lexers/viml/keywords.rb +14 -0
  309. data/lib/rouge/lexers/viml.rb +102 -0
  310. data/lib/rouge/lexers/vue.rb +124 -0
  311. data/lib/rouge/lexers/wollok.rb +104 -0
  312. data/lib/rouge/lexers/xml.rb +58 -0
  313. data/lib/rouge/lexers/yaml.rb +374 -0
  314. data/lib/rouge/plugins/redcarpet.rb +31 -0
  315. data/lib/rouge/regex_lexer.rb +442 -0
  316. data/lib/rouge/template_lexer.rb +21 -0
  317. data/lib/rouge/text_analyzer.rb +50 -0
  318. data/lib/rouge/theme.rb +214 -0
  319. data/lib/rouge/themes/base16.rb +131 -0
  320. data/lib/rouge/themes/colorful.rb +68 -0
  321. data/lib/rouge/themes/github.rb +72 -0
  322. data/lib/rouge/themes/gruvbox.rb +168 -0
  323. data/lib/rouge/themes/igor_pro.rb +21 -0
  324. data/lib/rouge/themes/molokai.rb +83 -0
  325. data/lib/rouge/themes/monokai.rb +93 -0
  326. data/lib/rouge/themes/monokai_sublime.rb +92 -0
  327. data/lib/rouge/themes/pastie.rb +70 -0
  328. data/lib/rouge/themes/thankful_eyes.rb +75 -0
  329. data/lib/rouge/themes/tulip.rb +70 -0
  330. data/lib/rouge/token.rb +183 -0
  331. data/lib/rouge/util.rb +102 -0
  332. data/lib/rouge/version.rb +8 -0
  333. data/lib/rouge.rb +84 -0
  334. data/rouge.gemspec +25 -0
  335. metadata +384 -0
@@ -0,0 +1,54 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class INI < RegexLexer
7
+ title "INI"
8
+ desc 'the INI configuration format'
9
+ tag 'ini'
10
+
11
+ # TODO add more here
12
+ filenames '*.ini', '*.INI', '*.gitconfig'
13
+ mimetypes 'text/x-ini'
14
+
15
+ identifier = /[\w\-.]+/
16
+
17
+ state :basic do
18
+ rule /[;#].*?\n/, Comment
19
+ rule /\s+/, Text
20
+ rule /\\\n/, Str::Escape
21
+ end
22
+
23
+ state :root do
24
+ mixin :basic
25
+
26
+ rule /(#{identifier})(\s*)(=)/ do
27
+ groups Name::Property, Text, Punctuation
28
+ push :value
29
+ end
30
+
31
+ rule /\[.*?\]/, Name::Namespace
32
+ end
33
+
34
+ state :value do
35
+ rule /\n/, Text, :pop!
36
+ mixin :basic
37
+ rule /"/, Str, :dq
38
+ rule /'.*?'/, Str
39
+ mixin :esc_str
40
+ rule /[^\\\n]+/, Str
41
+ end
42
+
43
+ state :dq do
44
+ rule /"/, Str, :pop!
45
+ mixin :esc_str
46
+ rule /[^\\"]+/m, Str
47
+ end
48
+
49
+ state :esc_str do
50
+ rule /\\./m, Str::Escape
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,69 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class IO < RegexLexer
7
+ tag 'io'
8
+ title "Io"
9
+ desc 'The IO programming language (http://iolanguage.com)'
10
+ mimetypes 'text/x-iosrc'
11
+ filenames '*.io'
12
+
13
+ def self.detect?(text)
14
+ return true if text.shebang? 'io'
15
+ end
16
+
17
+ def self.constants
18
+ @constants ||= Set.new %w(nil false true)
19
+ end
20
+
21
+ def self.builtins
22
+ @builtins ||= Set.new %w(
23
+ args call clone do doFile doString else elseif for if list
24
+ method return super then
25
+ )
26
+ end
27
+
28
+ state :root do
29
+ rule /\s+/m, Text
30
+ rule %r(//.*?\n), Comment::Single
31
+ rule %r(#.*?\n), Comment::Single
32
+ rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
33
+ rule %r(/[+]), Comment::Multiline, :nested_comment
34
+
35
+ rule /"(\\\\|\\"|[^"])*"/, Str
36
+
37
+ rule %r(:?:=), Keyword
38
+ rule /[()]/, Punctuation
39
+
40
+ rule %r([-=;,*+><!/|^.%&\[\]{}]), Operator
41
+
42
+ rule /[A-Z]\w*/, Name::Class
43
+
44
+ rule /[a-z_]\w*/ do |m|
45
+ name = m[0]
46
+
47
+ if self.class.constants.include? name
48
+ token Keyword::Constant
49
+ elsif self.class.builtins.include? name
50
+ token Name::Builtin
51
+ else
52
+ token Name
53
+ end
54
+ end
55
+
56
+ rule %r((\d+[.]?\d*|\d*[.]\d+)(e[+-]?[0-9]+)?)i, Num::Float
57
+ rule /\d+/, Num::Integer
58
+
59
+ rule /@@?/, Keyword
60
+ end
61
+
62
+ state :nested_comment do
63
+ rule %r([^/+]+)m, Comment::Multiline
64
+ rule %r(/[+]), Comment::Multiline, :nested_comment
65
+ rule %r([+]/), Comment::Multiline, :pop!
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,67 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ load_lexer 'console.rb'
7
+
8
+ class IRBLexer < ConsoleLexer
9
+ tag 'irb'
10
+ aliases 'pry'
11
+
12
+ desc 'Shell sessions in IRB or Pry'
13
+
14
+ # unlike the superclass, we do not accept any options
15
+ @option_docs = {}
16
+
17
+ def output_lexer
18
+ @output_lexer ||= IRBOutputLexer.new(@options)
19
+ end
20
+
21
+ def lang_lexer
22
+ @lang_lexer ||= Ruby.new(@options)
23
+ end
24
+
25
+ def prompt_regex
26
+ /^.*?(irb|pry).*?[>"*]/
27
+ end
28
+
29
+ def allow_comments?
30
+ true
31
+ end
32
+ end
33
+
34
+ load_lexer 'ruby.rb'
35
+ class IRBOutputLexer < Ruby
36
+ tag 'irb_output'
37
+
38
+ start do
39
+ push :stdout
40
+ end
41
+
42
+ state :has_irb_output do
43
+ rule %r(=>), Punctuation, :pop!
44
+ rule /.+?(\n|$)/, Generic::Output
45
+ end
46
+
47
+ state :irb_error do
48
+ rule /.+?(\n|$)/, Generic::Error
49
+ mixin :has_irb_output
50
+ end
51
+
52
+ state :stdout do
53
+ rule /\w+?(Error|Exception):.+?(\n|$)/, Generic::Error, :irb_error
54
+ mixin :has_irb_output
55
+ end
56
+
57
+ prepend :root do
58
+ rule /#</, Keyword::Type, :irb_object
59
+ end
60
+
61
+ state :irb_object do
62
+ rule />/, Keyword::Type, :pop!
63
+ mixin :root
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,88 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Java < RegexLexer
7
+ title "Java"
8
+ desc "The Java programming language (java.com)"
9
+
10
+ tag 'java'
11
+ filenames '*.java'
12
+ mimetypes 'text/x-java'
13
+
14
+ keywords = %w(
15
+ assert break case catch continue default do else finally for
16
+ if goto instanceof new return switch this throw try while
17
+ )
18
+
19
+ declarations = %w(
20
+ abstract const enum extends final implements native private protected
21
+ public static strictfp super synchronized throws transient volatile
22
+ )
23
+
24
+ types = %w(boolean byte char double float int long short var void)
25
+
26
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
27
+
28
+ state :root do
29
+ rule /[^\S\n]+/, Text
30
+ rule %r(//.*?$), Comment::Single
31
+ rule %r(/\*.*?\*/)m, Comment::Multiline
32
+ # keywords: go before method names to avoid lexing "throw new XYZ"
33
+ # as a method signature
34
+ rule /(?:#{keywords.join('|')})\b/, Keyword
35
+
36
+ rule %r(
37
+ (\s*(?:[a-zA-Z_][a-zA-Z0-9_.\[\]<>]*\s+)+?) # return arguments
38
+ ([a-zA-Z_][a-zA-Z0-9_]*) # method name
39
+ (\s*)(\() # signature start
40
+ )mx do |m|
41
+ # TODO: do this better, this shouldn't need a delegation
42
+ delegate Java, m[1]
43
+ token Name::Function, m[2]
44
+ token Text, m[3]
45
+ token Operator, m[4]
46
+ end
47
+
48
+ rule /@#{id}/, Name::Decorator
49
+ rule /(?:#{declarations.join('|')})\b/, Keyword::Declaration
50
+ rule /(?:#{types.join('|')})\b/, Keyword::Type
51
+ rule /package\b/, Keyword::Namespace
52
+ rule /(?:true|false|null)\b/, Keyword::Constant
53
+ rule /(?:class|interface)\b/, Keyword::Declaration, :class
54
+ rule /import\b/, Keyword::Namespace, :import
55
+ rule /"(\\\\|\\"|[^"])*"/, Str
56
+ rule /'(?:\\.|[^\\]|\\u[0-9a-f]{4})'/, Str::Char
57
+ rule /(\.)(#{id})/ do
58
+ groups Operator, Name::Attribute
59
+ end
60
+
61
+ rule /#{id}:/, Name::Label
62
+ rule /\$?#{id}/, Name
63
+ rule /[~^*!%&\[\](){}<>\|+=:;,.\/?-]/, Operator
64
+
65
+ digit = /[0-9]_+[0-9]|[0-9]/
66
+ bin_digit = /[01]_+[01]|[01]/
67
+ oct_digit = /[0-7]_+[0-7]|[0-7]/
68
+ hex_digit = /[0-9a-f]_+[0-9a-f]|[0-9a-f]/i
69
+ rule /#{digit}+\.#{digit}+([eE]#{digit}+)?[fd]?/, Num::Float
70
+ rule /0b#{bin_digit}+/i, Num::Bin
71
+ rule /0x#{hex_digit}+/i, Num::Hex
72
+ rule /0#{oct_digit}+/, Num::Oct
73
+ rule /#{digit}+L?/, Num::Integer
74
+ rule /\n/, Text
75
+ end
76
+
77
+ state :class do
78
+ rule /\s+/m, Text
79
+ rule id, Name::Class, :pop!
80
+ end
81
+
82
+ state :import do
83
+ rule /\s+/m, Text
84
+ rule /[a-z0-9_.]+\*?/i, Name::Namespace, :pop!
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,283 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ # IMPORTANT NOTICE:
7
+ #
8
+ # Please do not copy this lexer and open a pull request
9
+ # for a new language. It will not get merged, you will
10
+ # be unhappy, and kittens will cry.
11
+ #
12
+ class Javascript < RegexLexer
13
+ title "JavaScript"
14
+ desc "JavaScript, the browser scripting language"
15
+
16
+ tag 'javascript'
17
+ aliases 'js'
18
+ filenames '*.js', '*.mjs'
19
+ mimetypes 'application/javascript', 'application/x-javascript',
20
+ 'text/javascript', 'text/x-javascript'
21
+
22
+ def self.detect?(text)
23
+ return 1 if text.shebang?('node')
24
+ return 1 if text.shebang?('jsc')
25
+ # TODO: rhino, spidermonkey, etc
26
+ end
27
+
28
+ state :multiline_comment do
29
+ rule %r([*]/), Comment::Multiline, :pop!
30
+ rule %r([^*/]+), Comment::Multiline
31
+ rule %r([*/]), Comment::Multiline
32
+ end
33
+
34
+ state :comments_and_whitespace do
35
+ rule /\s+/, Text
36
+ rule /<!--/, Comment # really...?
37
+ rule %r(//.*?$), Comment::Single
38
+ rule %r(/[*]), Comment::Multiline, :multiline_comment
39
+ end
40
+
41
+ state :expr_start do
42
+ mixin :comments_and_whitespace
43
+
44
+ rule %r(/) do
45
+ token Str::Regex
46
+ goto :regex
47
+ end
48
+
49
+ rule /[{]/ do
50
+ token Punctuation
51
+ goto :object
52
+ end
53
+
54
+ rule //, Text, :pop!
55
+ end
56
+
57
+ state :regex do
58
+ rule %r(/) do
59
+ token Str::Regex
60
+ goto :regex_end
61
+ end
62
+
63
+ rule %r([^/]\n), Error, :pop!
64
+
65
+ rule /\n/, Error, :pop!
66
+ rule /\[\^/, Str::Escape, :regex_group
67
+ rule /\[/, Str::Escape, :regex_group
68
+ rule /\\./, Str::Escape
69
+ rule %r{[(][?][:=<!]}, Str::Escape
70
+ rule /[{][\d,]+[}]/, Str::Escape
71
+ rule /[()?]/, Str::Escape
72
+ rule /./, Str::Regex
73
+ end
74
+
75
+ state :regex_end do
76
+ rule /[gim]+/, Str::Regex, :pop!
77
+ rule(//) { pop! }
78
+ end
79
+
80
+ state :regex_group do
81
+ # specially highlight / in a group to indicate that it doesn't
82
+ # close the regex
83
+ rule /\//, Str::Escape
84
+
85
+ rule %r([^/]\n) do
86
+ token Error
87
+ pop! 2
88
+ end
89
+
90
+ rule /\]/, Str::Escape, :pop!
91
+ rule /\\./, Str::Escape
92
+ rule /./, Str::Regex
93
+ end
94
+
95
+ state :bad_regex do
96
+ rule /[^\n]+/, Error, :pop!
97
+ end
98
+
99
+ def self.keywords
100
+ @keywords ||= Set.new %w(
101
+ for in of while do break return continue switch case default
102
+ if else throw try catch finally new delete typeof instanceof
103
+ void this yield import export from as async super this
104
+ )
105
+ end
106
+
107
+ def self.declarations
108
+ @declarations ||= Set.new %w(
109
+ var let const with function class
110
+ extends constructor get set
111
+ )
112
+ end
113
+
114
+ def self.reserved
115
+ @reserved ||= Set.new %w(
116
+ abstract boolean byte char debugger double enum
117
+ final float goto implements int interface
118
+ long native package private protected public short static
119
+ synchronized throws transient volatile
120
+ eval arguments await
121
+ )
122
+ end
123
+
124
+ def self.constants
125
+ @constants ||= Set.new %w(true false null NaN Infinity undefined)
126
+ end
127
+
128
+ def self.builtins
129
+ @builtins ||= %w(
130
+ Array Boolean Date Error Function Math netscape
131
+ Number Object Packages RegExp String sun decodeURI
132
+ decodeURIComponent encodeURI encodeURIComponent
133
+ Error eval isFinite isNaN parseFloat parseInt
134
+ document window navigator self global
135
+ Promise Set Map WeakSet WeakMap Symbol Proxy Reflect
136
+ Int8Array Uint8Array Uint8ClampedArray
137
+ Int16Array Uint16Array Uint16ClampedArray
138
+ Int32Array Uint32Array Uint32ClampedArray
139
+ Float32Array Float64Array DataView ArrayBuffer
140
+ )
141
+ end
142
+
143
+ def self.id_regex
144
+ /[$a-z_][a-z0-9_]*/io
145
+ end
146
+
147
+ id = self.id_regex
148
+
149
+ state :root do
150
+ rule /\A\s*#!.*?\n/m, Comment::Preproc, :statement
151
+ rule %r((?<=\n)(?=\s|/|<!--)), Text, :expr_start
152
+ mixin :comments_and_whitespace
153
+ rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | ===
154
+ | !== )x,
155
+ Operator, :expr_start
156
+ rule %r([-<>+*%&|\^/!=]=?), Operator, :expr_start
157
+ rule /[(\[,]/, Punctuation, :expr_start
158
+ rule /;/, Punctuation, :statement
159
+ rule /[)\].]/, Punctuation
160
+
161
+ rule /`/ do
162
+ token Str::Double
163
+ push :template_string
164
+ end
165
+
166
+ rule /[?]/ do
167
+ token Punctuation
168
+ push :ternary
169
+ push :expr_start
170
+ end
171
+
172
+ rule /(\@)(\w+)?/ do
173
+ groups Punctuation, Name::Decorator
174
+ push :expr_start
175
+ end
176
+
177
+ rule /[{}]/, Punctuation, :statement
178
+
179
+ rule id do |m|
180
+ if self.class.keywords.include? m[0]
181
+ token Keyword
182
+ push :expr_start
183
+ elsif self.class.declarations.include? m[0]
184
+ token Keyword::Declaration
185
+ push :expr_start
186
+ elsif self.class.reserved.include? m[0]
187
+ token Keyword::Reserved
188
+ elsif self.class.constants.include? m[0]
189
+ token Keyword::Constant
190
+ elsif self.class.builtins.include? m[0]
191
+ token Name::Builtin
192
+ else
193
+ token Name::Other
194
+ end
195
+ end
196
+
197
+ rule /[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?/, Num::Float
198
+ rule /0x[0-9a-fA-F]+/i, Num::Hex
199
+ rule /0o[0-7][0-7_]*/i, Num::Oct
200
+ rule /0b[01][01_]*/i, Num::Bin
201
+ rule /[0-9]+/, Num::Integer
202
+
203
+ rule /"/, Str::Double, :dq
204
+ rule /'/, Str::Single, :sq
205
+ rule /:/, Punctuation
206
+ end
207
+
208
+ state :dq do
209
+ rule /[^\\"]+/, Str::Double
210
+ rule /\\n/, Str::Escape
211
+ rule /\\"/, Str::Escape
212
+ rule /"/, Str::Double, :pop!
213
+ end
214
+
215
+ state :sq do
216
+ rule /[^\\']+/, Str::Single
217
+ rule /\\'/, Str::Escape
218
+ rule /'/, Str::Single, :pop!
219
+ end
220
+
221
+ # braced parts that aren't object literals
222
+ state :statement do
223
+ rule /case\b/ do
224
+ token Keyword
225
+ goto :expr_start
226
+ end
227
+
228
+ rule /(#{id})(\s*)(:)/ do
229
+ groups Name::Label, Text, Punctuation
230
+ end
231
+
232
+ rule /[{}]/, Punctuation
233
+
234
+ mixin :expr_start
235
+ end
236
+
237
+ # object literals
238
+ state :object do
239
+ mixin :comments_and_whitespace
240
+
241
+ rule /[{]/ do
242
+ token Punctuation
243
+ push
244
+ end
245
+
246
+ rule /[}]/ do
247
+ token Punctuation
248
+ goto :statement
249
+ end
250
+
251
+ rule /(#{id})(\s*)(:)/ do
252
+ groups Name::Attribute, Text, Punctuation
253
+ push :expr_start
254
+ end
255
+
256
+ rule /:/, Punctuation
257
+ mixin :root
258
+ end
259
+
260
+ # ternary expressions, where <id>: is not a label!
261
+ state :ternary do
262
+ rule /:/ do
263
+ token Punctuation
264
+ goto :expr_start
265
+ end
266
+
267
+ mixin :root
268
+ end
269
+
270
+ # template strings
271
+ state :template_string do
272
+ rule /\${/, Punctuation, :template_string_expr
273
+ rule /`/, Str::Double, :pop!
274
+ rule /(\\\\|\\[\$`]|[^\$`]|\$(?!{))*/, Str::Double
275
+ end
276
+
277
+ state :template_string_expr do
278
+ rule /}/, Punctuation, :pop!
279
+ mixin :root
280
+ end
281
+ end
282
+ end
283
+ end
@@ -0,0 +1,138 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Jinja < TemplateLexer
7
+ title "Jinja"
8
+ desc "Django/Jinja template engine (jinja.pocoo.org)"
9
+
10
+ tag 'jinja'
11
+ aliases 'django'
12
+
13
+ mimetypes 'application/x-django-templating', 'application/x-jinja',
14
+ 'text/html+django', 'text/html+jinja'
15
+
16
+ def self.keywords
17
+ @@keywords ||= %w(as context do else extends from ignore missing
18
+ import include reversed recursive scoped
19
+ autoescape endautoescape block endblock call endcall
20
+ filter endfilter for endfor if endif macro endmacro
21
+ set endset trans endtrans with endwith without)
22
+ end
23
+
24
+ def self.tests
25
+ @@tests ||= %w(callable defined divisibleby equalto escaped even iterable
26
+ lower mapping none number odd sameas sequence string
27
+ undefined upper)
28
+ end
29
+
30
+ def self.pseudo_keywords
31
+ @@pseudo_keywords ||= %w(true false none True False None)
32
+ end
33
+
34
+ def self.word_operators
35
+ @@word_operators ||= %w(is in and or not)
36
+ end
37
+
38
+ state :root do
39
+ # Comments
40
+ rule /{#/, Comment, :comment
41
+
42
+ # Statements
43
+ rule /\{\%/ do
44
+ token Comment::Preproc
45
+ push :statement
46
+ end
47
+
48
+ # Expressions
49
+ rule /\{\{/ do
50
+ token Comment::Preproc
51
+ push :expression
52
+ end
53
+
54
+ rule(/(.+?)(?=\\|{{|{%|{#)/m) { delegate parent }
55
+ rule(/.+/m) { delegate parent }
56
+ end
57
+
58
+ state :filter do
59
+ # Filters are called like variable|foo(arg1, ...)
60
+ rule /(\|)(\w+)/ do
61
+ groups Operator, Name::Function
62
+ end
63
+ end
64
+
65
+ state :function do
66
+ rule /(\w+)(\()/ do
67
+ groups Name::Function, Punctuation
68
+ end
69
+ end
70
+
71
+ state :text do
72
+ rule /\s+/m, Text
73
+ end
74
+
75
+ state :literal do
76
+ # Strings
77
+ rule /"(\\.|.)*?"/, Str::Double
78
+ rule /'(\\.|.)*?'/, Str::Single
79
+
80
+ # Numbers
81
+ rule /\d+(?=}\s)/, Num
82
+
83
+ # Arithmetic operators (+, -, *, **, //, /)
84
+ # TODO : implement modulo (%)
85
+ rule /(\+|\-|\*|\/\/?|\*\*?|=)/, Operator
86
+
87
+ # Comparisons operators (<=, <, >=, >, ==, ===, !=)
88
+ rule /(<=?|>=?|===?|!=)/, Operator
89
+
90
+ # Punctuation (the comma, [], ())
91
+ rule /,/, Punctuation
92
+ rule /\[/, Punctuation
93
+ rule /\]/, Punctuation
94
+ rule /\(/, Punctuation
95
+ rule /\)/, Punctuation
96
+ end
97
+
98
+ state :comment do
99
+ rule(/[^{#]+/m) { token Comment }
100
+ rule(/#}/) { token Comment; pop! }
101
+ end
102
+
103
+ state :expression do
104
+ rule /\w+\.?/m, Name::Variable
105
+
106
+ mixin :filter
107
+ mixin :function
108
+ mixin :literal
109
+ mixin :text
110
+
111
+ rule /%}|}}/, Comment::Preproc, :pop!
112
+ end
113
+
114
+ state :statement do
115
+ rule /(\w+\.?)/ do |m|
116
+ if self.class.keywords.include?(m[0])
117
+ groups Keyword
118
+ elsif self.class.pseudo_keywords.include?(m[0])
119
+ groups Keyword::Pseudo
120
+ elsif self.class.word_operators.include?(m[0])
121
+ groups Operator::Word
122
+ elsif self.class.tests.include?(m[0])
123
+ groups Name::Builtin
124
+ else
125
+ groups Name::Variable
126
+ end
127
+ end
128
+
129
+ mixin :filter
130
+ mixin :function
131
+ mixin :literal
132
+ mixin :text
133
+
134
+ rule /\%\}/, Comment::Preproc, :pop!
135
+ end
136
+ end
137
+ end
138
+ end