rouge 2.0.7 → 2.1.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 +4 -4
- data/Gemfile +7 -9
- data/lib/rouge.rb +1 -0
- data/lib/rouge/cli.rb +20 -0
- data/lib/rouge/demos/awk +4 -0
- data/lib/rouge/demos/console +6 -0
- data/lib/rouge/demos/digdag +19 -0
- data/lib/rouge/demos/dot +5 -0
- data/lib/rouge/demos/graphql +17 -0
- data/lib/rouge/demos/hylang +10 -0
- data/lib/rouge/demos/igorpro +9 -0
- data/lib/rouge/demos/irb +4 -0
- data/lib/rouge/demos/irb_output +2 -0
- data/lib/rouge/demos/lasso +12 -0
- data/lib/rouge/demos/mosel +10 -0
- data/lib/rouge/demos/plist +142 -0
- data/lib/rouge/demos/pony +17 -0
- data/lib/rouge/demos/q +2 -0
- data/lib/rouge/demos/sieve +10 -0
- data/lib/rouge/demos/tsx +17 -0
- data/lib/rouge/demos/turtle +0 -0
- data/lib/rouge/demos/wollok +11 -0
- data/lib/rouge/formatters/html_inline.rb +9 -1
- data/lib/rouge/formatters/html_pygments.rb +2 -2
- data/lib/rouge/formatters/html_table.rb +1 -1
- data/lib/rouge/formatters/terminal256.rb +1 -1
- data/lib/rouge/lexer.rb +124 -37
- data/lib/rouge/lexers/abap.rb +2 -2
- data/lib/rouge/lexers/apache.rb +1 -1
- data/lib/rouge/lexers/awk.rb +161 -0
- data/lib/rouge/lexers/clojure.rb +2 -2
- data/lib/rouge/lexers/coffeescript.rb +1 -1
- data/lib/rouge/lexers/console.rb +136 -0
- data/lib/rouge/lexers/csharp.rb +26 -7
- data/lib/rouge/lexers/digdag.rb +72 -0
- data/lib/rouge/lexers/docker.rb +1 -1
- data/lib/rouge/lexers/dot.rb +68 -0
- data/lib/rouge/lexers/elixir.rb +52 -27
- data/lib/rouge/lexers/fortran.rb +56 -28
- data/lib/rouge/lexers/fsharp.rb +1 -1
- data/lib/rouge/lexers/gherkin/keywords.rb +4 -4
- data/lib/rouge/lexers/graphql.rb +243 -0
- data/lib/rouge/lexers/groovy.rb +5 -1
- data/lib/rouge/lexers/haml.rb +19 -24
- data/lib/rouge/lexers/html.rb +48 -4
- data/lib/rouge/lexers/hylang.rb +93 -0
- data/lib/rouge/lexers/igorpro.rb +407 -0
- data/lib/rouge/lexers/irb.rb +66 -0
- data/lib/rouge/lexers/javascript.rb +21 -10
- data/lib/rouge/lexers/json.rb +3 -2
- data/lib/rouge/lexers/json_doc.rb +6 -0
- data/lib/rouge/lexers/jsx.rb +2 -1
- data/lib/rouge/lexers/lasso.rb +217 -0
- data/lib/rouge/lexers/lasso/keywords.yml +446 -0
- data/lib/rouge/lexers/lua.rb +3 -0
- data/lib/rouge/lexers/lua/builtins.rb +1 -1
- data/lib/rouge/lexers/markdown.rb +2 -3
- data/lib/rouge/lexers/matlab/builtins.rb +1 -1
- data/lib/rouge/lexers/moonscript.rb +8 -4
- data/lib/rouge/lexers/mosel.rb +231 -0
- data/lib/rouge/lexers/ocaml.rb +9 -20
- data/lib/rouge/lexers/php.rb +40 -20
- data/lib/rouge/lexers/php/builtins.rb +27 -37
- data/lib/rouge/lexers/plain_text.rb +4 -3
- data/lib/rouge/lexers/plist.rb +49 -0
- data/lib/rouge/lexers/pony.rb +93 -0
- data/lib/rouge/lexers/powershell.rb +36 -0
- data/lib/rouge/lexers/properties.rb +2 -2
- data/lib/rouge/lexers/q.rb +124 -0
- data/lib/rouge/lexers/r.rb +2 -2
- data/lib/rouge/lexers/ruby.rb +26 -13
- data/lib/rouge/lexers/rust.rb +7 -5
- data/lib/rouge/lexers/sed.rb +4 -2
- data/lib/rouge/lexers/shell.rb +38 -16
- data/lib/rouge/lexers/sieve.rb +96 -0
- data/lib/rouge/lexers/sml.rb +3 -2
- data/lib/rouge/lexers/tsx.rb +19 -0
- data/lib/rouge/lexers/turtle.rb +0 -0
- data/lib/rouge/lexers/typescript.rb +3 -27
- data/lib/rouge/lexers/typescript/common.rb +33 -0
- data/lib/rouge/lexers/viml/keywords.rb +2 -2
- data/lib/rouge/lexers/wollok.rb +107 -0
- data/lib/rouge/lexers/xml.rb +1 -1
- data/lib/rouge/lexers/yaml.rb +4 -1
- data/lib/rouge/regex_lexer.rb +1 -0
- data/lib/rouge/template_lexer.rb +3 -5
- data/lib/rouge/theme.rb +14 -4
- data/lib/rouge/themes/igor_pro.rb +20 -0
- data/lib/rouge/themes/pastie.rb +69 -0
- data/lib/rouge/themes/thankful_eyes.rb +8 -5
- data/lib/rouge/version.rb +1 -1
- metadata +40 -6
- data/lib/rouge/demos/shell_session +0 -10
- data/lib/rouge/lexers/shell_session.rb +0 -29
data/lib/rouge/lexers/r.rb
CHANGED
data/lib/rouge/lexers/ruby.rb
CHANGED
@@ -108,12 +108,14 @@ module Rouge
|
|
108
108
|
)
|
109
109
|
|
110
110
|
keywords_pseudo = %w(
|
111
|
-
|
112
|
-
|
111
|
+
loop include extend raise
|
112
|
+
alias_method attr catch throw private module_function
|
113
113
|
public protected true false nil __FILE__ __LINE__
|
114
114
|
)
|
115
115
|
|
116
116
|
builtins_g = %w(
|
117
|
+
attr_reader attr_writer attr_accessor
|
118
|
+
|
117
119
|
__id__ __send__ abort ancestors at_exit autoload binding callcc
|
118
120
|
caller catch chomp chop class_eval class_variables clone
|
119
121
|
const_defined\? const_get const_missing const_set constants
|
@@ -150,7 +152,7 @@ module Rouge
|
|
150
152
|
rule /\n\s*/m, Text, :expr_start
|
151
153
|
rule /#.*$/, Comment::Single
|
152
154
|
|
153
|
-
rule %r(=begin\b
|
155
|
+
rule %r(=begin\b.*?\n=end\b)m, Comment::Multiline
|
154
156
|
end
|
155
157
|
|
156
158
|
state :inline_whitespace do
|
@@ -164,6 +166,7 @@ module Rouge
|
|
164
166
|
rule /0_?[0-7]+(?:_[0-7]+)*/, Num::Oct
|
165
167
|
rule /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/, Num::Hex
|
166
168
|
rule /0b[01]+(?:_[01]+)*/, Num::Bin
|
169
|
+
rule /\d+\.\d+(e[\+\-]?\d+)?/, Num::Float
|
167
170
|
rule /[\d]+(?:_\d+)*/, Num::Integer
|
168
171
|
|
169
172
|
# names
|
@@ -204,6 +207,10 @@ module Rouge
|
|
204
207
|
|
205
208
|
mixin :has_heredocs
|
206
209
|
|
210
|
+
# `..` and `...` for ranges must have higher priority than `.`
|
211
|
+
# Otherwise, they will be parsed as :method_call
|
212
|
+
rule /\.{2,3}/, Operator, :expr_start
|
213
|
+
|
207
214
|
rule /[A-Z][a-zA-Z0-9_]*/, Name::Constant, :method_call
|
208
215
|
rule /(\.|::)(\s*)([a-z_]\w*[!?]?|[*%&^`~+-\/\[<>=])/ do
|
209
216
|
groups Punctuation, Text, Name::Function
|
@@ -212,7 +219,7 @@ module Rouge
|
|
212
219
|
|
213
220
|
rule /[a-zA-Z_]\w*[?!]/, Name, :expr_start
|
214
221
|
rule /[a-zA-Z_]\w*/, Name, :method_call
|
215
|
-
rule /\*\*|<<?|>>?|>=|<=|<=>|=~|={3}
|
222
|
+
rule /\*\*|<<?|>>?|>=|<=|<=>|=~|={3}|!~|&&?|\|\||\./,
|
216
223
|
Operator, :expr_start
|
217
224
|
rule /[-+\/*%=<>&!^|~]=?/, Operator, :expr_start
|
218
225
|
rule(/[?]/) { token Punctuation; push :ternary; push :expr_start }
|
@@ -247,25 +254,31 @@ module Rouge
|
|
247
254
|
state :resolve_heredocs do
|
248
255
|
mixin :string_intp_escaped
|
249
256
|
|
250
|
-
rule
|
257
|
+
rule /\n/, Str::Heredoc, :test_heredoc
|
258
|
+
rule /[#\\\n]/, Str::Heredoc
|
259
|
+
rule /[^#\\\n]+/, Str::Heredoc
|
260
|
+
end
|
261
|
+
|
262
|
+
state :test_heredoc do
|
263
|
+
rule /[^#\\\n]*$/ do |m|
|
251
264
|
tolerant, heredoc_name = @heredoc_queue.first
|
252
|
-
check = tolerant ? m[
|
265
|
+
check = tolerant ? m[0].strip : m[0].rstrip
|
253
266
|
|
254
267
|
# check if we found the end of the heredoc
|
255
|
-
|
268
|
+
puts " end heredoc check #{check.inspect} = #{heredoc_name.inspect}" if @debug
|
269
|
+
if check == heredoc_name
|
256
270
|
@heredoc_queue.shift
|
257
271
|
# if there's no more, we're done looking.
|
258
272
|
pop! if @heredoc_queue.empty?
|
259
|
-
Name::Constant
|
273
|
+
token Name::Constant
|
260
274
|
else
|
261
|
-
Str::Heredoc
|
275
|
+
token Str::Heredoc
|
262
276
|
end
|
263
277
|
|
264
|
-
|
278
|
+
pop!
|
265
279
|
end
|
266
280
|
|
267
|
-
rule
|
268
|
-
rule /[^#\\\n]+/, Str::Heredoc
|
281
|
+
rule(//) { pop! }
|
269
282
|
end
|
270
283
|
|
271
284
|
state :funcname do
|
@@ -301,7 +314,7 @@ module Rouge
|
|
301
314
|
goto :expr_start
|
302
315
|
end
|
303
316
|
|
304
|
-
rule /[A-Z_]\w*/, Name::Class
|
317
|
+
rule /[A-Z_]\w*/, Name::Class, :pop!
|
305
318
|
|
306
319
|
rule(//) { pop! }
|
307
320
|
end
|
data/lib/rouge/lexers/rust.rb
CHANGED
@@ -58,17 +58,18 @@ module Rouge
|
|
58
58
|
mixin :whitespace
|
59
59
|
rule /\s+/, Text
|
60
60
|
rule /#\[/ do
|
61
|
-
token
|
61
|
+
token Name::Decorator; push :attribute
|
62
62
|
end
|
63
63
|
rule(//) { pop! }
|
64
|
+
rule /#\s[^\n]*/, Comment::Preproc
|
64
65
|
end
|
65
66
|
|
66
67
|
state :attribute do
|
67
68
|
mixin :whitespace
|
68
69
|
mixin :has_literals
|
69
|
-
rule /[(,)=]/,
|
70
|
-
rule /\]/,
|
71
|
-
rule id,
|
70
|
+
rule /[(,)=]/, Name::Decorator
|
71
|
+
rule /\]/, Name::Decorator, :pop!
|
72
|
+
rule id, Name::Decorator
|
72
73
|
end
|
73
74
|
|
74
75
|
state :whitespace do
|
@@ -86,7 +87,7 @@ module Rouge
|
|
86
87
|
rule %r([=-]>), Keyword
|
87
88
|
rule %r(<->), Keyword
|
88
89
|
rule /[()\[\]{}|,:;]/, Punctuation
|
89
|
-
rule /[*!@~&+%^<>=-\?]/, Operator
|
90
|
+
rule /[*!@~&+%^<>=-\?]|\.{2,3}/, Operator
|
90
91
|
|
91
92
|
rule /([.]\s*)?#{id}(?=\s*[(])/m, Name::Function
|
92
93
|
rule /[.]\s*#{id}/, Name::Property
|
@@ -98,6 +99,7 @@ module Rouge
|
|
98
99
|
rule /\bmacro_rules!/, Name::Decorator, :macro_rules
|
99
100
|
rule /#{id}!/, Name::Decorator, :macro
|
100
101
|
|
102
|
+
rule /'#{id}/, Name::Variable
|
101
103
|
rule /#{id}/ do |m|
|
102
104
|
name = m[0]
|
103
105
|
if self.class.builtins.include? name
|
data/lib/rouge/lexers/sed.rb
CHANGED
@@ -24,10 +24,12 @@ module Rouge
|
|
24
24
|
end
|
25
25
|
|
26
26
|
state :brackets do
|
27
|
-
rule
|
27
|
+
rule /\^/ do
|
28
28
|
token Punctuation
|
29
29
|
goto :brackets_int
|
30
30
|
end
|
31
|
+
|
32
|
+
rule(//) { goto :brackets_int }
|
31
33
|
end
|
32
34
|
|
33
35
|
state :brackets_int do
|
@@ -133,7 +135,7 @@ module Rouge
|
|
133
135
|
rule /\d+/, addr_tok
|
134
136
|
rule /[$,~+!]/, addr_tok
|
135
137
|
|
136
|
-
rule %r((/)(
|
138
|
+
rule %r((/)((?:\\.|.)*?)(/)) do |m|
|
137
139
|
token addr_tok, m[1]; delegate regex, m[2]; token addr_tok, m[3]
|
138
140
|
end
|
139
141
|
|
data/lib/rouge/lexers/shell.rb
CHANGED
@@ -29,6 +29,8 @@ module Rouge
|
|
29
29
|
local logout popd printf pushd pwd read readonly set shift
|
30
30
|
shopt source suspend test time times trap true type typeset
|
31
31
|
ulimit umask unalias unset wait
|
32
|
+
|
33
|
+
ls tar cat grep sudo
|
32
34
|
).join('|')
|
33
35
|
|
34
36
|
state :basic do
|
@@ -37,30 +39,47 @@ module Rouge
|
|
37
39
|
rule /\b(#{KEYWORDS})\s*\b/, Keyword
|
38
40
|
rule /\bcase\b/, Keyword, :case
|
39
41
|
|
40
|
-
rule /\b(#{BUILTINS})\s*\b(
|
41
|
-
|
42
|
-
rule /^\S*[\$%>#] +/, Generic::Prompt
|
42
|
+
rule /\b(#{BUILTINS})\s*\b(?!(\.|-))/, Name::Builtin
|
43
|
+
rule /[.](?=\s)/, Name::Builtin
|
43
44
|
|
44
45
|
rule /(\b\w+)(=)/ do |m|
|
45
46
|
groups Name::Variable, Operator
|
46
47
|
end
|
47
48
|
|
48
|
-
rule /[\[\]{}()
|
49
|
+
rule /[\[\]{}()!=>]/, Operator
|
49
50
|
rule /&&|\|\|/, Operator
|
50
51
|
|
51
|
-
|
52
|
-
rule
|
53
|
-
|
54
|
-
|
55
|
-
|
52
|
+
# here-string
|
53
|
+
rule /<<</, Operator
|
54
|
+
|
55
|
+
rule /(<<-?)(\s*)(\'?)(\\?)(\w+)(\3)/ do |m|
|
56
|
+
groups Operator, Text, Str::Heredoc, Str::Heredoc, Name::Constant, Str::Heredoc
|
57
|
+
@heredocstr = Regexp.escape(m[5])
|
58
|
+
push :heredoc
|
59
|
+
end
|
60
|
+
end
|
56
61
|
|
57
|
-
|
58
|
-
|
59
|
-
|
62
|
+
state :heredoc do
|
63
|
+
rule /\n/, Str::Heredoc, :heredoc_nl
|
64
|
+
rule /[^$\n]+/, Str::Heredoc
|
65
|
+
mixin :interp
|
66
|
+
rule /[$]/, Str::Heredoc
|
67
|
+
end
|
68
|
+
|
69
|
+
state :heredoc_nl do
|
70
|
+
rule /\s*(\w+)\s*\n/ do |m|
|
71
|
+
if m[1] == @heredocstr
|
72
|
+
token Name::Constant
|
73
|
+
pop! 2
|
74
|
+
else
|
75
|
+
token Str::Heredoc
|
60
76
|
end
|
61
77
|
end
|
78
|
+
|
79
|
+
rule(//) { pop! }
|
62
80
|
end
|
63
81
|
|
82
|
+
|
64
83
|
state :double_quotes do
|
65
84
|
# NB: "abc$" is literally the string abc$.
|
66
85
|
# Here we prevent :interp from interpreting $" as a variable.
|
@@ -95,8 +114,10 @@ module Rouge
|
|
95
114
|
|
96
115
|
rule /\*/, Keyword
|
97
116
|
|
98
|
-
rule /;/,
|
99
|
-
|
117
|
+
rule /;/, Punctuation
|
118
|
+
|
119
|
+
rule /--?[\w-]+/, Name::Tag
|
120
|
+
rule /[^=\*\s{}()$"'`;\\<]+/, Text
|
100
121
|
rule /\d+(?= |\Z)/, Num
|
101
122
|
rule /</, Text
|
102
123
|
mixin :interp
|
@@ -117,8 +138,8 @@ module Rouge
|
|
117
138
|
|
118
139
|
state :math do
|
119
140
|
rule /\)\)/, Keyword, :pop!
|
120
|
-
rule %r([
|
121
|
-
rule /\d
|
141
|
+
rule %r([-+*/%^|&!]|\*\*|\|\|), Operator
|
142
|
+
rule /\d+(#\w+)?/, Num
|
122
143
|
mixin :root
|
123
144
|
end
|
124
145
|
|
@@ -147,6 +168,7 @@ module Rouge
|
|
147
168
|
rule /\${#?/, Keyword, :curly
|
148
169
|
rule /`/, Str::Backtick, :backticks
|
149
170
|
rule /\$#?(\w+|.)/, Name::Variable
|
171
|
+
rule /\$[*@]/, Name::Variable
|
150
172
|
end
|
151
173
|
|
152
174
|
state :root do
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class Sieve < RegexLexer
|
6
|
+
title "Sieve"
|
7
|
+
desc "mail filtering language"
|
8
|
+
|
9
|
+
tag 'sieve'
|
10
|
+
filenames '*.sieve'
|
11
|
+
|
12
|
+
id = /:?[a-zA-Z_][a-zA-Z0-9_]*/
|
13
|
+
|
14
|
+
# control commands (rfc5228 § 3)
|
15
|
+
def self.controls
|
16
|
+
@controls ||= %w(if elsif else require stop)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.actions
|
20
|
+
@actions ||= Set.new(
|
21
|
+
# action commands (rfc5228 § 2.9)
|
22
|
+
%w(keep fileinto redirect discard) +
|
23
|
+
# Editheader Extension (rfc5293)
|
24
|
+
%w(addheader deleteheader) +
|
25
|
+
# Reject and Extended Reject Extensions (rfc5429)
|
26
|
+
%w(reject ereject) +
|
27
|
+
# Extension for Notifications (rfc5435)
|
28
|
+
%w(notify) +
|
29
|
+
# Imap4flags Extension (rfc5232)
|
30
|
+
%w(setflag addflag removeflag) +
|
31
|
+
# Vacation Extension (rfc5230)
|
32
|
+
%w(vacation) +
|
33
|
+
# MIME Part Tests, Iteration, Extraction, Replacement, and Enclosure (rfc5703)
|
34
|
+
%w(replace enclose extracttext)
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.tests
|
39
|
+
@tests ||= Set.new(
|
40
|
+
# test commands (rfc5228 § 5)
|
41
|
+
%w(address allof anyof exists false header not size true) +
|
42
|
+
# Body Extension (rfc5173)
|
43
|
+
%w(body) +
|
44
|
+
# Imap4flags Extension (rfc5232)
|
45
|
+
%w(hasflag) +
|
46
|
+
# Spamtest and Virustest Extensions (rfc5235)
|
47
|
+
%w(spamtest virustest) +
|
48
|
+
# Date and Index Extensions (rfc5260)
|
49
|
+
%w(date currentdate) +
|
50
|
+
# Extension for Notifications (rfc5435)
|
51
|
+
%w(valid_notify_method notify_method_capability) +
|
52
|
+
# Extensions for Checking Mailbox Status and Accessing Mailbox
|
53
|
+
# Metadata (rfc5490)
|
54
|
+
%w(mailboxexists metadata metadataexists servermetadata servermetadataexists)
|
55
|
+
)
|
56
|
+
end
|
57
|
+
|
58
|
+
state :comments_and_whitespace do
|
59
|
+
rule /\s+/, Text
|
60
|
+
rule %r(#.*?\n), Comment::Single
|
61
|
+
rule %r(/(\\\n)?[*].*?[*](\\\n)?/)m, Comment::Multiline
|
62
|
+
end
|
63
|
+
|
64
|
+
state :string do
|
65
|
+
rule /\\./, Str::Escape
|
66
|
+
rule /"/, Str::Double, :pop!
|
67
|
+
# Variables Extension (rfc5229)
|
68
|
+
rule /\${(?:[0-9][.0-9]*|[a-zA-Z_][.a-zA-Z0-9_]*)}/, Str::Interpol
|
69
|
+
rule /./, Str::Double
|
70
|
+
end
|
71
|
+
|
72
|
+
state :root do
|
73
|
+
mixin :comments_and_whitespace
|
74
|
+
|
75
|
+
rule /[\[\](),;{}]/, Punctuation
|
76
|
+
|
77
|
+
rule id do |m|
|
78
|
+
if self.class.controls.include? m[0]
|
79
|
+
token Keyword
|
80
|
+
elsif self.class.tests.include? m[0]
|
81
|
+
token Name::Variable
|
82
|
+
elsif self.class.actions.include? m[0]
|
83
|
+
token Name::Function
|
84
|
+
elsif m[0] =~ /^:/ # tags like :contains, :matches etc.
|
85
|
+
token Operator
|
86
|
+
else
|
87
|
+
token Name::Other
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
rule /"/, Str::Double, :string
|
92
|
+
rule /[0-9]+[KMG]/, Num::Integer
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
data/lib/rouge/lexers/sml.rb
CHANGED
@@ -41,7 +41,8 @@ module Rouge
|
|
41
41
|
rule /[(\[{]/, Punctuation, :main
|
42
42
|
rule /[)\]}]/, Punctuation, :pop!
|
43
43
|
|
44
|
-
rule /\b(let|if|local)\b(?!')
|
44
|
+
rule /\b(let|if|local)\b(?!')/ do
|
45
|
+
token Keyword::Reserved
|
45
46
|
push; push
|
46
47
|
end
|
47
48
|
|
@@ -190,7 +191,7 @@ module Rouge
|
|
190
191
|
end
|
191
192
|
|
192
193
|
state :breakout do
|
193
|
-
rule /(?=\
|
194
|
+
rule /(?=\b(#{SML.keywords.to_a.join('|')})\b(?!'))/ do
|
194
195
|
pop!
|
195
196
|
end
|
196
197
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
load_lexer 'jsx.rb'
|
6
|
+
load_lexer 'typescript/common.rb'
|
7
|
+
|
8
|
+
class TSX < JSX
|
9
|
+
include TypescriptCommon
|
10
|
+
|
11
|
+
title 'TypeScript'
|
12
|
+
desc 'tsx'
|
13
|
+
|
14
|
+
tag 'tsx'
|
15
|
+
filenames '*.tsx'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
data/lib/rouge/lexers/turtle.rb
CHANGED
File without changes
|
@@ -3,8 +3,11 @@
|
|
3
3
|
module Rouge
|
4
4
|
module Lexers
|
5
5
|
load_lexer 'javascript.rb'
|
6
|
+
load_lexer 'typescript/common.rb'
|
6
7
|
|
7
8
|
class Typescript < Javascript
|
9
|
+
include TypescriptCommon
|
10
|
+
|
8
11
|
title "TypeScript"
|
9
12
|
desc "TypeScript, a superset of JavaScript"
|
10
13
|
|
@@ -14,33 +17,6 @@ module Rouge
|
|
14
17
|
filenames '*.ts', '*.d.ts'
|
15
18
|
|
16
19
|
mimetypes 'text/typescript'
|
17
|
-
|
18
|
-
def self.keywords
|
19
|
-
@keywords ||= super + Set.new(%w(
|
20
|
-
import export from as is
|
21
|
-
namespace new static private protected public
|
22
|
-
super async await extends implements readonly
|
23
|
-
))
|
24
|
-
end
|
25
|
-
|
26
|
-
def self.declarations
|
27
|
-
@declarations ||= super + Set.new(%w(
|
28
|
-
const type constructor abstract
|
29
|
-
))
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.reserved
|
33
|
-
@reserved ||= super + Set.new(%w(
|
34
|
-
string any number namespace module
|
35
|
-
declare default interface
|
36
|
-
))
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.builtins
|
40
|
-
@builtins ||= super + %w(
|
41
|
-
Promise Set Map WeakSet WeakMap Symbol
|
42
|
-
)
|
43
|
-
end
|
44
20
|
end
|
45
21
|
end
|
46
22
|
end
|