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.
- checksums.yaml +7 -0
- data/Gemfile +28 -0
- data/LICENSE +186 -0
- data/bin/rougify +18 -0
- data/lib/rouge/cli.rb +432 -0
- data/lib/rouge/demos/abap +6 -0
- data/lib/rouge/demos/actionscript +4 -0
- data/lib/rouge/demos/alda +10 -0
- data/lib/rouge/demos/apache +21 -0
- data/lib/rouge/demos/apiblueprint +33 -0
- data/lib/rouge/demos/applescript +2 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/biml +38 -0
- data/lib/rouge/demos/bsl +7 -0
- data/lib/rouge/demos/c +8 -0
- data/lib/rouge/demos/ceylon +7 -0
- data/lib/rouge/demos/cfscript +18 -0
- data/lib/rouge/demos/clojure +5 -0
- data/lib/rouge/demos/cmake +7 -0
- data/lib/rouge/demos/coffeescript +5 -0
- data/lib/rouge/demos/common_lisp +1 -0
- data/lib/rouge/demos/conf +4 -0
- data/lib/rouge/demos/console +6 -0
- data/lib/rouge/demos/coq +13 -0
- data/lib/rouge/demos/cpp +8 -0
- data/lib/rouge/demos/crystal +45 -0
- data/lib/rouge/demos/csharp +5 -0
- data/lib/rouge/demos/css +4 -0
- data/lib/rouge/demos/d +16 -0
- data/lib/rouge/demos/dart +6 -0
- data/lib/rouge/demos/diff +7 -0
- data/lib/rouge/demos/digdag +19 -0
- data/lib/rouge/demos/docker +9 -0
- data/lib/rouge/demos/dot +5 -0
- data/lib/rouge/demos/eiffel +30 -0
- data/lib/rouge/demos/elixir +1 -0
- data/lib/rouge/demos/elm +4 -0
- data/lib/rouge/demos/erb +1 -0
- data/lib/rouge/demos/erlang +7 -0
- data/lib/rouge/demos/factor +5 -0
- data/lib/rouge/demos/fortran +22 -0
- data/lib/rouge/demos/fsharp +12 -0
- data/lib/rouge/demos/gherkin +17 -0
- data/lib/rouge/demos/glsl +14 -0
- data/lib/rouge/demos/go +7 -0
- data/lib/rouge/demos/gradle +10 -0
- data/lib/rouge/demos/graphql +17 -0
- data/lib/rouge/demos/groovy +9 -0
- data/lib/rouge/demos/hack +5 -0
- data/lib/rouge/demos/haml +5 -0
- data/lib/rouge/demos/handlebars +7 -0
- data/lib/rouge/demos/haskell +6 -0
- data/lib/rouge/demos/hcl +7 -0
- data/lib/rouge/demos/html +8 -0
- data/lib/rouge/demos/http +14 -0
- data/lib/rouge/demos/hylang +10 -0
- data/lib/rouge/demos/idlang +8 -0
- data/lib/rouge/demos/igorpro +9 -0
- data/lib/rouge/demos/ini +4 -0
- data/lib/rouge/demos/io +11 -0
- data/lib/rouge/demos/irb +4 -0
- data/lib/rouge/demos/irb_output +2 -0
- data/lib/rouge/demos/java +5 -0
- data/lib/rouge/demos/javascript +1 -0
- data/lib/rouge/demos/jinja +9 -0
- data/lib/rouge/demos/json +1 -0
- data/lib/rouge/demos/json-doc +1 -0
- data/lib/rouge/demos/jsonnet +28 -0
- data/lib/rouge/demos/jsp +29 -0
- data/lib/rouge/demos/jsx +17 -0
- data/lib/rouge/demos/julia +11 -0
- data/lib/rouge/demos/kotlin +3 -0
- data/lib/rouge/demos/lasso +12 -0
- data/lib/rouge/demos/liquid +11 -0
- data/lib/rouge/demos/literate_coffeescript +3 -0
- data/lib/rouge/demos/literate_haskell +7 -0
- data/lib/rouge/demos/llvm +20 -0
- data/lib/rouge/demos/lua +12 -0
- data/lib/rouge/demos/m68k +16 -0
- data/lib/rouge/demos/make +6 -0
- data/lib/rouge/demos/markdown +4 -0
- data/lib/rouge/demos/mathematica +8 -0
- data/lib/rouge/demos/matlab +6 -0
- data/lib/rouge/demos/moonscript +16 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/mxml +22 -0
- data/lib/rouge/demos/nasm +26 -0
- data/lib/rouge/demos/nginx +5 -0
- data/lib/rouge/demos/nim +27 -0
- data/lib/rouge/demos/nix +19 -0
- data/lib/rouge/demos/objective_c +18 -0
- data/lib/rouge/demos/ocaml +12 -0
- data/lib/rouge/demos/pascal +14 -0
- data/lib/rouge/demos/perl +5 -0
- data/lib/rouge/demos/php +3 -0
- data/lib/rouge/demos/plaintext +1 -0
- data/lib/rouge/demos/plist +142 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/powershell +49 -0
- data/lib/rouge/demos/praat +26 -0
- data/lib/rouge/demos/prolog +9 -0
- data/lib/rouge/demos/prometheus +9 -0
- data/lib/rouge/demos/properties +7 -0
- data/lib/rouge/demos/protobuf +5 -0
- data/lib/rouge/demos/puppet +6 -0
- data/lib/rouge/demos/python +6 -0
- data/lib/rouge/demos/q +2 -0
- data/lib/rouge/demos/qml +9 -0
- data/lib/rouge/demos/r +8 -0
- data/lib/rouge/demos/racket +24 -0
- data/lib/rouge/demos/ruby +9 -0
- data/lib/rouge/demos/rust +12 -0
- data/lib/rouge/demos/sass +3 -0
- data/lib/rouge/demos/scala +3 -0
- data/lib/rouge/demos/scheme +4 -0
- data/lib/rouge/demos/scss +5 -0
- data/lib/rouge/demos/sed +4 -0
- data/lib/rouge/demos/shell +2 -0
- data/lib/rouge/demos/sieve +10 -0
- data/lib/rouge/demos/slim +17 -0
- data/lib/rouge/demos/smalltalk +6 -0
- data/lib/rouge/demos/smarty +12 -0
- data/lib/rouge/demos/sml +4 -0
- data/lib/rouge/demos/sqf +14 -0
- data/lib/rouge/demos/sql +1 -0
- data/lib/rouge/demos/swift +5 -0
- data/lib/rouge/demos/tap +5 -0
- data/lib/rouge/demos/tcl +1 -0
- data/lib/rouge/demos/terraform +31 -0
- data/lib/rouge/demos/tex +1 -0
- data/lib/rouge/demos/toml +9 -0
- data/lib/rouge/demos/tsx +17 -0
- data/lib/rouge/demos/tulip +13 -0
- data/lib/rouge/demos/turtle +26 -0
- data/lib/rouge/demos/twig +9 -0
- data/lib/rouge/demos/typescript +1 -0
- data/lib/rouge/demos/vala +8 -0
- data/lib/rouge/demos/vb +4 -0
- data/lib/rouge/demos/verilog +27 -0
- data/lib/rouge/demos/vhdl +23 -0
- data/lib/rouge/demos/viml +14 -0
- data/lib/rouge/demos/vue +11 -0
- data/lib/rouge/demos/wollok +11 -0
- data/lib/rouge/demos/xml +2 -0
- data/lib/rouge/demos/yaml +4 -0
- data/lib/rouge/formatter.rb +76 -0
- data/lib/rouge/formatters/html.rb +38 -0
- data/lib/rouge/formatters/html_inline.rb +31 -0
- data/lib/rouge/formatters/html_legacy.rb +45 -0
- data/lib/rouge/formatters/html_linewise.rb +28 -0
- data/lib/rouge/formatters/html_pygments.rb +18 -0
- data/lib/rouge/formatters/html_table.rb +62 -0
- data/lib/rouge/formatters/null.rb +20 -0
- data/lib/rouge/formatters/terminal256.rb +181 -0
- data/lib/rouge/guesser.rb +57 -0
- data/lib/rouge/guessers/disambiguation.rb +106 -0
- data/lib/rouge/guessers/filename.rb +27 -0
- data/lib/rouge/guessers/glob_mapping.rb +45 -0
- data/lib/rouge/guessers/mimetype.rb +16 -0
- data/lib/rouge/guessers/modeline.rb +46 -0
- data/lib/rouge/guessers/source.rb +31 -0
- data/lib/rouge/guessers/util.rb +34 -0
- data/lib/rouge/lexer.rb +462 -0
- data/lib/rouge/lexers/abap.rb +240 -0
- data/lib/rouge/lexers/actionscript.rb +196 -0
- data/lib/rouge/lexers/alda.rb +43 -0
- data/lib/rouge/lexers/apache/keywords.yml +764 -0
- data/lib/rouge/lexers/apache.rb +73 -0
- data/lib/rouge/lexers/apiblueprint.rb +49 -0
- data/lib/rouge/lexers/apple_script.rb +369 -0
- data/lib/rouge/lexers/awk.rb +162 -0
- data/lib/rouge/lexers/biml.rb +43 -0
- data/lib/rouge/lexers/bsl.rb +82 -0
- data/lib/rouge/lexers/c.rb +213 -0
- data/lib/rouge/lexers/ceylon.rb +124 -0
- data/lib/rouge/lexers/cfscript.rb +154 -0
- data/lib/rouge/lexers/clojure.rb +113 -0
- data/lib/rouge/lexers/cmake.rb +207 -0
- data/lib/rouge/lexers/coffeescript.rb +175 -0
- data/lib/rouge/lexers/common_lisp.rb +346 -0
- data/lib/rouge/lexers/conf.rb +25 -0
- data/lib/rouge/lexers/console.rb +137 -0
- data/lib/rouge/lexers/coq.rb +188 -0
- data/lib/rouge/lexers/cpp.rb +79 -0
- data/lib/rouge/lexers/crystal.rb +430 -0
- data/lib/rouge/lexers/csharp.rb +115 -0
- data/lib/rouge/lexers/css.rb +274 -0
- data/lib/rouge/lexers/d.rb +177 -0
- data/lib/rouge/lexers/dart.rb +105 -0
- data/lib/rouge/lexers/diff.rb +33 -0
- data/lib/rouge/lexers/digdag.rb +70 -0
- data/lib/rouge/lexers/docker.rb +51 -0
- data/lib/rouge/lexers/dot.rb +69 -0
- data/lib/rouge/lexers/eiffel.rb +66 -0
- data/lib/rouge/lexers/elixir.rb +134 -0
- data/lib/rouge/lexers/elm.rb +90 -0
- data/lib/rouge/lexers/erb.rb +53 -0
- data/lib/rouge/lexers/erlang.rb +115 -0
- data/lib/rouge/lexers/factor.rb +303 -0
- data/lib/rouge/lexers/fortran.rb +178 -0
- data/lib/rouge/lexers/fsharp.rb +119 -0
- data/lib/rouge/lexers/gherkin/keywords.rb +16 -0
- data/lib/rouge/lexers/gherkin.rb +138 -0
- data/lib/rouge/lexers/glsl.rb +136 -0
- data/lib/rouge/lexers/go.rb +175 -0
- data/lib/rouge/lexers/gradle.rb +38 -0
- data/lib/rouge/lexers/graphql.rb +254 -0
- data/lib/rouge/lexers/groovy.rb +113 -0
- data/lib/rouge/lexers/hack.rb +49 -0
- data/lib/rouge/lexers/haml.rb +230 -0
- data/lib/rouge/lexers/handlebars.rb +80 -0
- data/lib/rouge/lexers/haskell.rb +198 -0
- data/lib/rouge/lexers/hcl.rb +163 -0
- data/lib/rouge/lexers/html.rb +140 -0
- data/lib/rouge/lexers/http.rb +81 -0
- data/lib/rouge/lexers/hylang.rb +94 -0
- data/lib/rouge/lexers/idlang.rb +312 -0
- data/lib/rouge/lexers/igorpro.rb +664 -0
- data/lib/rouge/lexers/ini.rb +54 -0
- data/lib/rouge/lexers/io.rb +69 -0
- data/lib/rouge/lexers/irb.rb +67 -0
- data/lib/rouge/lexers/java.rb +88 -0
- data/lib/rouge/lexers/javascript.rb +283 -0
- data/lib/rouge/lexers/jinja.rb +138 -0
- data/lib/rouge/lexers/json.rb +30 -0
- data/lib/rouge/lexers/json_doc.rb +24 -0
- data/lib/rouge/lexers/jsonnet.rb +152 -0
- data/lib/rouge/lexers/jsp.rb +120 -0
- data/lib/rouge/lexers/jsx.rb +104 -0
- data/lib/rouge/lexers/julia.rb +167 -0
- data/lib/rouge/lexers/kotlin.rb +127 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -0
- data/lib/rouge/lexers/lasso.rb +215 -0
- data/lib/rouge/lexers/liquid.rb +288 -0
- data/lib/rouge/lexers/literate_coffeescript.rb +34 -0
- data/lib/rouge/lexers/literate_haskell.rb +37 -0
- data/lib/rouge/lexers/llvm.rb +81 -0
- data/lib/rouge/lexers/lua/builtins.rb +24 -0
- data/lib/rouge/lexers/lua.rb +126 -0
- data/lib/rouge/lexers/m68k.rb +144 -0
- data/lib/rouge/lexers/make.rb +113 -0
- data/lib/rouge/lexers/markdown.rb +155 -0
- data/lib/rouge/lexers/mathematica/builtins.rb +13 -0
- data/lib/rouge/lexers/mathematica.rb +96 -0
- data/lib/rouge/lexers/matlab/builtins.rb +13 -0
- data/lib/rouge/lexers/matlab.rb +72 -0
- data/lib/rouge/lexers/moonscript.rb +115 -0
- data/lib/rouge/lexers/mosel.rb +232 -0
- data/lib/rouge/lexers/mxml.rb +69 -0
- data/lib/rouge/lexers/nasm.rb +199 -0
- data/lib/rouge/lexers/nginx.rb +72 -0
- data/lib/rouge/lexers/nim.rb +153 -0
- data/lib/rouge/lexers/nix.rb +211 -0
- data/lib/rouge/lexers/objective_c.rb +195 -0
- data/lib/rouge/lexers/ocaml.rb +101 -0
- data/lib/rouge/lexers/pascal.rb +67 -0
- data/lib/rouge/lexers/perl.rb +201 -0
- data/lib/rouge/lexers/php/builtins.rb +196 -0
- data/lib/rouge/lexers/php.rb +194 -0
- data/lib/rouge/lexers/plain_text.rb +27 -0
- data/lib/rouge/lexers/plist.rb +47 -0
- data/lib/rouge/lexers/pony.rb +94 -0
- data/lib/rouge/lexers/powershell.rb +679 -0
- data/lib/rouge/lexers/praat.rb +351 -0
- data/lib/rouge/lexers/prolog.rb +61 -0
- data/lib/rouge/lexers/prometheus.rb +123 -0
- data/lib/rouge/lexers/properties.rb +52 -0
- data/lib/rouge/lexers/protobuf.rb +71 -0
- data/lib/rouge/lexers/puppet.rb +129 -0
- data/lib/rouge/lexers/python.rb +247 -0
- data/lib/rouge/lexers/q.rb +125 -0
- data/lib/rouge/lexers/qml.rb +74 -0
- data/lib/rouge/lexers/r.rb +90 -0
- data/lib/rouge/lexers/racket.rb +545 -0
- data/lib/rouge/lexers/ruby.rb +439 -0
- data/lib/rouge/lexers/rust.rb +198 -0
- data/lib/rouge/lexers/sass/common.rb +181 -0
- data/lib/rouge/lexers/sass.rb +75 -0
- data/lib/rouge/lexers/scala.rb +143 -0
- data/lib/rouge/lexers/scheme.rb +113 -0
- data/lib/rouge/lexers/scss.rb +35 -0
- data/lib/rouge/lexers/sed.rb +173 -0
- data/lib/rouge/lexers/shell.rb +190 -0
- data/lib/rouge/lexers/sieve.rb +97 -0
- data/lib/rouge/lexers/slim.rb +229 -0
- data/lib/rouge/lexers/smalltalk.rb +117 -0
- data/lib/rouge/lexers/smarty.rb +81 -0
- data/lib/rouge/lexers/sml.rb +345 -0
- data/lib/rouge/lexers/sqf/commands.rb +15 -0
- data/lib/rouge/lexers/sqf.rb +109 -0
- data/lib/rouge/lexers/sql.rb +141 -0
- data/lib/rouge/lexers/swift.rb +182 -0
- data/lib/rouge/lexers/tap.rb +89 -0
- data/lib/rouge/lexers/tcl.rb +193 -0
- data/lib/rouge/lexers/terraform.rb +105 -0
- data/lib/rouge/lexers/tex.rb +70 -0
- data/lib/rouge/lexers/toml.rb +68 -0
- data/lib/rouge/lexers/tsx.rb +20 -0
- data/lib/rouge/lexers/tulip.rb +108 -0
- data/lib/rouge/lexers/turtle.rb +64 -0
- data/lib/rouge/lexers/twig.rb +40 -0
- data/lib/rouge/lexers/typescript/common.rb +34 -0
- data/lib/rouge/lexers/typescript.rb +23 -0
- data/lib/rouge/lexers/vala.rb +78 -0
- data/lib/rouge/lexers/vb.rb +165 -0
- data/lib/rouge/lexers/verilog.rb +165 -0
- data/lib/rouge/lexers/vhdl.rb +98 -0
- data/lib/rouge/lexers/viml/keywords.rb +14 -0
- data/lib/rouge/lexers/viml.rb +102 -0
- data/lib/rouge/lexers/vue.rb +124 -0
- data/lib/rouge/lexers/wollok.rb +104 -0
- data/lib/rouge/lexers/xml.rb +58 -0
- data/lib/rouge/lexers/yaml.rb +374 -0
- data/lib/rouge/plugins/redcarpet.rb +31 -0
- data/lib/rouge/regex_lexer.rb +442 -0
- data/lib/rouge/template_lexer.rb +21 -0
- data/lib/rouge/text_analyzer.rb +50 -0
- data/lib/rouge/theme.rb +214 -0
- data/lib/rouge/themes/base16.rb +131 -0
- data/lib/rouge/themes/colorful.rb +68 -0
- data/lib/rouge/themes/github.rb +72 -0
- data/lib/rouge/themes/gruvbox.rb +168 -0
- data/lib/rouge/themes/igor_pro.rb +21 -0
- data/lib/rouge/themes/molokai.rb +83 -0
- data/lib/rouge/themes/monokai.rb +93 -0
- data/lib/rouge/themes/monokai_sublime.rb +92 -0
- data/lib/rouge/themes/pastie.rb +70 -0
- data/lib/rouge/themes/thankful_eyes.rb +75 -0
- data/lib/rouge/themes/tulip.rb +70 -0
- data/lib/rouge/token.rb +183 -0
- data/lib/rouge/util.rb +102 -0
- data/lib/rouge/version.rb +8 -0
- data/lib/rouge.rb +84 -0
- data/rouge.gemspec +25 -0
- 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
|