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,193 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class TCL < RegexLexer
|
|
7
|
+
title "Tcl"
|
|
8
|
+
desc "The Tool Command Language (tcl.tk)"
|
|
9
|
+
tag 'tcl'
|
|
10
|
+
filenames '*.tcl'
|
|
11
|
+
mimetypes 'text/x-tcl', 'text/x-script.tcl', 'application/x-tcl'
|
|
12
|
+
|
|
13
|
+
def self.detect?(text)
|
|
14
|
+
return true if text.shebang? 'tclsh'
|
|
15
|
+
return true if text.shebang? 'wish'
|
|
16
|
+
return true if text.shebang? 'jimsh'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
KEYWORDS = %w(
|
|
20
|
+
after apply array break catch continue elseif else error
|
|
21
|
+
eval expr for foreach global if namespace proc rename return
|
|
22
|
+
set switch then trace unset update uplevel upvar variable
|
|
23
|
+
vwait while
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
BUILTINS = %w(
|
|
27
|
+
append bgerror binary cd chan clock close concat dde dict
|
|
28
|
+
encoding eof exec exit fblocked fconfigure fcopy file
|
|
29
|
+
fileevent flush format gets glob history http incr info interp
|
|
30
|
+
join lappend lassign lindex linsert list llength load loadTk
|
|
31
|
+
lrange lrepeat lreplace lreverse lsearch lset lsort mathfunc
|
|
32
|
+
mathop memory msgcat open package pid pkg::create pkg_mkIndex
|
|
33
|
+
platform platform::shell puts pwd re_syntax read refchan
|
|
34
|
+
regexp registry regsub scan seek socket source split string
|
|
35
|
+
subst tell time tm unknown unload
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
OPEN = %w| \( \[ \{ " |
|
|
39
|
+
CLOSE = %w| \) \] \} |
|
|
40
|
+
ALL = OPEN + CLOSE
|
|
41
|
+
END_LINE = CLOSE + %w(; \n)
|
|
42
|
+
END_WORD = END_LINE + %w(\s)
|
|
43
|
+
|
|
44
|
+
CHARS = lambda { |list| Regexp.new %/[#{list.join}]/ }
|
|
45
|
+
NOT_CHARS = lambda { |list| Regexp.new %/[^#{list.join}]/ }
|
|
46
|
+
|
|
47
|
+
state :word do
|
|
48
|
+
rule /\{\*\}/, Keyword
|
|
49
|
+
|
|
50
|
+
mixin :brace_abort
|
|
51
|
+
mixin :interp
|
|
52
|
+
rule /\{/, Punctuation, :brace
|
|
53
|
+
rule /\(/, Punctuation, :paren
|
|
54
|
+
rule /"/, Str::Double, :string
|
|
55
|
+
rule /#{NOT_CHARS[END_WORD]}+?(?=#{CHARS[OPEN+['\\\\']]})/, Text
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def self.gen_command_state(name='')
|
|
59
|
+
state(:"command#{name}") do
|
|
60
|
+
mixin :word
|
|
61
|
+
|
|
62
|
+
rule /##{NOT_CHARS[END_LINE]}+/, Comment::Single
|
|
63
|
+
|
|
64
|
+
rule /(?=#{CHARS[END_WORD]})/ do
|
|
65
|
+
push :"params#{name}"
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
rule /#{NOT_CHARS[END_WORD]}+/ do |m|
|
|
69
|
+
if KEYWORDS.include? m[0]
|
|
70
|
+
token Keyword
|
|
71
|
+
elsif BUILTINS.include? m[0]
|
|
72
|
+
token Name::Builtin
|
|
73
|
+
else
|
|
74
|
+
token Text
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
mixin :whitespace
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def self.gen_delimiter_states(name, close, opts={})
|
|
83
|
+
gen_command_state("_in_#{name}")
|
|
84
|
+
|
|
85
|
+
state :"params_in_#{name}" do
|
|
86
|
+
rule close do
|
|
87
|
+
token Punctuation
|
|
88
|
+
pop! 2
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# mismatched delimiters. Braced strings with mismatched
|
|
92
|
+
# closing delimiters should be okay, since this is standard
|
|
93
|
+
# practice, like {]]]]}
|
|
94
|
+
if opts[:strict]
|
|
95
|
+
rule CHARS[CLOSE - [close]], Error
|
|
96
|
+
else
|
|
97
|
+
rule CHARS[CLOSE - [close]], Text
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
mixin :params
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
state name do
|
|
104
|
+
rule close, Punctuation, :pop!
|
|
105
|
+
mixin :"command_in_#{name}"
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
# tcl is freaking impossible. If we're in braces and we encounter
|
|
111
|
+
# a close brace, we have to drop everything and close the brace.
|
|
112
|
+
# This is so silly things like {abc"def} and {abc]def} don't b0rk
|
|
113
|
+
# everything after them.
|
|
114
|
+
|
|
115
|
+
# TODO: TCL seems to have this aborting behavior quite a lot.
|
|
116
|
+
# such things as [ abc" ] are a runtime error, but will still
|
|
117
|
+
# parse. Currently something like this will muck up the lex.
|
|
118
|
+
state :brace_abort do
|
|
119
|
+
rule /}/ do
|
|
120
|
+
if in_state? :brace
|
|
121
|
+
pop! until state? :brace
|
|
122
|
+
pop!
|
|
123
|
+
token Punctuation
|
|
124
|
+
else
|
|
125
|
+
token Error
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
state :params do
|
|
131
|
+
rule /;/, Punctuation, :pop!
|
|
132
|
+
rule /\n/, Text, :pop!
|
|
133
|
+
rule /else|elseif|then/, Keyword
|
|
134
|
+
mixin :word
|
|
135
|
+
mixin :whitespace
|
|
136
|
+
rule /#{NOT_CHARS[END_WORD]}+/, Text
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
gen_delimiter_states :brace, /\}/, :strict => false
|
|
140
|
+
gen_delimiter_states :paren, /\)/, :strict => true
|
|
141
|
+
gen_delimiter_states :bracket, /\]/, :strict => true
|
|
142
|
+
gen_command_state
|
|
143
|
+
|
|
144
|
+
state :root do
|
|
145
|
+
mixin :command
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
state :whitespace do
|
|
149
|
+
# not a multiline regex because we want to capture \n sometimes
|
|
150
|
+
rule /\s+/, Text
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
state :interp do
|
|
154
|
+
rule /\[/, Punctuation, :bracket
|
|
155
|
+
rule /\$[a-z0-9.:-]+/, Name::Variable
|
|
156
|
+
rule /\$\{.*?\}/m, Name::Variable
|
|
157
|
+
rule /\$/, Text
|
|
158
|
+
|
|
159
|
+
# escape sequences
|
|
160
|
+
rule /\\[0-7]{3}/, Str::Escape
|
|
161
|
+
rule /\\x[0-9a-f]{2}/i, Str::Escape
|
|
162
|
+
rule /\\u[0-9a-f]{4}/i, Str::Escape
|
|
163
|
+
rule /\\./m, Str::Escape
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
state :string do
|
|
167
|
+
rule /"/, Str::Double, :pop!
|
|
168
|
+
mixin :interp
|
|
169
|
+
rule /[^\\\[\$"{}]+/m, Str::Double
|
|
170
|
+
|
|
171
|
+
# strings have to keep count of their internal braces, to support
|
|
172
|
+
# for example { "{ }" }.
|
|
173
|
+
rule /{/ do
|
|
174
|
+
@brace_count ||= 0
|
|
175
|
+
@brace_count += 1
|
|
176
|
+
|
|
177
|
+
token Str::Double
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
rule /}/ do
|
|
181
|
+
if in_state? :brace and @brace_count.to_i == 0
|
|
182
|
+
pop! until state? :brace
|
|
183
|
+
pop!
|
|
184
|
+
token Punctuation
|
|
185
|
+
else
|
|
186
|
+
@brace_count -= 1
|
|
187
|
+
token Str::Double
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
end
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
load_lexer 'hcl.rb'
|
|
7
|
+
|
|
8
|
+
class Terraform < Hcl
|
|
9
|
+
title "Terraform"
|
|
10
|
+
desc "Terraform HCL Interpolations"
|
|
11
|
+
|
|
12
|
+
tag 'terraform'
|
|
13
|
+
aliases 'tf'
|
|
14
|
+
filenames '*.tf'
|
|
15
|
+
|
|
16
|
+
def self.keywords
|
|
17
|
+
@keywords ||= Set.new %w(
|
|
18
|
+
terraform module provider variable resource data provisioner output
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.declarations
|
|
23
|
+
@declarations ||= Set.new %w(
|
|
24
|
+
var local
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.reserved
|
|
29
|
+
@reserved ||= Set.new %w()
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.constants
|
|
33
|
+
@constants ||= Set.new %w(true false null)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.builtins
|
|
37
|
+
@builtins ||= %w()
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
state :strings do
|
|
41
|
+
rule /\\./, Str::Escape
|
|
42
|
+
rule /\$\{/ do
|
|
43
|
+
token Keyword
|
|
44
|
+
push :interpolation
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
state :dq do
|
|
49
|
+
rule /[^\\"\$]+/, Str::Double
|
|
50
|
+
mixin :strings
|
|
51
|
+
rule /"/, Str::Double, :pop!
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
state :sq do
|
|
55
|
+
rule /[^\\'\$]+/, Str::Single
|
|
56
|
+
mixin :strings
|
|
57
|
+
rule /'/, Str::Single, :pop!
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
state :heredoc do
|
|
61
|
+
rule /\n/, Str::Heredoc, :heredoc_nl
|
|
62
|
+
rule /[^$\n\$]+/, Str::Heredoc
|
|
63
|
+
rule /[$]/, Str::Heredoc
|
|
64
|
+
mixin :strings
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
state :interpolation do
|
|
68
|
+
rule /\}/ do
|
|
69
|
+
token Keyword
|
|
70
|
+
pop!
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
mixin :expression
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
id = /[$a-z_\-][a-z0-9_\-]*/io
|
|
77
|
+
|
|
78
|
+
state :expression do
|
|
79
|
+
mixin :primitives
|
|
80
|
+
rule /\s+/, Text
|
|
81
|
+
|
|
82
|
+
rule %r(\+\+ | -- | ~ | && | \|\| | \\(?=\n) | << | >>>? | == | != )x, Operator
|
|
83
|
+
rule %r([-<>+*%&|\^/!=?:]=?), Operator
|
|
84
|
+
rule /[(\[,]/, Punctuation
|
|
85
|
+
rule /[)\].]/, Punctuation
|
|
86
|
+
|
|
87
|
+
rule id do |m|
|
|
88
|
+
if self.class.keywords.include? m[0]
|
|
89
|
+
token Keyword
|
|
90
|
+
elsif self.class.declarations.include? m[0]
|
|
91
|
+
token Keyword::Declaration
|
|
92
|
+
elsif self.class.reserved.include? m[0]
|
|
93
|
+
token Keyword::Reserved
|
|
94
|
+
elsif self.class.constants.include? m[0]
|
|
95
|
+
token Keyword::Constant
|
|
96
|
+
elsif self.class.builtins.include? m[0]
|
|
97
|
+
token Name::Builtin
|
|
98
|
+
else
|
|
99
|
+
token Name::Other
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class TeX < RegexLexer
|
|
7
|
+
title "TeX"
|
|
8
|
+
desc "The TeX typesetting system"
|
|
9
|
+
tag 'tex'
|
|
10
|
+
aliases 'TeX', 'LaTeX', 'latex'
|
|
11
|
+
|
|
12
|
+
filenames '*.tex', '*.aux', '*.toc', '*.sty', '*.cls'
|
|
13
|
+
mimetypes 'text/x-tex', 'text/x-latex'
|
|
14
|
+
|
|
15
|
+
def self.detect?(text)
|
|
16
|
+
return true if text =~ /\A\s*\\(documentclass|input|documentstyle|relax|ProvidesPackage|ProvidesClass)/
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
command = /\\([a-z]+|\s+|.)/i
|
|
20
|
+
|
|
21
|
+
state :general do
|
|
22
|
+
rule /%.*$/, Comment
|
|
23
|
+
rule /[{}&_^]/, Punctuation
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
state :root do
|
|
27
|
+
rule /\\\[/, Punctuation, :displaymath
|
|
28
|
+
rule /\\\(/, Punctuation, :inlinemath
|
|
29
|
+
rule /\$\$/, Punctuation, :displaymath
|
|
30
|
+
rule /\$/, Punctuation, :inlinemath
|
|
31
|
+
rule /\\(begin|end)\{.*?\}/, Name::Tag
|
|
32
|
+
|
|
33
|
+
rule /(\\verb)\b(\S)(.*?)(\2)/ do |m|
|
|
34
|
+
groups Name::Builtin, Keyword::Pseudo, Str::Other, Keyword::Pseudo
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
rule command, Keyword, :command
|
|
38
|
+
mixin :general
|
|
39
|
+
rule /[^\\$%&_^{}]+/, Text
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
state :math do
|
|
43
|
+
rule command, Name::Variable
|
|
44
|
+
mixin :general
|
|
45
|
+
rule /[0-9]+/, Num
|
|
46
|
+
rule /[-=!+*\/()\[\]]/, Operator
|
|
47
|
+
rule /[^=!+*\/()\[\]\\$%&_^{}0-9-]+/, Name::Builtin
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
state :inlinemath do
|
|
51
|
+
rule /\\\)/, Punctuation, :pop!
|
|
52
|
+
rule /\$/, Punctuation, :pop!
|
|
53
|
+
mixin :math
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
state :displaymath do
|
|
57
|
+
rule /\\\]/, Punctuation, :pop!
|
|
58
|
+
rule /\$\$/, Punctuation, :pop!
|
|
59
|
+
rule /\$/, Name::Builtin
|
|
60
|
+
mixin :math
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
state :command do
|
|
64
|
+
rule /\[.*?\]/, Name::Attribute
|
|
65
|
+
rule /\*/, Keyword
|
|
66
|
+
rule(//) { pop! }
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class TOML < RegexLexer
|
|
7
|
+
title "TOML"
|
|
8
|
+
desc 'the TOML configuration format (https://github.com/mojombo/toml)'
|
|
9
|
+
tag 'toml'
|
|
10
|
+
|
|
11
|
+
filenames '*.toml'
|
|
12
|
+
mimetypes 'text/x-toml'
|
|
13
|
+
|
|
14
|
+
identifier = /[\w.\S]+/
|
|
15
|
+
|
|
16
|
+
state :basic do
|
|
17
|
+
rule /\s+/, Text
|
|
18
|
+
rule /#.*?$/, Comment
|
|
19
|
+
rule /(true|false)/, Keyword::Constant
|
|
20
|
+
rule /(?<!=)\s*\[[\w\d\S]+\]/, Name::Namespace
|
|
21
|
+
|
|
22
|
+
rule /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z/, Literal::Date
|
|
23
|
+
|
|
24
|
+
rule /(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?j?/, Num::Float
|
|
25
|
+
rule /\d+[eE][+-]?[0-9]+j?/, Num::Float
|
|
26
|
+
rule /\-?\d+/, Num::Integer
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
state :root do
|
|
30
|
+
mixin :basic
|
|
31
|
+
|
|
32
|
+
rule /(#{identifier})(\s*)(=)/ do
|
|
33
|
+
groups Name::Property, Text, Punctuation
|
|
34
|
+
push :value
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
state :value do
|
|
40
|
+
rule /\n/, Text, :pop!
|
|
41
|
+
mixin :content
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
state :content do
|
|
45
|
+
mixin :basic
|
|
46
|
+
rule /"/, Str, :dq
|
|
47
|
+
mixin :esc_str
|
|
48
|
+
rule /\,/, Punctuation
|
|
49
|
+
rule /\[/, Punctuation, :array
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
state :dq do
|
|
53
|
+
rule /"/, Str, :pop!
|
|
54
|
+
mixin :esc_str
|
|
55
|
+
rule /[^\\"]+/, Str
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
state :esc_str do
|
|
59
|
+
rule /\\[0t\tn\n "\\ r]/, Str::Escape
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
state :array do
|
|
63
|
+
mixin :content
|
|
64
|
+
rule /\]/, Punctuation, :pop!
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
load_lexer 'jsx.rb'
|
|
7
|
+
load_lexer 'typescript/common.rb'
|
|
8
|
+
|
|
9
|
+
class TSX < JSX
|
|
10
|
+
include TypescriptCommon
|
|
11
|
+
|
|
12
|
+
title 'TypeScript'
|
|
13
|
+
desc 'tsx'
|
|
14
|
+
|
|
15
|
+
tag 'tsx'
|
|
16
|
+
filenames '*.tsx'
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rouge
|
|
4
|
+
module Lexers
|
|
5
|
+
class Tulip < RegexLexer
|
|
6
|
+
desc 'the tulip programming language (twitter.com/tuliplang)'
|
|
7
|
+
tag 'tulip'
|
|
8
|
+
aliases 'tulip'
|
|
9
|
+
|
|
10
|
+
filenames '*.tlp'
|
|
11
|
+
|
|
12
|
+
mimetypes 'text/x-tulip', 'application/x-tulip'
|
|
13
|
+
|
|
14
|
+
def self.detect?(text)
|
|
15
|
+
return true if text.shebang? 'tulip'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
id = /[a-z][\w-]*/i
|
|
19
|
+
upper_id = /[A-Z][\w-]*/
|
|
20
|
+
|
|
21
|
+
state :comments_and_whitespace do
|
|
22
|
+
rule /\s+/, Text
|
|
23
|
+
rule /#.*?$/, Comment
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
state :root do
|
|
27
|
+
mixin :comments_and_whitespace
|
|
28
|
+
|
|
29
|
+
rule /@#{id}/, Keyword
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
rule /(\\#{id})([{])/ do
|
|
33
|
+
groups Name::Function, Str
|
|
34
|
+
push :nested_string
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
rule /([+]#{id})([{])/ do
|
|
38
|
+
groups Name::Decorator, Str
|
|
39
|
+
push :nested_string
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
rule /\\#{id}/, Name::Function
|
|
43
|
+
rule /[+]#{id}/, Name::Decorator
|
|
44
|
+
|
|
45
|
+
rule /"[{]/, Str, :dqi
|
|
46
|
+
rule /"/, Str, :dq
|
|
47
|
+
|
|
48
|
+
rule /'{/, Str, :nested_string
|
|
49
|
+
rule /'#{id}/, Str
|
|
50
|
+
|
|
51
|
+
rule /[.]#{id}/, Name::Tag
|
|
52
|
+
rule /[$]#{id}?/, Name::Variable
|
|
53
|
+
rule /-#{id}:?/, Name::Label
|
|
54
|
+
rule /%#{id}/, Name::Function
|
|
55
|
+
rule /`#{id}/, Operator::Word
|
|
56
|
+
|
|
57
|
+
rule /[?~%._>,!\[\]:{}()=;\/-]/, Punctuation
|
|
58
|
+
|
|
59
|
+
rule /[0-9]+([.][0-9]+)?/, Num
|
|
60
|
+
|
|
61
|
+
rule /#{id}/, Name
|
|
62
|
+
|
|
63
|
+
rule /</, Comment::Preproc, :angle_brackets
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
state :dq do
|
|
67
|
+
rule /[^\\"]+/, Str
|
|
68
|
+
rule /"/, Str, :pop!
|
|
69
|
+
rule /\\./, Str::Escape
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
state :dqi do
|
|
73
|
+
rule /[$][(]/, Str::Interpol, :interp_root
|
|
74
|
+
rule /[{]/, Str, :dqi
|
|
75
|
+
rule /[}]/, Str, :pop!
|
|
76
|
+
rule /[^{}$]+/, Str
|
|
77
|
+
rule /./, Str
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
state :interp_root do
|
|
81
|
+
rule /[)]/, Str::Interpol, :pop!
|
|
82
|
+
mixin :interp
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
state :interp do
|
|
86
|
+
rule /[(]/, Punctuation, :interp
|
|
87
|
+
rule /[)]/, Punctuation, :pop!
|
|
88
|
+
mixin :root
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
state :nested_string do
|
|
92
|
+
rule /\\./, Str::Escape
|
|
93
|
+
rule(/{/) { token Str; push :nested_string }
|
|
94
|
+
rule(/}/) { token Str; pop! }
|
|
95
|
+
rule(/[^{}\\]+/) { token Str }
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
state :angle_brackets do
|
|
99
|
+
mixin :comments_and_whitespace
|
|
100
|
+
rule />/, Comment::Preproc, :pop!
|
|
101
|
+
rule /[*:]/, Punctuation
|
|
102
|
+
rule /#{upper_id}/, Keyword::Type
|
|
103
|
+
rule /#{id}/, Name::Variable
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
class Turtle < RegexLexer
|
|
7
|
+
title "Turtle/TriG"
|
|
8
|
+
desc "Terse RDF Triple Language, TriG"
|
|
9
|
+
tag 'turtle'
|
|
10
|
+
filenames *%w(*.ttl *.trig)
|
|
11
|
+
mimetypes *%w(
|
|
12
|
+
text/turtle
|
|
13
|
+
application/trig
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
state :root do
|
|
17
|
+
rule /@base\b/, Keyword::Declaration
|
|
18
|
+
rule /@prefix\b/, Keyword::Declaration
|
|
19
|
+
rule /true\b/, Keyword::Constant
|
|
20
|
+
rule /false\b/, Keyword::Constant
|
|
21
|
+
|
|
22
|
+
rule /""".*?"""/m, Literal::String
|
|
23
|
+
rule /"([^"\\]|\\.)*"/, Literal::String
|
|
24
|
+
rule /'''.*?'''/m, Literal::String
|
|
25
|
+
rule /'([^'\\]|\\.)*'/, Literal::String
|
|
26
|
+
|
|
27
|
+
rule /#.*$/, Comment::Single
|
|
28
|
+
|
|
29
|
+
rule /@[^\s,.; ]+/, Name::Attribute
|
|
30
|
+
|
|
31
|
+
rule /[+-]?[0-9]+\.[0-9]*E[+-]?[0-9]+/, Literal::Number::Float
|
|
32
|
+
rule /[+-]?\.[0-9]+E[+-]?[0-9]+/, Literal::Number::Float
|
|
33
|
+
rule /[+-]?[0-9]+E[+-]?[0-9]+/, Literal::Number::Float
|
|
34
|
+
|
|
35
|
+
rule /[+-]?[0-9]*\.[0-9]+?/, Literal::Number::Float
|
|
36
|
+
|
|
37
|
+
rule /[+-]?[0-9]+/, Literal::Number::Integer
|
|
38
|
+
|
|
39
|
+
rule /\./, Punctuation
|
|
40
|
+
rule /,/, Punctuation
|
|
41
|
+
rule /;/, Punctuation
|
|
42
|
+
rule /\(/, Punctuation
|
|
43
|
+
rule /\)/, Punctuation
|
|
44
|
+
rule /\{/, Punctuation
|
|
45
|
+
rule /\}/, Punctuation
|
|
46
|
+
rule /\[/, Punctuation
|
|
47
|
+
rule /\]/, Punctuation
|
|
48
|
+
rule /\^\^/, Punctuation
|
|
49
|
+
|
|
50
|
+
rule /<[^>]*>/, Name::Label
|
|
51
|
+
|
|
52
|
+
rule /base\b/i, Keyword::Declaration
|
|
53
|
+
rule /prefix\b/i, Keyword::Declaration
|
|
54
|
+
rule /GRAPH\b/, Keyword
|
|
55
|
+
rule /a\b/, Keyword
|
|
56
|
+
|
|
57
|
+
rule /\s+/, Text::Whitespace
|
|
58
|
+
|
|
59
|
+
rule /[^:;<>#\@"\(\).\[\]\{\} ]+:/, Name::Namespace
|
|
60
|
+
rule /[^:;<>#\@"\(\).\[\]\{\} ]+/, Name
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
load_lexer 'jinja.rb'
|
|
7
|
+
|
|
8
|
+
class Twig < Jinja
|
|
9
|
+
title "Twig"
|
|
10
|
+
desc "Twig template engine (twig.sensiolabs.org)"
|
|
11
|
+
|
|
12
|
+
tag "twig"
|
|
13
|
+
|
|
14
|
+
filenames '*.twig'
|
|
15
|
+
|
|
16
|
+
mimetypes 'application/x-twig', 'text/html+twig'
|
|
17
|
+
|
|
18
|
+
def self.keywords
|
|
19
|
+
@@keywords ||= %w(as do extends flush from import include use else starts
|
|
20
|
+
ends with without autoescape endautoescape block endblock
|
|
21
|
+
embed endembed filter endfilter for endfor if endif
|
|
22
|
+
macro endmacro sandbox endsandbox set endset
|
|
23
|
+
spaceless endspaceless verbatim endverbatim)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.tests
|
|
27
|
+
@@tests ||= %w(constant defined divisibleby empty even iterable null odd
|
|
28
|
+
sameas)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.pseudo_keywords
|
|
32
|
+
@@pseudo_keywords ||= %w(true false none)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.word_operators
|
|
36
|
+
@@word_operators ||= %w(b-and b-or b-xor is in and or not)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Rouge
|
|
5
|
+
module Lexers
|
|
6
|
+
module TypescriptCommon
|
|
7
|
+
def self.keywords
|
|
8
|
+
@keywords ||= super + Set.new(%w(
|
|
9
|
+
is namespace static private protected public
|
|
10
|
+
implements readonly
|
|
11
|
+
))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.declarations
|
|
15
|
+
@declarations ||= super + Set.new(%w(
|
|
16
|
+
type abstract
|
|
17
|
+
))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.reserved
|
|
21
|
+
@reserved ||= super + Set.new(%w(
|
|
22
|
+
string any void number namespace module
|
|
23
|
+
declare default interface keyof
|
|
24
|
+
))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.builtins
|
|
28
|
+
@builtins ||= super + %w(
|
|
29
|
+
Pick Partial Readonly Record
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|