rougegal 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
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,22 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # automatically generated by `rake builtins:lua`
3
+ module Rouge
4
+ module Lexers
5
+ class Lua
6
+ def self.builtins
7
+ @builtins ||= {}.tap do |b|
8
+ b["basic"] = Set.new %w(_G _VERSION assert collectgarbage dofile error getmetatable ipairs load loadfile next pairs pcall print rawequal rawget rawlen rawset select setmetatable tonumber tostring type xpcall file:close file:flush file:lines file:read file:seek file:setvbuf file:write LUA_CPATH LUA_CPATH_5_2 LUA_INIT LUA_INIT_5_2 LUA_PATH LUA_PATH_5_2 luaopen_base luaopen_bit32 luaopen_coroutine luaopen_debug luaopen_io luaopen_math luaopen_os luaopen_package luaopen_string luaopen_table LUA_ERRERR LUA_ERRFILE LUA_ERRGCMM LUA_ERRMEM LUA_ERRRUN LUA_ERRSYNTAX LUA_HOOKCALL LUA_HOOKCOUNT LUA_HOOKLINE LUA_HOOKRET LUA_HOOKTAILCALL LUA_MASKCALL LUA_MASKCOUNT LUA_MASKLINE LUA_MASKRET LUA_MINSTACK LUA_MULTRET LUA_NOREF LUA_OK LUA_OPADD LUA_OPDIV LUA_OPEQ LUA_OPLE LUA_OPLT LUA_OPMOD LUA_OPMUL LUA_OPPOW LUA_OPSUB LUA_OPUNM LUA_REFNIL LUA_REGISTRYINDEX LUA_RIDX_GLOBALS LUA_RIDX_MAINTHREAD LUA_TBOOLEAN LUA_TFUNCTION LUA_TLIGHTUSERDATA LUA_TNIL LUA_TNONE LUA_TNUMBER LUA_TSTRING LUA_TTABLE LUA_TTHREAD LUA_TUSERDATA LUA_USE_APICHECK LUA_YIELD LUAL_BUFFERSIZE)
9
+ b["modules"] = Set.new %w(require package.config package.cpath package.loaded package.loadlib package.path package.preload package.searchers package.searchpath)
10
+ b["bit32"] = Set.new %w(bit32.arshift bit32.band bit32.bnot bit32.bor bit32.btest bit32.bxor bit32.extract bit32.lrotate bit32.lshift bit32.replace bit32.rrotate bit32.rshift)
11
+ b["coroutine"] = Set.new %w(coroutine.create coroutine.resume coroutine.running coroutine.status coroutine.wrap coroutine.yield)
12
+ b["debug"] = Set.new %w(debug.debug debug.getuservalue debug.gethook debug.getinfo debug.getlocal debug.getmetatable debug.getregistry debug.getupvalue debug.setuservalue debug.sethook debug.setlocal debug.setmetatable debug.setupvalue debug.traceback debug.upvalueid debug.upvaluejoin)
13
+ b["io"] = Set.new %w(io.close io.flush io.input io.lines io.open io.output io.popen io.read io.stderr io.stdin io.stdout io.tmpfile io.type io.write)
14
+ b["math"] = Set.new %w(math.abs math.acos math.asin math.atan math.atan2 math.ceil math.cos math.cosh math.deg math.exp math.floor math.fmod math.frexp math.huge math.ldexp math.log math.max math.min math.modf math.pi math.pow math.rad math.random math.randomseed math.sin math.sinh math.sqrt math.tan math.tanh)
15
+ b["os"] = Set.new %w(os.clock os.date os.difftime os.execute os.exit os.getenv os.remove os.rename os.setlocale os.time os.tmpname)
16
+ b["string"] = Set.new %w(string.byte string.char string.dump string.find string.format string.gmatch string.gsub string.len string.lower string.match string.rep string.reverse string.sub string.upper)
17
+ b["table"] = Set.new %w(table.concat table.insert table.pack table.remove table.sort table.unpack)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,116 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Make < RegexLexer
6
+ title "Make"
7
+ desc "Makefile syntax"
8
+ tag 'make'
9
+ aliases 'makefile', 'mf', 'gnumake', 'bsdmake'
10
+ filenames '*.make', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile'
11
+ mimetypes 'text/x-makefile'
12
+
13
+ def self.analyze_text(text)
14
+ return 0.6 if text =~ /^\.PHONY:/
15
+ end
16
+
17
+ bsd_special = %w(
18
+ include undef error warning if else elif endif for endfor
19
+ )
20
+
21
+ gnu_special = %w(
22
+ ifeq ifneq ifdef ifndef else endif include -include define endef :
23
+ )
24
+
25
+ line = /(?:\\.|\\\n|[^\\\n])*/m
26
+
27
+ def initialize(opts={})
28
+ super
29
+ @shell = Shell.new(opts)
30
+ end
31
+
32
+ start { @shell.reset! }
33
+
34
+ state :root do
35
+ rule /\s+/, Text
36
+
37
+ rule /#.*?\n/, Comment
38
+
39
+ rule /(export)(\s+)(?=[a-zA-Z0-9_\${}\t -]+\n)/ do
40
+ groups Keyword, Text
41
+ push :export
42
+ end
43
+
44
+ rule /export\s+/, Keyword
45
+
46
+ # assignment
47
+ rule /([a-zA-Z0-9_${}.-]+)(\s*)([!?:+]?=)/m do |m|
48
+ token Name::Variable, m[1]
49
+ token Text, m[2]
50
+ token Operator, m[3]
51
+ push :shell_line
52
+ end
53
+
54
+ rule /"(\\\\|\\.|[^"\\])*"/, Str::Double
55
+ rule /'(\\\\|\\.|[^'\\])*'/, Str::Single
56
+ rule /([^\n:]+)(:+)([ \t]*)/ do
57
+ groups Name::Label, Operator, Text
58
+ push :block_header
59
+ end
60
+ end
61
+
62
+ state :export do
63
+ rule /[\w\${}-]/, Name::Variable
64
+ rule /\n/, Text, :pop!
65
+ rule /\s+/, Text
66
+ end
67
+
68
+ state :block_header do
69
+ rule /[^,\\\n#]+/, Name::Function
70
+ rule /,/, Punctuation
71
+ rule /#.*?/, Comment
72
+ rule /\\\n/, Text
73
+ rule /\\./, Text
74
+ rule /\n/ do
75
+ token Text
76
+ goto :block_body
77
+ end
78
+ end
79
+
80
+ state :block_body do
81
+ rule /(\t[\t ]*)([@-]?)/ do |m|
82
+ groups Text, Punctuation
83
+ push :shell_line
84
+ end
85
+
86
+ rule(//) { @shell.reset!; pop! }
87
+ end
88
+
89
+ state :shell do
90
+ # macro interpolation
91
+ rule /\$\(\s*[a-z_]\w*\s*\)/i, Name::Variable
92
+ # $(shell ...)
93
+ rule /(\$\()(\s*)(shell)(\s+)/m do
94
+ groups Name::Function, Text, Name::Builtin, Text
95
+ push :shell_expr
96
+ end
97
+
98
+ rule(/\\./m) { delegate @shell }
99
+ stop = /\$\(|\(|\)|\\|$/
100
+ rule(/.+?(?=#{stop})/m) { delegate @shell }
101
+ rule(stop) { delegate @shell }
102
+ end
103
+
104
+ state :shell_expr do
105
+ rule(/\(/) { delegate @shell; push }
106
+ rule /\)/, Name::Variable, :pop!
107
+ mixin :shell
108
+ end
109
+
110
+ state :shell_line do
111
+ rule /\n/, Text, :pop!
112
+ mixin :shell
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,154 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Markdown < RegexLexer
6
+ title "Markdown"
7
+ desc "Markdown, a light-weight markup language for authors"
8
+
9
+ tag 'markdown'
10
+ aliases 'md', 'mkd'
11
+ filenames '*.markdown', '*.md', '*.mkd'
12
+ mimetypes 'text/x-markdown'
13
+
14
+ def html
15
+ @html ||= HTML.new(options)
16
+ end
17
+
18
+ start { html.reset! }
19
+
20
+ edot = /\\.|[^\\\n]/
21
+
22
+ state :root do
23
+ # YAML frontmatter
24
+ rule(/\A(---\s*\n.*?\n?)^(---\s*$\n?)/m) { delegate YAML }
25
+
26
+ rule /\\./, Str::Escape
27
+
28
+ rule /^[\S ]+\n(?:---*)\n/, Generic::Heading
29
+ rule /^[\S ]+\n(?:===*)\n/, Generic::Subheading
30
+
31
+ rule /^#(?=[^#]).*?$/, Generic::Heading
32
+ rule /^##*.*?$/, Generic::Subheading
33
+
34
+ rule /(\n[ \t]*)(```|~~~)(.*?)(\n.*?\n)(\2)/m do |m|
35
+ sublexer = Lexer.find_fancy(m[3].strip, m[4], @options)
36
+ sublexer ||= PlainText.new(@options.merge(:token => Str::Backtick))
37
+ sublexer.reset!
38
+
39
+ token Text, m[1]
40
+ token Punctuation, m[2]
41
+ token Name::Label, m[3]
42
+ delegate sublexer, m[4]
43
+ token Punctuation, m[5]
44
+ end
45
+
46
+ rule /\n\n(( |\t).*?\n|\n)+/, Str::Backtick
47
+
48
+ rule /(`+)(?:#{edot}|\n)+?\1/, Str::Backtick
49
+
50
+ # various uses of * are in order of precedence
51
+
52
+ # line breaks
53
+ rule /^(\s*[*]){3,}\s*$/, Punctuation
54
+ rule /^(\s*[-]){3,}\s*$/, Punctuation
55
+
56
+ # bulleted lists
57
+ rule /^\s*[*+-](?=\s)/, Punctuation
58
+
59
+ # numbered lists
60
+ rule /^\s*\d+\./, Punctuation
61
+
62
+ # blockquotes
63
+ rule /^\s*>.*?$/, Generic::Traceback
64
+
65
+ # link references
66
+ # [foo]: bar "baz"
67
+ rule %r(^
68
+ (\s*) # leading whitespace
69
+ (\[) (#{edot}+?) (\]) # the reference
70
+ (\s*) (:) # colon
71
+ )x do
72
+ groups Text, Punctuation, Str::Symbol, Punctuation, Text, Punctuation
73
+
74
+ push :title
75
+ push :url
76
+ end
77
+
78
+ # links and images
79
+ rule /(!?\[)(#{edot}+?)(\])/ do
80
+ groups Punctuation, Name::Variable, Punctuation
81
+ push :link
82
+ end
83
+
84
+ rule /[*][*]#{edot}*?[*][*]/, Generic::Strong
85
+ rule /__#{edot}*?__/, Generic::Strong
86
+
87
+ rule /[*]#{edot}*?[*]/, Generic::Emph
88
+ rule /_#{edot}*?_/, Generic::Emph
89
+
90
+ # Automatic links
91
+ rule /<.*?@.+[.].+>/, Name::Variable
92
+ rule %r[<(https?|mailto|ftp)://#{edot}*?>], Name::Variable
93
+
94
+
95
+ rule /[^\\`\[*\n&<]+/, Text
96
+
97
+ # inline html
98
+ rule(/&\S*;/) { delegate html }
99
+ rule(/<#{edot}*?>/) { delegate html }
100
+ rule /[&<]/, Text
101
+
102
+ rule /\n/, Text
103
+ end
104
+
105
+ state :link do
106
+ rule /(\[)(#{edot}*?)(\])/ do
107
+ groups Punctuation, Str::Symbol, Punctuation
108
+ pop!
109
+ end
110
+
111
+ rule /[(]/ do
112
+ token Punctuation
113
+ push :inline_title
114
+ push :inline_url
115
+ end
116
+
117
+ rule /[ \t]+/, Text
118
+
119
+ rule(//) { pop! }
120
+ end
121
+
122
+ state :url do
123
+ rule /[ \t]+/, Text
124
+
125
+ # the url
126
+ rule /(<)(#{edot}*?)(>)/ do
127
+ groups Name::Tag, Str::Other, Name::Tag
128
+ pop!
129
+ end
130
+
131
+ rule /\S+/, Str::Other, :pop!
132
+ end
133
+
134
+ state :title do
135
+ rule /"#{edot}*?"/, Name::Namespace
136
+ rule /'#{edot}*?'/, Name::Namespace
137
+ rule /[(]#{edot}*?[)]/, Name::Namespace
138
+ rule /\s*(?=["'()])/, Text
139
+ rule(//) { pop! }
140
+ end
141
+
142
+ state :inline_title do
143
+ rule /[)]/, Punctuation, :pop!
144
+ mixin :title
145
+ end
146
+
147
+ state :inline_url do
148
+ rule /[^<\s)]+/, Str::Other, :pop!
149
+ rule /\s+/m, Text
150
+ mixin :url
151
+ end
152
+ end
153
+ end
154
+ end
@@ -0,0 +1,75 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ class Matlab < RegexLexer
6
+ title "MATLAB"
7
+ desc "Matlab"
8
+ tag 'matlab'
9
+ aliases 'm'
10
+ filenames '*.m'
11
+ mimetypes 'text/x-matlab', 'application/x-matlab'
12
+
13
+ def self.analyze_text(text)
14
+ return 0.4 if text =~ /^\s*% / # % comments are a dead giveaway
15
+ end
16
+
17
+ def self.keywords
18
+ @keywords = Set.new %w(
19
+ break case catch classdef continue else elseif end for function
20
+ global if otherwise parfor persistent return spmd switch try while
21
+ )
22
+ end
23
+
24
+ def self.builtins
25
+ load Pathname.new(__FILE__).dirname.join('matlab/builtins.rb')
26
+ self.builtins
27
+ end
28
+
29
+ state :root do
30
+ rule /\s+/m, Text # Whitespace
31
+ rule %r([{]%.*?%[}])m, Comment::Multiline
32
+ rule /%.*$/, Comment::Single
33
+ rule /([.][.][.])(.*?)$/ do
34
+ groups(Keyword, Comment)
35
+ end
36
+
37
+ rule /^(!)(.*?)(?=%|$)/ do |m|
38
+ token Keyword, m[1]
39
+ delegate Shell, m[2]
40
+ end
41
+
42
+
43
+ rule /[a-zA-Z][_a-zA-Z0-9]*/m do |m|
44
+ match = m[0]
45
+ if self.class.keywords.include? match
46
+ token Keyword
47
+ elsif self.class.builtins.include? match
48
+ token Name::Builtin
49
+ else
50
+ token Name
51
+ end
52
+ end
53
+
54
+ rule %r{[(){};:,\/\\\]\[]}, Punctuation
55
+
56
+ rule /~=|==|<<|>>|[-~+\/*%=<>&^|.@]/, Operator
57
+
58
+
59
+ rule /(\d+\.\d*|\d*\.\d+)(e[+-]?[0-9]+)?/i, Num::Float
60
+ rule /\d+e[+-]?[0-9]+/i, Num::Float
61
+ rule /\d+L/, Num::Integer::Long
62
+ rule /\d+/, Num::Integer
63
+
64
+ rule /'(?=(.*'))/, Str::Single, :string
65
+ rule /'/, Operator
66
+ end
67
+
68
+ state :string do
69
+ rule /[^']+/, Str::Single
70
+ rule /''/, Str::Escape
71
+ rule /'/, Str::Single, :pop!
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,11 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # automatically generated by `rake builtins:matlab`
3
+ module Rouge
4
+ module Lexers
5
+ class Matlab
6
+ def self.builtins
7
+ @builtins ||= Set.new %w(ans clc diary format home iskeyword more zeros ones rand true false eye diag blkdiag cat horzcat vertcat repelem repmat linspace logspace freqspace meshgrid ndgrid length size ndims numel isscalar isvector ismatrix isrow iscolumn isempty sort sortrows issorted issortedrows flip fliplr flipud rot90 transpose ctranspose permute ipermute circshift shiftdim reshape squeeze colon end ind2sub sub2ind plus uplus minus uminus times rdivide ldivide power mtimes mrdivide mldivide mpower cumprod cumsum diff movsum prod sum ceil fix floor idivide mod rem round bsxfun eq ge gt le lt ne isequal isequaln logicaloperatorsshortcircuit and not or xor all any false find islogical logical true intersect ismember ismembertol issorted setdiff setxor union unique uniquetol join innerjoin outerjoin bitand bitcmp bitget bitor bitset bitshift bitxor swapbytes double single int8 int16 int32 int64 uint8 uint16 uint32 uint64 cast typecast isinteger isfloat isnumeric isreal isfinite isinf isnan eps flintmax inf intmax intmin nan realmax realmin string strings join char cellstr blanks newline compose sprintf strcat ischar iscellstr isstring strlength isstrprop isletter isspace contains count endswith startswith strfind sscanf replace replacebetween strrep join split splitlines strjoin strsplit strtok erase erasebetween extractafter extractbefore extractbetween insertafter insertbefore pad strip lower upper reverse deblank strtrim strjust strcmp strcmpi strncmp strncmpi regexp regexpi regexprep regexptranslate datetime timezones years days hours minutes seconds milliseconds duration calyears calquarters calmonths calweeks caldays calendarduration exceltime juliandate posixtime yyyymmdd year quarter month week day hour minute second ymd hms split time timeofday isdst isweekend tzoffset between caldiff dateshift isbetween isdatetime isduration iscalendarduration isnat nat datenum datevec datestr char cellstr string now clock date calendar eomday weekday addtodate etime categorical iscategorical discretize categories iscategory isordinal isprotected addcats mergecats removecats renamecats reordercats setcats summary countcats isundefined table array2table cell2table struct2table table2array table2cell table2struct readtable writetable detectimportoptions istable head tail height width summary intersect ismember setdiff setxor unique union join innerjoin outerjoin sortrows stack unstack vartype ismissing standardizemissing rmmissing fillmissing varfun rowfun findgroups splitapply timetable retime synchronize lag table2timetable array2timetable timetable2table istimetable isregular timerange withtol vartype rmmissing issorted sortrows unique struct fieldnames getfield isfield isstruct orderfields rmfield setfield arrayfun structfun table2struct struct2table cell2struct struct2cell cell cell2mat cell2struct cell2table celldisp cellfun cellplot cellstr iscell iscellstr mat2cell num2cell strjoin strsplit struct2cell table2cell feval func2str str2func localfunctions functions addevent delevent gettsafteratevent gettsafterevent gettsatevent gettsbeforeatevent gettsbeforeevent gettsbetweenevents gettscollection isemptytscollection lengthtscollection settscollection sizetscollection tscollection addsampletocollection addts delsamplefromcollection getabstimetscollection getsampleusingtimetscollection gettimeseriesnames horzcattscollection removets resampletscollection setabstimetscollection settimeseriesnames vertcattscollection isa iscalendarduration iscategorical iscell iscellstr ischar isdatetime isduration isfield isfloat isgraphics isinteger isjava islogical isnumeric isobject isreal isenum isstruct istable is class validateattributes whos char cellstr int2str mat2str num2str str2double str2num native2unicode unicode2native base2dec bin2dec dec2base dec2bin dec2hex hex2dec hex2num num2hex table2array table2cell table2struct array2table cell2table struct2table cell2mat cell2struct mat2cell num2cell struct2cell plus uplus minus uminus times rdivide ldivide power mtimes mrdivide mldivide mpower cumprod cumsum diff movsum prod sum ceil fix floor idivide mod rem round bsxfun sin sind asin asind sinh asinh cos cosd acos acosd cosh acosh tan tand atan atand atan2 atan2d tanh atanh csc cscd acsc acscd csch acsch sec secd asec asecd sech asech cot cotd acot acotd coth acoth hypot deg2rad rad2deg exp expm1 log log10 log1p log2 nextpow2 nthroot pow2 reallog realpow realsqrt sqrt abs angle complex conj cplxpair i imag isreal j real sign unwrap factor factorial gcd isprime lcm nchoosek perms primes rat rats poly polyeig polyfit residue roots polyval polyvalm conv deconv polyint polyder airy besselh besseli besselj besselk bessely beta betainc betaincinv betaln ellipj ellipke erf erfc erfcinv erfcx erfinv expint gamma gammainc gammaincinv gammaln legendre psi cart2pol cart2sph pol2cart sph2cart eps flintmax i j inf pi nan isfinite isinf isnan compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson mldivide mrdivide linsolve inv pinv lscov lsqnonneg sylvester eig eigs balance svd svds gsvd ordeig ordqz ordschur polyeig qz hess schur rsf2csf cdf2rdf lu ldl chol cholupdate qr qrdelete qrinsert qrupdate planerot transpose ctranspose mtimes mpower sqrtm expm logm funm kron cross dot bandwidth tril triu isbanded isdiag ishermitian issymmetric istril istriu norm normest cond condest rcond condeig det null orth rank rref trace subspace rand randn randi randperm rng interp1 interp2 interp3 interpn pchip spline ppval mkpp unmkpp padecoef interpft ndgrid meshgrid griddata griddatan fminbnd fminsearch lsqnonneg fzero optimget optimset ode45 ode23 ode113 ode15s ode23s ode23t ode23tb ode15i decic odeget odeset deval odextend bvp4c bvp5c bvpinit bvpxtend bvpget bvpset deval dde23 ddesd ddensd ddeget ddeset deval pdepe pdeval integral integral2 integral3 quadgk quad2d cumtrapz trapz polyint del2 diff gradient polyder fft fft2 fftn fftshift fftw ifft ifft2 ifftn ifftshift nextpow2 interpft conv conv2 convn deconv filter filter2 ss2tf padecoef spalloc spdiags speye sprand sprandn sprandsym sparse spconvert issparse nnz nonzeros nzmax spfun spones spparms spy find full amd colamd colperm dmperm randperm symamd symrcm pcg minres symmlq gmres bicg bicgstab bicgstabl cgs qmr tfqmr lsqr ichol ilu eigs svds normest condest sprank etree symbfact spaugment dmperm etreeplot treelayout treeplot gplot unmesh graph digraph tetramesh trimesh triplot trisurf delaunay delaunayn tetramesh trimesh triplot trisurf dsearchn tsearchn delaunay delaunayn boundary alphashape convhull convhulln patch voronoi voronoin polyarea inpolygon rectint plot plot3 loglog semilogx semilogy errorbar fplot fplot3 fimplicit linespec colorspec bar bar3 barh bar3h histogram histcounts histogram2 histcounts2 rose pareto area pie pie3 stem stairs stem3 scatter scatter3 spy plotmatrix heatmap polarplot polarscatter polarhistogram compass ezpolar rlim thetalim rticks thetaticks rticklabels thetaticklabels rtickformat thetatickformat rtickangle polaraxes contour contourf contourc contour3 contourslice clabel fcontour feather quiver compass quiver3 streamslice streamline surf surfc surface surfl surfnorm mesh meshc meshz hidden fsurf fmesh fimplicit3 waterfall ribbon contour3 peaks cylinder ellipsoid sphere pcolor surf2patch contourslice flow isocaps isocolors isonormals isosurface reducepatch reducevolume shrinkfaces slice smooth3 subvolume volumebounds coneplot curl divergence interpstreamspeed stream2 stream3 streamline streamparticles streamribbon streamslice streamtube fill fill3 patch surf2patch movie getframe frame2im im2frame animatedline comet comet3 drawnow refreshdata title xlabel ylabel zlabel clabel legend colorbar text texlabel gtext line rectangle annotation xlim ylim zlim axis box daspect pbaspect grid xticks yticks zticks xticklabels yticklabels zticklabels xtickformat ytickformat ztickformat xtickangle ytickangle ztickangle datetick ruler2num num2ruler hold subplot yyaxis cla axes figure colormap colorbar rgbplot colormapeditor brighten contrast caxis spinmap hsv2rgb rgb2hsv parula jet hsv hot cool spring summer autumn winter gray bone copper pink lines colorcube prism flag view makehgtform viewmtx cameratoolbar campan camzoom camdolly camlookat camorbit campos camproj camroll camtarget camup camva camlight light lightangle lighting shading diffuse material specular alim alpha alphamap imshow image imagesc imread imwrite imfinfo imformats frame2im im2frame im2java im2double ind2rgb rgb2gray rgb2ind imapprox dither cmpermute cmunique print saveas getframe savefig openfig orient hgexport printopt get set reset inspect gca gcf gcbf gcbo gco groot ancestor allchild findall findobj findfigs gobjects isgraphics ishandle copyobj delete gobjects isgraphics isempty isequal isa clf cla close uicontextmenu uimenu dragrect rbbox refresh shg hggroup hgtransform makehgtform eye hold ishold newplot clf cla drawnow opengl readtable detectimportoptions writetable textscan dlmread dlmwrite csvread csvwrite type readtable detectimportoptions writetable xlsfinfo xlsread xlswrite importdata im2java imfinfo imread imwrite nccreate ncdisp ncinfo ncread ncreadatt ncwrite ncwriteatt ncwriteschema h5create h5disp h5info h5read h5readatt h5write h5writeatt hdfinfo hdfread hdftool imread imwrite hdfan hdfhx hdfh hdfhd hdfhe hdfml hdfpt hdfv hdfvf hdfvh hdfvs hdfdf24 hdfdfr8 fitsdisp fitsinfo fitsread fitswrite multibandread multibandwrite cdfinfo cdfread cdfepoch todatenum audioinfo audioread audiowrite videoreader videowriter mmfileinfo lin2mu mu2lin audiodevinfo audioplayer audiorecorder sound soundsc beep xmlread xmlwrite xslt load save matfile disp who whos clear clearvars openvar fclose feof ferror fgetl fgets fileread fopen fprintf fread frewind fscanf fseek ftell fwrite tcpclient web webread webwrite websave weboptions sendmail jsondecode jsonencode readasync serial serialbreak seriallist stopasync instrcallback instrfind instrfindall record tabulartextdatastore imagedatastore spreadsheetdatastore filedatastore datastore tall datastore mapreducer gather head tail topkrows istall classunderlying isaunderlying write mapreduce datastore add addmulti hasnext getnext mapreducer gcmr matfile memmapfile ismissing rmmissing fillmissing missing standardizemissing isoutlier filloutliers smoothdata movmean movmedian detrend filter filter2 discretize histcounts histcounts2 findgroups splitapply rowfun varfun accumarray min max bounds mean median mode std var corrcoef cov cummax cummin movmad movmax movmean movmedian movmin movprod movstd movsum movvar pan zoom rotate rotate3d brush datacursormode ginput linkdata linkaxes linkprop refreshdata figurepalette plotbrowser plotedit plottools propertyeditor propedit showplottool if for parfor switch try while break continue end pause return edit input publish grabcode snapnow function nargin nargout varargin varargout narginchk nargoutchk validateattributes validatestring inputname isvarname namelengthmax persistent assignin global mlock munlock mislocked try error warning lastwarn assert oncleanup addpath rmpath path savepath userpath genpath pathsep pathtool restoredefaultpath rehash dir ls pwd fileattrib exist isdir type visdiff what which cd copyfile delete recycle mkdir movefile rmdir open winopen zip unzip gzip gunzip tar untar fileparts fullfile filemarker filesep tempdir tempname matlabroot toolboxdir dbclear dbcont dbdown dbquit dbstack dbstatus dbstep dbstop dbtype dbup checkcode keyboard mlintrpt edit echo eval evalc evalin feval run builtin mfilename pcode uiaxes uibutton uibuttongroup uicheckbox uidropdown uieditfield uilabel uilistbox uiradiobutton uislider uispinner uitable uitextarea uitogglebutton scroll uifigure uipanel uitabgroup uitab uigauge uiknob uilamp uiswitch uialert questdlg inputdlg listdlg uisetcolor uigetfile uiputfile uigetdir uiopen uisave appdesigner figure axes uicontrol uitable uipanel uibuttongroup uitab uitabgroup uimenu uicontextmenu uitoolbar uipushtool uitoggletool actxcontrol align movegui getpixelposition setpixelposition listfonts textwrap uistack inspect errordlg warndlg msgbox helpdlg waitbar questdlg inputdlg listdlg uisetcolor uisetfont export2wsdlg uigetfile uiputfile uigetdir uiopen uisave printdlg printpreview exportsetupdlg dialog uigetpref guide uiwait uiresume waitfor waitforbuttonpress closereq getappdata setappdata isappdata rmappdata guidata guihandles uisetpref class isobject enumeration events methods properties classdef classdef import properties isprop mustbefinite mustbegreaterthan mustbegreaterthanorequal mustbeinteger mustbelessthan mustbelessthanorequal mustbemember mustbenegative mustbenonempty mustbenonnan mustbenonnegative mustbenonpositive mustbenonsparse mustbenonzero mustbenumeric mustbenumericorlogical mustbepositive mustbereal methods ismethod isequal eq events superclasses enumeration isenum numargumentsfromsubscript subsref subsasgn subsindex substruct builtin empty disp display details saveobj loadobj edit metaclass properties methods events superclasses step clone getnuminputs getnumoutputs islocked resetsystemobject releasesystemobject mexext inmem loadlibrary unloadlibrary libisloaded calllib libfunctions libfunctionsview libstruct libpointer import isjava javaaddpath javaarray javachk javaclasspath javamethod javamethodedt javaobject javaobjectedt javarmpath usejava net enablenetfromnetworkdrive cell begininvoke endinvoke combine remove removeall bitand bitor bitxor bitnot actxserver actxcontrol actxcontrollist actxcontrolselect actxgetrunningserver iscom addproperty deleteproperty inspect fieldnames methods methodsview invoke isevent eventlisteners registerevent unregisterallevents unregisterevent isinterface interfaces release move pyversion pyargs pyargs pyargs builddocsearchdb try assert runtests testsuite functiontests runtests testsuite runtests testsuite runperf testsuite timeit tic toc cputime profile bench memory inmem pack memoize clearallmemoizedcaches clipboard computer system dos unix getenv setenv perl winqueryreg commandhistory commandwindow filebrowser workspace getpref setpref addpref rmpref ispref mex execute getchararray putchararray getfullmatrix putfullmatrix getvariable getworkspacedata putworkspacedata maximizecommandwindow minimizecommandwindow regmatlabserver enableservice mex dbmex mexext inmem ver computer mexext dbmex inmem mex mexext matlabwindows matlabmac matlablinux exit quit matlabrc startup finish prefdir preferences version ver verlessthan license ispc ismac isunix isstudent javachk usejava doc help docsearch lookfor demo echodemo)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,114 @@
1
+ # -*- coding: utf-8 -*- #
2
+
3
+ module Rouge
4
+ module Lexers
5
+ load_lexer 'lua.rb'
6
+
7
+ class Moonscript < RegexLexer
8
+ title "MoonScript"
9
+ desc "Moonscript (http://www.moonscript.org)"
10
+ tag 'moonscript'
11
+ aliases 'moon'
12
+ filenames '*.moon'
13
+ mimetypes 'text/x-moonscript', 'application/x-moonscript'
14
+
15
+ option :function_highlighting, 'Whether to highlight builtin functions (default: true)'
16
+ option :disabled_modules, 'builtin modules to disable'
17
+
18
+ def initialize(*)
19
+ super
20
+
21
+ @function_highlighting = bool_option(:function_highlighting) { true }
22
+ @disabled_modules = list_option(:disabled_modules)
23
+ end
24
+
25
+ def self.analyze_text(text)
26
+ return 1 if text.shebang? 'moon'
27
+ end
28
+
29
+ def builtins
30
+ return [] unless @function_highlighting
31
+
32
+ @builtins ||= Set.new.tap do |builtins|
33
+ Rouge::Lexers::Lua.builtins.each do |mod, fns|
34
+ next if @disabled_modules.include? mod
35
+ builtins.merge(fns)
36
+ end
37
+ end
38
+ end
39
+
40
+ state :root do
41
+ rule %r(#!(.*?)$), Comment::Preproc # shebang
42
+ rule //, Text, :main
43
+ end
44
+
45
+ state :base do
46
+ ident = '(?:[\w_][\w\d_]*)'
47
+
48
+ rule %r((?i)(\d*\.\d+|\d+\.\d*)(e[+-]?\d+)?'), Num::Float
49
+ rule %r((?i)\d+e[+-]?\d+), Num::Float
50
+ rule %r((?i)0x[0-9a-f]*), Num::Hex
51
+ rule %r(\d+), Num::Integer
52
+ rule %r(@#{ident}*), Name::Variable::Instance
53
+ rule %r([A-Z][\w\d_]*), Name::Class
54
+ rule %r("?[^"]+":), Literal::String::Symbol
55
+ rule %r(#{ident}:), Literal::String::Symbol
56
+ rule %r(:#{ident}), Literal::String::Symbol
57
+
58
+ rule %r(\s+), Text::Whitespace
59
+ rule %r((==|~=|!=|<=|>=|\.\.\.|\.\.|->|=>|[=+\-*/%^<>#!\\])), Operator
60
+ rule %r([\[\]\{\}\(\)\.,:;]), Punctuation
61
+ rule %r((and|or|not)\b), Operator::Word
62
+
63
+ keywords = %w{
64
+ break class continue do else elseif end extends for if import in
65
+ repeat return switch super then unless until using when with while
66
+ }
67
+ rule %r((#{keywords.join('|')})\b), Keyword
68
+ rule %r((local|export)\b), Keyword::Declaration
69
+ rule %r((true|false|nil)\b), Keyword::Constant
70
+
71
+ rule %r([A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?) do |m|
72
+ name = m[0]
73
+ if self.builtins.include?(name)
74
+ token Name::Builtin
75
+ elsif name =~ /\./
76
+ a, b = name.split('.', 2)
77
+ token Name, a
78
+ token Punctuation, '.'
79
+ token Name, b
80
+ else
81
+ token Name
82
+ end
83
+ end
84
+ end
85
+
86
+ state :main do
87
+ rule %r(--.*$), Comment::Single
88
+ rule %r(\[(=*)\[.*?\]\1\])m, Str::Heredoc
89
+
90
+ mixin :base
91
+
92
+ rule %r('), Str::Single, :sqs
93
+ rule %r("), Str::Double, :dqs
94
+ end
95
+
96
+ state :sqs do
97
+ rule %r('), Str::Single, :pop!
98
+ rule %r([^']+), Str::Single
99
+ end
100
+
101
+ state :interpolation do
102
+ rule %r(\}), Str::Interpol, :pop!
103
+ mixin :base
104
+ end
105
+
106
+ state :dqs do
107
+ rule %r(#\{), Str::Interpol, :interpolation
108
+ rule %r("), Str::Double, :pop!
109
+ rule %r(#[^{]), Str::Double
110
+ rule %r([^"#]+), Str::Double
111
+ end
112
+ end
113
+ end
114
+ end