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,126 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Lua < RegexLexer
7
+ title "Lua"
8
+ desc "Lua (http://www.lua.org)"
9
+ tag 'lua'
10
+ filenames '*.lua', '*.wlua'
11
+
12
+ mimetypes 'text/x-lua', 'application/x-lua'
13
+
14
+ option :function_highlighting, 'Whether to highlight builtin functions (default: true)'
15
+ option :disabled_modules, 'builtin modules to disable'
16
+
17
+ def initialize(opts={})
18
+ @function_highlighting = opts.delete(:function_highlighting) { true }
19
+ @disabled_modules = opts.delete(:disabled_modules) { [] }
20
+ super(opts)
21
+ end
22
+
23
+ def self.detect?(text)
24
+ return true if text.shebang? 'lua'
25
+ end
26
+
27
+ def self.builtins
28
+ load Pathname.new(__FILE__).dirname.join('lua/builtins.rb')
29
+ self.builtins
30
+ end
31
+
32
+ def builtins
33
+ return [] unless @function_highlighting
34
+
35
+ @builtins ||= Set.new.tap do |builtins|
36
+ self.class.builtins.each do |mod, fns|
37
+ next if @disabled_modules.include? mod
38
+ builtins.merge(fns)
39
+ end
40
+ end
41
+ end
42
+
43
+ state :root do
44
+ # lua allows a file to start with a shebang
45
+ rule %r(#!(.*?)$), Comment::Preproc
46
+ rule //, Text, :base
47
+ end
48
+
49
+ state :base do
50
+ rule %r(--\[(=*)\[.*?\]\1\])m, Comment::Multiline
51
+ rule %r(--.*$), Comment::Single
52
+
53
+ rule %r((?i)(\d*\.\d+|\d+\.\d*)(e[+-]?\d+)?'), Num::Float
54
+ rule %r((?i)\d+e[+-]?\d+), Num::Float
55
+ rule %r((?i)0x[0-9a-f]*), Num::Hex
56
+ rule %r(\d+), Num::Integer
57
+
58
+ rule %r(\n), Text
59
+ rule %r([^\S\n]), Text
60
+ # multiline strings
61
+ rule %r(\[(=*)\[.*?\]\1\])m, Str
62
+
63
+ rule %r((==|~=|<=|>=|\.\.\.|\.\.|[=+\-*/%^<>#])), Operator
64
+ rule %r([\[\]\{\}\(\)\.,:;]), Punctuation
65
+ rule %r((and|or|not)\b), Operator::Word
66
+
67
+ rule %r((break|do|else|elseif|end|for|if|in|repeat|return|then|until|while)\b), Keyword
68
+ rule %r((local)\b), Keyword::Declaration
69
+ rule %r((true|false|nil)\b), Keyword::Constant
70
+
71
+ rule %r((function)\b), Keyword, :function_name
72
+
73
+ rule %r([A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?) do |m|
74
+ name = m[0]
75
+ if self.builtins.include?(name)
76
+ token Name::Builtin
77
+ elsif name =~ /\./
78
+ a, b = name.split('.', 2)
79
+ token Name, a
80
+ token Punctuation, '.'
81
+ token Name, b
82
+ else
83
+ token Name
84
+ end
85
+ end
86
+
87
+ rule %r('), Str::Single, :escape_sqs
88
+ rule %r("), Str::Double, :escape_dqs
89
+ end
90
+
91
+ state :function_name do
92
+ rule /\s+/, Text
93
+ rule %r((?:([A-Za-z_][A-Za-z0-9_]*)(\.))?([A-Za-z_][A-Za-z0-9_]*)) do
94
+ groups Name::Class, Punctuation, Name::Function
95
+ pop!
96
+ end
97
+ # inline function
98
+ rule %r(\(), Punctuation, :pop!
99
+ end
100
+
101
+ state :escape_sqs do
102
+ mixin :string_escape
103
+ mixin :sqs
104
+ end
105
+
106
+ state :escape_dqs do
107
+ mixin :string_escape
108
+ mixin :dqs
109
+ end
110
+
111
+ state :string_escape do
112
+ rule %r(\\([abfnrtv\\"']|\d{1,3})), Str::Escape
113
+ end
114
+
115
+ state :sqs do
116
+ rule %r('), Str::Single, :pop!
117
+ rule %r([^']+), Str::Single
118
+ end
119
+
120
+ state :dqs do
121
+ rule %r("), Str::Double, :pop!
122
+ rule %r([^"]+), Str::Double
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,144 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class M68k < RegexLexer
7
+ tag 'm68k'
8
+
9
+ title "M68k"
10
+ desc "Motorola 68k Assembler"
11
+
12
+ ws = %r((?:\s|;.*?\n/)+)
13
+ id = /[a-zA-Z_][a-zA-Z0-9_]*/
14
+
15
+ def self.keywords
16
+ @keywords ||= Set.new %w(
17
+ abcd add adda addi addq addx and andi asl asr
18
+
19
+ bcc bcs beq bge bgt bhi ble bls blt bmi bne bpl bvc bvs bhs blo
20
+ bchg bclr bfchg bfclr bfests bfextu bfffo bfins bfset bftst bkpt bra bse bsr btst
21
+
22
+ callm cas cas2 chk chk2 clr cmp cmpa cmpi cmpm cmp2
23
+
24
+ dbcc dbcs dbeq dbge dbgt dbhi dble dbls dblt dbmi dbne dbpl dbvc dbvs dbhs dblo
25
+ dbra dbf dbt divs divsl divu divul
26
+
27
+ eor eori exg ext extb
28
+
29
+ illegal jmp jsr lea link lsl lsr
30
+
31
+ move movea move16 movem movep moveq muls mulu
32
+
33
+ nbcd neg negx nop not or ori
34
+
35
+ pack pea rol ror roxl roxr rtd rtm rtr rts
36
+
37
+ sbcd
38
+
39
+ seq sne spl smi svc svs st sf sge sgt sle slt scc shi sls scs shs slo
40
+ sub suba subi subq subx swap
41
+
42
+ tas trap trapcc TODO trapv tst
43
+
44
+ unlk unpk eori
45
+ )
46
+ end
47
+
48
+ def self.keywords_type
49
+ @keywords_type ||= Set.new %w(
50
+ dc ds dcb
51
+ )
52
+ end
53
+
54
+ def self.reserved
55
+ @reserved ||= Set.new %w(
56
+ include incdir incbin end endf endfunc endmain endproc fpu func machine main mmu opword proc set opt section
57
+ rept endr
58
+ ifeq ifne ifgt ifge iflt ifle iif ifd ifnd ifc ifnc elseif else endc
59
+ even cnop fail machine
60
+ output radix __G2 __LK
61
+ list nolist plen llen ttl subttl spc page listchar format
62
+ equ equenv equr set reg
63
+ rsreset rsset offset
64
+ cargs
65
+ fequ.s fequ.d fequ.x fequ.p fequ.w fequ.l fopt
66
+ macro endm mexit narg
67
+ )
68
+ end
69
+
70
+ def self.builtins
71
+ @builtins ||=Set.new %w(
72
+ d0 d1 d2 d3 d4 d5 d6 d7
73
+ a0 a1 a2 a3 a4 a5 a6 a7 a7'
74
+ pc usp ssp ccr
75
+ )
76
+ end
77
+
78
+ start { push :expr_bol }
79
+
80
+ state :expr_bol do
81
+ mixin :inline_whitespace
82
+ rule(//) { pop! }
83
+ end
84
+
85
+ state :inline_whitespace do
86
+ rule /[\s\t\r]+/, Text
87
+ end
88
+
89
+ state :whitespace do
90
+ rule /\n+/m, Text, :expr_bol
91
+ rule %r(^\*(\\.|.)*?\n), Comment::Single, :expr_bol
92
+ rule %r(;(\\.|.)*?\n), Comment::Single, :expr_bol
93
+ mixin :inline_whitespace
94
+ end
95
+
96
+ state :root do
97
+ rule(//) { push :statements }
98
+ end
99
+
100
+ state :statements do
101
+ mixin :whitespace
102
+ rule /"/, Str, :string
103
+ rule /#/, Name::Decorator
104
+ rule /^\.?[a-zA-Z0-9_]+:?/, Name::Label
105
+ rule /\.[bswl]\s/i, Name::Decorator
106
+ rule %r('(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
107
+ rule /\$[0-9a-f]+/i, Num::Hex
108
+ rule /@[0-8]+/i, Num::Oct
109
+ rule /%[01]+/i, Num::Bin
110
+ rule /\d+/i, Num::Integer
111
+ rule %r([*~&+=\|?:<>/-]), Operator
112
+ rule /\\./, Comment::Preproc
113
+ rule /[(),.]/, Punctuation
114
+ rule /\[[a-zA-Z0-9]*\]/, Punctuation
115
+
116
+ rule id do |m|
117
+ name = m[0]
118
+
119
+ if self.class.keywords.include? name.downcase
120
+ token Keyword
121
+ elsif self.class.keywords_type.include? name.downcase
122
+ token Keyword::Type
123
+ elsif self.class.reserved.include? name.downcase
124
+ token Keyword::Reserved
125
+ elsif self.class.builtins.include? name.downcase
126
+ token Name::Builtin
127
+ elsif name =~ /[a-zA-Z0-9]+/
128
+ token Name::Variable
129
+ else
130
+ token Name
131
+ end
132
+ end
133
+ end
134
+
135
+ state :string do
136
+ rule /"/, Str, :pop!
137
+ rule /\\([\\abfnrtv"']|x[a-fA-F0-9]{2,4}|[0-7]{1,3})/, Str::Escape
138
+ rule /[^\\"\n]+/, Str
139
+ rule /\\\n/, Str
140
+ rule /\\/, Str # stray backslash
141
+ end
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,113 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Make < RegexLexer
7
+ title "Make"
8
+ desc "Makefile syntax"
9
+ tag 'make'
10
+ aliases 'makefile', 'mf', 'gnumake', 'bsdmake'
11
+ filenames '*.make', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile'
12
+ mimetypes 'text/x-makefile'
13
+
14
+ bsd_special = %w(
15
+ include undef error warning if else elif endif for endfor
16
+ )
17
+
18
+ gnu_special = %w(
19
+ ifeq ifneq ifdef ifndef else endif include -include define endef :
20
+ )
21
+
22
+ line = /(?:\\.|\\\n|[^\\\n])*/m
23
+
24
+ def initialize(opts={})
25
+ super
26
+ @shell = Shell.new(opts)
27
+ end
28
+
29
+ start { @shell.reset! }
30
+
31
+ state :root do
32
+ rule /\s+/, Text
33
+
34
+ rule /#.*?\n/, Comment
35
+
36
+ rule /(export)(\s+)(?=[a-zA-Z0-9_\${}\t -]+\n)/ do
37
+ groups Keyword, Text
38
+ push :export
39
+ end
40
+
41
+ rule /export\s+/, Keyword
42
+
43
+ # assignment
44
+ rule /([a-zA-Z0-9_${}.-]+)(\s*)([!?:+]?=)/m do |m|
45
+ token Name::Variable, m[1]
46
+ token Text, m[2]
47
+ token Operator, m[3]
48
+ push :shell_line
49
+ end
50
+
51
+ rule /"(\\\\|\\.|[^"\\])*"/, Str::Double
52
+ rule /'(\\\\|\\.|[^'\\])*'/, Str::Single
53
+ rule /([^\n:]+)(:+)([ \t]*)/ do
54
+ groups Name::Label, Operator, Text
55
+ push :block_header
56
+ end
57
+ end
58
+
59
+ state :export do
60
+ rule /[\w\${}-]/, Name::Variable
61
+ rule /\n/, Text, :pop!
62
+ rule /\s+/, Text
63
+ end
64
+
65
+ state :block_header do
66
+ rule /[^,\\\n#]+/, Name::Function
67
+ rule /,/, Punctuation
68
+ rule /#.*?/, Comment
69
+ rule /\\\n/, Text
70
+ rule /\\./, Text
71
+ rule /\n/ do
72
+ token Text
73
+ goto :block_body
74
+ end
75
+ end
76
+
77
+ state :block_body do
78
+ rule /(\t[\t ]*)([@-]?)/ do |m|
79
+ groups Text, Punctuation
80
+ push :shell_line
81
+ end
82
+
83
+ rule(//) { @shell.reset!; pop! }
84
+ end
85
+
86
+ state :shell do
87
+ # macro interpolation
88
+ rule /\$\(\s*[a-z_]\w*\s*\)/i, Name::Variable
89
+ # $(shell ...)
90
+ rule /(\$\()(\s*)(shell)(\s+)/m do
91
+ groups Name::Function, Text, Name::Builtin, Text
92
+ push :shell_expr
93
+ end
94
+
95
+ rule(/\\./m) { delegate @shell }
96
+ stop = /\$\(|\(|\)|\\|$/
97
+ rule(/.+?(?=#{stop})/m) { delegate @shell }
98
+ rule(stop) { delegate @shell }
99
+ end
100
+
101
+ state :shell_expr do
102
+ rule(/\(/) { delegate @shell; push }
103
+ rule /\)/, Name::Variable, :pop!
104
+ mixin :shell
105
+ end
106
+
107
+ state :shell_line do
108
+ rule /\n/, Text, :pop!
109
+ mixin :shell
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,155 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class Markdown < RegexLexer
7
+ title "Markdown"
8
+ desc "Markdown, a light-weight markup language for authors"
9
+
10
+ tag 'markdown'
11
+ aliases 'md', 'mkd'
12
+ filenames '*.markdown', '*.md', '*.mkd'
13
+ mimetypes 'text/x-markdown'
14
+
15
+ def html
16
+ @html ||= HTML.new(options)
17
+ end
18
+
19
+ start { html.reset! }
20
+
21
+ edot = /\\.|[^\\\n]/
22
+
23
+ state :root do
24
+ # YAML frontmatter
25
+ rule(/\A(---\s*\n.*?\n?)^(---\s*$\n?)/m) { delegate YAML }
26
+
27
+ rule /\\./, Str::Escape
28
+
29
+ rule /^[\S ]+\n(?:---*)\n/, Generic::Heading
30
+ rule /^[\S ]+\n(?:===*)\n/, Generic::Subheading
31
+
32
+ rule /^#(?=[^#]).*?$/, Generic::Heading
33
+ rule /^##*.*?$/, Generic::Subheading
34
+
35
+ rule /(\n[ \t]*)(```|~~~)(.*?)(\n.*?\n)(\2)/m do |m|
36
+ sublexer = Lexer.find_fancy(m[3].strip, m[4], @options)
37
+ sublexer ||= PlainText.new(@options.merge(:token => Str::Backtick))
38
+ sublexer.reset!
39
+
40
+ token Text, m[1]
41
+ token Punctuation, m[2]
42
+ token Name::Label, m[3]
43
+ delegate sublexer, m[4]
44
+ token Punctuation, m[5]
45
+ end
46
+
47
+ rule /\n\n(( |\t).*?\n|\n)+/, Str::Backtick
48
+
49
+ rule /(`+)(?:#{edot}|\n)+?\1/, Str::Backtick
50
+
51
+ # various uses of * are in order of precedence
52
+
53
+ # line breaks
54
+ rule /^(\s*[*]){3,}\s*$/, Punctuation
55
+ rule /^(\s*[-]){3,}\s*$/, Punctuation
56
+
57
+ # bulleted lists
58
+ rule /^\s*[*+-](?=\s)/, Punctuation
59
+
60
+ # numbered lists
61
+ rule /^\s*\d+\./, Punctuation
62
+
63
+ # blockquotes
64
+ rule /^\s*>.*?$/, Generic::Traceback
65
+
66
+ # link references
67
+ # [foo]: bar "baz"
68
+ rule %r(^
69
+ (\s*) # leading whitespace
70
+ (\[) (#{edot}+?) (\]) # the reference
71
+ (\s*) (:) # colon
72
+ )x do
73
+ groups Text, Punctuation, Str::Symbol, Punctuation, Text, Punctuation
74
+
75
+ push :title
76
+ push :url
77
+ end
78
+
79
+ # links and images
80
+ rule /(!?\[)(#{edot}*?)(\])/ do
81
+ groups Punctuation, Name::Variable, Punctuation
82
+ push :link
83
+ end
84
+
85
+ rule /[*][*]#{edot}*?[*][*]/, Generic::Strong
86
+ rule /__#{edot}*?__/, Generic::Strong
87
+
88
+ rule /[*]#{edot}*?[*]/, Generic::Emph
89
+ rule /_#{edot}*?_/, Generic::Emph
90
+
91
+ # Automatic links
92
+ rule /<.*?@.+[.].+>/, Name::Variable
93
+ rule %r[<(https?|mailto|ftp)://#{edot}*?>], Name::Variable
94
+
95
+
96
+ rule /[^\\`\[*\n&<]+/, Text
97
+
98
+ # inline html
99
+ rule(/&\S*;/) { delegate html }
100
+ rule(/<#{edot}*?>/) { delegate html }
101
+ rule /[&<]/, Text
102
+
103
+ rule /\n/, Text
104
+ end
105
+
106
+ state :link do
107
+ rule /(\[)(#{edot}*?)(\])/ do
108
+ groups Punctuation, Str::Symbol, Punctuation
109
+ pop!
110
+ end
111
+
112
+ rule /[(]/ do
113
+ token Punctuation
114
+ push :inline_title
115
+ push :inline_url
116
+ end
117
+
118
+ rule /[ \t]+/, Text
119
+
120
+ rule(//) { pop! }
121
+ end
122
+
123
+ state :url do
124
+ rule /[ \t]+/, Text
125
+
126
+ # the url
127
+ rule /(<)(#{edot}*?)(>)/ do
128
+ groups Name::Tag, Str::Other, Name::Tag
129
+ pop!
130
+ end
131
+
132
+ rule /\S+/, Str::Other, :pop!
133
+ end
134
+
135
+ state :title do
136
+ rule /"#{edot}*?"/, Name::Namespace
137
+ rule /'#{edot}*?'/, Name::Namespace
138
+ rule /[(]#{edot}*?[)]/, Name::Namespace
139
+ rule /\s*(?=["'()])/, Text
140
+ rule(//) { pop! }
141
+ end
142
+
143
+ state :inline_title do
144
+ rule /[)]/, Punctuation, :pop!
145
+ mixin :title
146
+ end
147
+
148
+ state :inline_url do
149
+ rule /[^<\s)]+/, Str::Other, :pop!
150
+ rule /\s+/m, Text
151
+ mixin :url
152
+ end
153
+ end
154
+ end
155
+ end