rouge 1.10.1 → 1.11.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/lib/rouge/cli.rb +1 -1
- data/lib/rouge/demos/actionscript +4 -0
- data/lib/rouge/demos/apiblueprint +33 -0
- data/lib/rouge/demos/biml +38 -0
- data/lib/rouge/demos/ceylon +7 -0
- data/lib/rouge/demos/cmake +7 -0
- data/lib/rouge/demos/coq +11 -0
- data/lib/rouge/demos/d +16 -0
- data/lib/rouge/demos/eiffel +30 -0
- data/lib/rouge/demos/fortran +22 -0
- data/lib/rouge/demos/gradle +10 -0
- data/lib/rouge/demos/jinja +9 -0
- data/lib/rouge/demos/jsonnet +28 -0
- data/lib/rouge/demos/julia +11 -0
- data/lib/rouge/demos/nasm +26 -0
- data/lib/rouge/demos/objective_c +4 -0
- data/lib/rouge/demos/protobuf +5 -0
- data/lib/rouge/demos/shell_session +10 -0
- data/lib/rouge/demos/smarty +12 -0
- data/lib/rouge/demos/tap +5 -0
- data/lib/rouge/demos/twig +9 -0
- data/lib/rouge/demos/typescript +1 -0
- data/lib/rouge/demos/verilog +27 -0
- data/lib/rouge/demos/viml +14 -5
- data/lib/rouge/formatters/html_wrapper.rb +11 -0
- data/lib/rouge/formatters/terminal256.rb +1 -1
- data/lib/rouge/lexer.rb +4 -2
- data/lib/rouge/lexers/actionscript.rb +195 -0
- data/lib/rouge/lexers/apache.rb +23 -20
- data/lib/rouge/lexers/apache/keywords.yml +721 -410
- data/lib/rouge/lexers/apiblueprint.rb +51 -0
- data/lib/rouge/lexers/biml.rb +41 -0
- data/lib/rouge/lexers/c.rb +7 -2
- data/lib/rouge/lexers/ceylon.rb +123 -0
- data/lib/rouge/lexers/clojure.rb +1 -1
- data/lib/rouge/lexers/cmake.rb +206 -0
- data/lib/rouge/lexers/coffeescript.rb +1 -1
- data/lib/rouge/lexers/coq.rb +187 -0
- data/lib/rouge/lexers/cpp.rb +12 -1
- data/lib/rouge/lexers/csharp.rb +12 -5
- data/lib/rouge/lexers/css.rb +2 -0
- data/lib/rouge/lexers/d.rb +176 -0
- data/lib/rouge/lexers/diff.rb +9 -9
- data/lib/rouge/lexers/eiffel.rb +65 -0
- data/lib/rouge/lexers/fortran.rb +142 -0
- data/lib/rouge/lexers/gradle.rb +37 -0
- data/lib/rouge/lexers/groovy.rb +2 -2
- data/lib/rouge/lexers/ini.rb +2 -2
- data/lib/rouge/lexers/java.rb +11 -8
- data/lib/rouge/lexers/javascript.rb +2 -1
- data/lib/rouge/lexers/jinja.rb +137 -0
- data/lib/rouge/lexers/jsonnet.rb +151 -0
- data/lib/rouge/lexers/julia.rb +172 -0
- data/lib/rouge/lexers/markdown.rb +1 -0
- data/lib/rouge/lexers/nasm.rb +203 -0
- data/lib/rouge/lexers/objective_c.rb +11 -0
- data/lib/rouge/lexers/php.rb +1 -1
- data/lib/rouge/lexers/powershell.rb +1 -1
- data/lib/rouge/lexers/protobuf.rb +70 -0
- data/lib/rouge/lexers/python.rb +23 -0
- data/lib/rouge/lexers/r.rb +53 -20
- data/lib/rouge/lexers/ruby.rb +4 -4
- data/lib/rouge/lexers/rust.rb +2 -2
- data/lib/rouge/lexers/shell_session.rb +29 -0
- data/lib/rouge/lexers/smarty.rb +91 -0
- data/lib/rouge/lexers/sql.rb +1 -1
- data/lib/rouge/lexers/swift.rb +20 -5
- data/lib/rouge/lexers/tap.rb +91 -0
- data/lib/rouge/lexers/twig.rb +37 -0
- data/lib/rouge/lexers/typescript.rb +46 -0
- data/lib/rouge/lexers/verilog.rb +164 -0
- data/lib/rouge/regex_lexer.rb +1 -1
- data/lib/rouge/version.rb +1 -1
- data/rouge.gemspec +1 -1
- metadata +47 -6
- data/lib/rouge/formatters/html_inline.rb +0 -20
- data/lib/rouge/formatters/html_linewise.rb +0 -31
@@ -80,6 +80,7 @@ module Rouge
|
|
80
80
|
rule /[?]/, Punctuation, :ternary
|
81
81
|
rule /\[/, Punctuation, :message
|
82
82
|
rule /@\[/, Punctuation, :array_literal
|
83
|
+
rule /@\{/, Punctuation, :dictionary_literal
|
83
84
|
end
|
84
85
|
|
85
86
|
state :ternary do
|
@@ -89,6 +90,7 @@ module Rouge
|
|
89
90
|
|
90
91
|
state :message_shared do
|
91
92
|
rule /\]/, Punctuation, :pop!
|
93
|
+
rule /\{/, Punctuation, :pop!
|
92
94
|
rule /;/, Error
|
93
95
|
|
94
96
|
mixin :statement
|
@@ -109,8 +111,10 @@ module Rouge
|
|
109
111
|
end
|
110
112
|
|
111
113
|
state :message_with_args do
|
114
|
+
rule /\{/, Punctuation, :function
|
112
115
|
rule /(#{id})(\s*)(:)/ do
|
113
116
|
groups(Name::Function, Text, Punctuation)
|
117
|
+
pop!
|
114
118
|
end
|
115
119
|
|
116
120
|
mixin :message_shared
|
@@ -122,6 +126,12 @@ module Rouge
|
|
122
126
|
mixin :statements
|
123
127
|
end
|
124
128
|
|
129
|
+
state :dictionary_literal do
|
130
|
+
rule /}/, Punctuation, :pop!
|
131
|
+
rule /,/, Punctuation
|
132
|
+
mixin :statements
|
133
|
+
end
|
134
|
+
|
125
135
|
state :classname do
|
126
136
|
mixin :whitespace
|
127
137
|
|
@@ -137,6 +147,7 @@ module Rouge
|
|
137
147
|
Punctuation, Text,
|
138
148
|
Name::Label, Text,
|
139
149
|
Punctuation)
|
150
|
+
pop!
|
140
151
|
end
|
141
152
|
|
142
153
|
rule id, Name::Class, :pop!
|
data/lib/rouge/lexers/php.rb
CHANGED
@@ -7,7 +7,7 @@ module Rouge
|
|
7
7
|
desc "The PHP scripting language (php.net)"
|
8
8
|
tag 'php'
|
9
9
|
aliases 'php', 'php3', 'php4', 'php5'
|
10
|
-
filenames '*.php', '*.php[
|
10
|
+
filenames '*.php', '*.php[345t]','*.phtml',
|
11
11
|
# Support Drupal file extensions, see:
|
12
12
|
# https://github.com/gitlabhq/gitlabhq/issues/8900
|
13
13
|
'*.module', '*.inc', '*.profile', '*.install', '*.test'
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class Protobuf < RegexLexer
|
6
|
+
title 'Protobuf'
|
7
|
+
desc 'Google\'s language-neutral, platform-neutral, extensible mechanism for serializing structured data'
|
8
|
+
tag 'protobuf'
|
9
|
+
aliases 'proto'
|
10
|
+
filenames '*.proto'
|
11
|
+
mimetypes 'text/x-proto'
|
12
|
+
|
13
|
+
kw = /\b(ctype|default|extensions|import|max|oneof|option|optional|packed|repeated|required|returns|rpc|to)\b/
|
14
|
+
datatype = /\b(bool|bytes|double|fixed32|fixed64|float|int32|int64|sfixed32|sfixed64|sint32|sint64|string|uint32|uint64)\b/
|
15
|
+
|
16
|
+
state :root do
|
17
|
+
rule /[\s]+/, Text
|
18
|
+
rule /[,;{}\[\]()]/, Punctuation
|
19
|
+
rule /\/(\\\n)?\/(\n|(.|\n)*?[^\\]\n)/, Comment::Single
|
20
|
+
rule /\/(\\\n)?\*(.|\n)*?\*(\\\n)?\//, Comment::Multiline
|
21
|
+
rule kw, Keyword
|
22
|
+
rule datatype, Keyword::Type
|
23
|
+
rule /true|false/, Keyword::Constant
|
24
|
+
rule /(package)(\s+)/ do
|
25
|
+
groups Keyword::Namespace, Text
|
26
|
+
push :package
|
27
|
+
end
|
28
|
+
|
29
|
+
rule /(message|extend)(\s+)/ do
|
30
|
+
groups Keyword::Declaration, Text
|
31
|
+
push :message
|
32
|
+
end
|
33
|
+
|
34
|
+
rule /(enum|group|service)(\s+)/ do
|
35
|
+
groups Keyword::Declaration, Text
|
36
|
+
push :type
|
37
|
+
end
|
38
|
+
|
39
|
+
rule /".*?"/, Str
|
40
|
+
rule /'.*?'/, Str
|
41
|
+
rule /(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*/, Num::Float
|
42
|
+
rule /(\d+\.\d*|\.\d+|\d+[fF])[fF]?/, Num::Float
|
43
|
+
rule /(\-?(inf|nan))\b/, Num::Float
|
44
|
+
rule /0x[0-9a-fA-F]+[LlUu]*/, Num::Hex
|
45
|
+
rule /0[0-7]+[LlUu]*/, Num::Oct
|
46
|
+
rule /\d+[LlUu]*/, Num::Integer
|
47
|
+
rule /[+-=]/, Operator
|
48
|
+
rule /([a-zA-Z_][\w.]*)([ \t]*)(=)/ do
|
49
|
+
groups Name::Attribute, Text, Operator
|
50
|
+
end
|
51
|
+
rule /[a-zA-Z_][\w.]*/, Name
|
52
|
+
end
|
53
|
+
|
54
|
+
state :package do
|
55
|
+
rule /[a-zA-Z_]\w*/, Name::Namespace, :pop!
|
56
|
+
rule (//) { pop! }
|
57
|
+
end
|
58
|
+
|
59
|
+
state :message do
|
60
|
+
rule /[a-zA-Z_]\w*/, Name::Class, :pop!
|
61
|
+
rule (//) { pop! }
|
62
|
+
end
|
63
|
+
|
64
|
+
state :type do
|
65
|
+
rule /[a-zA-Z_]\w*/, Name, :pop!
|
66
|
+
rule (//) { pop! }
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/rouge/lexers/python.rb
CHANGED
@@ -85,6 +85,16 @@ module Rouge
|
|
85
85
|
push :classname
|
86
86
|
end
|
87
87
|
|
88
|
+
rule /(yield)((?:\s|\\\s)+)/ do
|
89
|
+
groups Keyword, Text
|
90
|
+
push :raise
|
91
|
+
end
|
92
|
+
|
93
|
+
rule /(raise)((?:\s|\\\s)+)/ do
|
94
|
+
groups Keyword, Text
|
95
|
+
push :raise
|
96
|
+
end
|
97
|
+
|
88
98
|
rule /(from)((?:\s|\\\s)+)/ do
|
89
99
|
groups Keyword::Namespace, Text
|
90
100
|
push :fromimport
|
@@ -141,6 +151,19 @@ module Rouge
|
|
141
151
|
rule identifier, Name::Class, :pop!
|
142
152
|
end
|
143
153
|
|
154
|
+
state :raise do
|
155
|
+
rule /from\b/, Keyword
|
156
|
+
rule /raise\b/, Keyword
|
157
|
+
rule /yield\b/, Keyword
|
158
|
+
rule /\n/, Text, :pop!
|
159
|
+
rule /;/, Punctuation, :pop!
|
160
|
+
mixin :root
|
161
|
+
end
|
162
|
+
|
163
|
+
state :yield do
|
164
|
+
mixin :raise
|
165
|
+
end
|
166
|
+
|
144
167
|
state :import do
|
145
168
|
# non-line-terminating whitespace
|
146
169
|
rule /(?:[ \t]|\\\n)+/, Text
|
data/lib/rouge/lexers/r.rb
CHANGED
@@ -7,49 +7,82 @@ module Rouge
|
|
7
7
|
desc 'The R statistics language (r-project.org)'
|
8
8
|
tag 'r'
|
9
9
|
aliases 'r', 'R', 's', 'S'
|
10
|
-
filenames '*.R', '.Rhistory', '.Rprofile'
|
10
|
+
filenames '*.R', '*.r', '.Rhistory', '.Rprofile'
|
11
11
|
mimetypes 'text/x-r-source', 'text/x-r', 'text/x-R'
|
12
12
|
|
13
13
|
mimetypes 'text/x-r', 'application/x-r'
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
KEYWORDS = %w(if else for while repeat in next break function)
|
16
|
+
|
17
|
+
KEYWORD_CONSTANTS = %w(
|
18
|
+
NULL Inf TRUE FALSE NaN NA
|
19
|
+
NA_integer_ NA_real_ NA_complex_ NA_character_
|
20
|
+
)
|
21
|
+
|
22
|
+
BUILTIN_CONSTANTS = %w(LETTERS letters month.abb month.name pi T F)
|
23
|
+
|
24
|
+
# These are all the functions in `base` that are implemented as a
|
25
|
+
# `.Primitive`, minus those functions that are also keywords.
|
26
|
+
PRIMITIVE_FUNCTIONS = %w(
|
27
|
+
abs acos acosh all any anyNA Arg as.call as.character
|
28
|
+
as.complex as.double as.environment as.integer as.logical
|
29
|
+
as.null.default as.numeric as.raw asin asinh atan atanh attr
|
30
|
+
attributes baseenv browser c call ceiling class Conj cos cosh
|
31
|
+
cospi cummax cummin cumprod cumsum digamma dim dimnames
|
32
|
+
emptyenv exp expression floor forceAndCall gamma gc.time
|
33
|
+
globalenv Im interactive invisible is.array is.atomic is.call
|
34
|
+
is.character is.complex is.double is.environment is.expression
|
35
|
+
is.finite is.function is.infinite is.integer is.language
|
36
|
+
is.list is.logical is.matrix is.na is.name is.nan is.null
|
37
|
+
is.numeric is.object is.pairlist is.raw is.recursive is.single
|
38
|
+
is.symbol lazyLoadDBfetch length lgamma list log max min
|
39
|
+
missing Mod names nargs nzchar oldClass on.exit pos.to.env
|
40
|
+
proc.time prod quote range Re rep retracemem return round
|
41
|
+
seq_along seq_len seq.int sign signif sin sinh sinpi sqrt
|
42
|
+
standardGeneric substitute sum switch tan tanh tanpi tracemem
|
43
|
+
trigamma trunc unclass untracemem UseMethod xtfrm
|
44
|
+
)
|
20
45
|
|
21
46
|
def self.analyze_text(text)
|
22
47
|
return 1 if text.shebang? 'Rscript'
|
23
48
|
end
|
24
49
|
|
25
50
|
state :root do
|
51
|
+
rule /#'.*?\n/, Comment::Doc
|
26
52
|
rule /#.*?\n/, Comment::Single
|
27
|
-
rule /\s+/m, Text
|
28
|
-
rule /[.]?[a-zA-Z_][\w.]*/ do |m|
|
29
|
-
if self.class.keywords.include? m[0]
|
30
|
-
token Keyword
|
31
|
-
else
|
32
|
-
token Name
|
33
|
-
end
|
34
|
-
end
|
53
|
+
rule /\s+/m, Text::Whitespace
|
35
54
|
|
36
|
-
rule
|
55
|
+
rule /`[^`]+?`/, Name
|
37
56
|
rule /'(\\.|.)*?'/m, Str::Single
|
38
57
|
rule /"(\\.|.)*?"/m, Str::Double
|
39
58
|
|
40
|
-
rule
|
41
|
-
rule /\bNA(_(integer|real|complex|character)_)?\b/,
|
42
|
-
Keyword::Constant
|
43
|
-
rule /\b[TF]\b/, Keyword::Variable
|
59
|
+
rule /%[^%]*?%/, Operator
|
44
60
|
|
45
61
|
rule /0[xX][a-fA-F0-9]+([pP][0-9]+)?[Li]?/, Num::Hex
|
46
62
|
rule /[+-]?(\d+([.]\d+)?|[.]\d+)([eE][+-]?\d+)?[Li]?/,
|
47
63
|
Num
|
48
64
|
|
65
|
+
# Only recognize built-in functions when they are actually used as a
|
66
|
+
# function call, i.e. followed by an opening parenthesis.
|
67
|
+
# `Name::Builtin` would be more logical, but is usually not
|
68
|
+
# highlighted specifically; thus use `Name::Function`.
|
69
|
+
rule /\b(?<!.)(#{PRIMITIVE_FUNCTIONS.join('|')})(?=\()/, Name::Function
|
70
|
+
|
71
|
+
rule /[a-zA-Z.]([a-zA-Z_][\w.]*)?/ do |m|
|
72
|
+
if KEYWORDS.include? m[0]
|
73
|
+
token Keyword
|
74
|
+
elsif KEYWORD_CONSTANTS.include? m[0]
|
75
|
+
token Keyword::Constant
|
76
|
+
elsif BUILTIN_CONSTANTS.include? m[0]
|
77
|
+
token Name::Builtin
|
78
|
+
else
|
79
|
+
token Name
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
49
83
|
rule /[\[\]{}();,]/, Punctuation
|
50
84
|
|
51
85
|
rule %r([-<>?*+^/!=~$@:%&|]), Operator
|
52
|
-
rule /[.][.][.]/, Keyword
|
53
86
|
end
|
54
87
|
end
|
55
88
|
end
|
data/lib/rouge/lexers/ruby.rb
CHANGED
@@ -228,17 +228,17 @@ module Rouge
|
|
228
228
|
end
|
229
229
|
|
230
230
|
state :has_heredocs do
|
231
|
-
rule /(?<!\w)(
|
231
|
+
rule /(?<!\w)(<<[-~]?)(["`']?)([a-zA-Z_]\w*)(\2)/ do |m|
|
232
232
|
token Operator, m[1]
|
233
233
|
token Name::Constant, "#{m[2]}#{m[3]}#{m[4]}"
|
234
|
-
@heredoc_queue << [
|
234
|
+
@heredoc_queue << [['<<-', '<<~'].include?(m[1]), m[3]]
|
235
235
|
push :heredoc_queue unless state? :heredoc_queue
|
236
236
|
end
|
237
237
|
|
238
|
-
rule /(
|
238
|
+
rule /(<<[-~]?)(["'])(\2)/ do |m|
|
239
239
|
token Operator, m[1]
|
240
240
|
token Name::Constant, "#{m[2]}#{m[3]}#{m[4]}"
|
241
|
-
@heredoc_queue << [
|
241
|
+
@heredoc_queue << [['<<-', '<<~'].include?(m[1]), '']
|
242
242
|
push :heredoc_queue unless state? :heredoc_queue
|
243
243
|
end
|
244
244
|
end
|
data/lib/rouge/lexers/rust.rb
CHANGED
@@ -29,10 +29,10 @@ module Rouge
|
|
29
29
|
c_int clock_t c_long c_longlong Cons Const Copy c_schar c_short
|
30
30
|
c_uchar c_uint c_ulong c_ulonglong c_ushort c_void dev_t DIR
|
31
31
|
dirent Div Either Eq Err f32 f64 Failure FILE float fpos_t
|
32
|
-
i16 i32 i64 i8 Index ino_t int intptr_t Left mode_t Modulo Mul
|
32
|
+
i16 i32 i64 i8 isize Index ino_t int intptr_t Left mode_t Modulo Mul
|
33
33
|
Neg Nil None Num off_t Ok Option Ord Owned pid_t Ptr ptrdiff_t
|
34
34
|
Right Send Shl Shr size_t Some ssize_t str Sub Success time_t
|
35
|
-
u16 u32 u64 u8 uint uintptr_t
|
35
|
+
u16 u32 u64 u8 usize uint uintptr_t
|
36
36
|
Box Vec String Gc Rc Arc
|
37
37
|
)
|
38
38
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class ShellSession < RegexLexer
|
6
|
+
tag 'shell_session'
|
7
|
+
title "Shell Session"
|
8
|
+
desc 'A generic lexer for shell session and command line'
|
9
|
+
aliases 'terminal', 'console'
|
10
|
+
filenames '*.cap'
|
11
|
+
|
12
|
+
state :root do
|
13
|
+
rule /^([^ \n]*# )([^ \n]*)(.*(\n|$))/ do |m|
|
14
|
+
token Name::Entity, m[1]
|
15
|
+
token Name::Class, m[2]
|
16
|
+
token Keyword::Variable, m[3]
|
17
|
+
end
|
18
|
+
rule /^([^ \n]*\$ )([^ \n]*)(.*(\n|$))/ do |m|
|
19
|
+
token Text::Whitespace, m[1]
|
20
|
+
token Name::Class, m[2]
|
21
|
+
token Keyword::Variable, m[3]
|
22
|
+
end
|
23
|
+
rule /^<...>$/, Comment
|
24
|
+
rule /.*\n/, Text
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
### tag function class label
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class Smarty < TemplateLexer
|
6
|
+
title "Smarty"
|
7
|
+
desc 'Smarty Template Engine'
|
8
|
+
tag 'smarty'
|
9
|
+
aliases 'smarty'
|
10
|
+
filenames '*.tpl', '*.smarty'
|
11
|
+
mimetypes 'application/x-smarty', 'text/x-smarty'
|
12
|
+
|
13
|
+
def self.analyze_text(text)
|
14
|
+
rv = 0.0
|
15
|
+
rv += 0.15 if text =~ /\{if\s+.*?\}.*?\{\/if\}/
|
16
|
+
rv += 0.15 if text =~ /\{include\s+file=.*?\}/
|
17
|
+
rv += 0.15 if text =~ /\{foreach\s+.*?\}.*?\{\/foreach\}/
|
18
|
+
rv += 0.01 if text =~ /\{\$.*?\}/
|
19
|
+
return rv
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
def self.builtins
|
25
|
+
@builtins ||= %w(
|
26
|
+
append assign block call capture config_load debug extends
|
27
|
+
for foreach foreachelse break continue function if elseif
|
28
|
+
else include include_php insert ldelim rdelim literal nocache
|
29
|
+
php section sectionelse setfilter strip while
|
30
|
+
counter cycle eval fetch html_checkboxes html_image html_options
|
31
|
+
html_radios html_select_date html_select_time html_table
|
32
|
+
mailto math textformat
|
33
|
+
capitalize cat count_characters count_paragraphs
|
34
|
+
count_sentences count_words date_format default escape
|
35
|
+
from_charset indent lower nl2br regex_replace replace spacify
|
36
|
+
string_format strip strip_tags to_charset truncate unescape
|
37
|
+
upper wordwrap
|
38
|
+
)
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
state :root do
|
43
|
+
rule(/\{\s+/) { delegate parent }
|
44
|
+
|
45
|
+
# block comments
|
46
|
+
rule /\{\*.*?\*\}/m, Comment
|
47
|
+
|
48
|
+
rule /\{\/?(?![\s*])/ do
|
49
|
+
token Keyword
|
50
|
+
push :smarty
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
rule(/.*?(?={[\/a-zA-Z0-9$#*"'])|.*/m) { delegate parent }
|
55
|
+
rule(/.+/m) { delegate parent }
|
56
|
+
end
|
57
|
+
|
58
|
+
state :comment do
|
59
|
+
rule(/{\*/) { token Comment; push }
|
60
|
+
rule(/\*}/) { token Comment; pop! }
|
61
|
+
rule(/[^{}]+/m) { token Comment }
|
62
|
+
end
|
63
|
+
|
64
|
+
state :smarty do
|
65
|
+
# allow nested tags
|
66
|
+
rule /\{\/?(?![\s*])/ do
|
67
|
+
token Keyword
|
68
|
+
push :smarty
|
69
|
+
end
|
70
|
+
|
71
|
+
rule /}/, Keyword, :pop!
|
72
|
+
rule /\s+/m, Text
|
73
|
+
rule %r([~!%^&*()+=|\[\]:;,.<>/@?-]), Operator
|
74
|
+
rule /#[a-zA-Z_]\w*#/, Name::Variable
|
75
|
+
rule /\$[a-zA-Z_]\w*(\.\w+)*/, Name::Variable
|
76
|
+
rule /(true|false|null)\b/, Keyword::Constant
|
77
|
+
rule /[0-9](\.[0-9]*)?(eE[+-][0-9])?[flFLdD]?|0[xX][0-9a-fA-F]+[Ll]?/, Num
|
78
|
+
rule /"(\\.|.)*?"/, Str::Double
|
79
|
+
rule /'(\\.|.)*?'/, Str::Single
|
80
|
+
rule /([a-zA-Z_]\w*)/ do |m|
|
81
|
+
if self.class.builtins.include? m[0]
|
82
|
+
token Name::Builtin
|
83
|
+
else
|
84
|
+
token Name::Attribute
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
data/lib/rouge/lexers/sql.rb
CHANGED
data/lib/rouge/lexers/swift.rb
CHANGED
@@ -18,11 +18,11 @@ module Rouge
|
|
18
18
|
|
19
19
|
as dynamicType is new super self Self Type __COLUMN__ __FILE__ __FUNCTION__ __LINE__
|
20
20
|
|
21
|
-
associativity didSet get infix inout left mutating none nonmutating operator override postfix precedence prefix right set unowned weak willSet throws rethrows
|
21
|
+
associativity didSet get infix inout left mutating none nonmutating operator override postfix precedence prefix right set unowned weak willSet throws rethrows associatedtype
|
22
22
|
)
|
23
23
|
|
24
24
|
declarations = Set.new %w(
|
25
|
-
class deinit enum extension final func import init internal lazy let optional private protocol public required static struct subscript typealias var dynamic
|
25
|
+
class deinit enum extension final func import init internal lazy let optional private protocol public required static struct subscript typealias var dynamic indirect associatedtype
|
26
26
|
)
|
27
27
|
|
28
28
|
constants = Set.new %w(
|
@@ -42,7 +42,7 @@ module Rouge
|
|
42
42
|
|
43
43
|
state :inline_whitespace do
|
44
44
|
rule /\s+/m, Text
|
45
|
-
|
45
|
+
mixin :has_comments
|
46
46
|
end
|
47
47
|
|
48
48
|
state :whitespace do
|
@@ -51,6 +51,17 @@ module Rouge
|
|
51
51
|
mixin :inline_whitespace
|
52
52
|
end
|
53
53
|
|
54
|
+
state :has_comments do
|
55
|
+
rule %r(/[*]), Comment::Multiline, :nested_comment
|
56
|
+
end
|
57
|
+
|
58
|
+
state :nested_comment do
|
59
|
+
mixin :has_comments
|
60
|
+
rule %r([*]/), Comment::Multiline, :pop!
|
61
|
+
rule %r([^*/]+)m, Comment::Multiline
|
62
|
+
rule /./, Comment::Multiline
|
63
|
+
end
|
64
|
+
|
54
65
|
state :root do
|
55
66
|
mixin :whitespace
|
56
67
|
rule /\$(([1-9]\d*)?\d)/, Name::Variable
|
@@ -85,6 +96,10 @@ module Rouge
|
|
85
96
|
end
|
86
97
|
|
87
98
|
rule /#available\([^)]+\)/, Keyword::Declaration
|
99
|
+
|
100
|
+
rule /(#selector\()([^)]+?(?:[(].*?[)])?)(\))/ do
|
101
|
+
groups Keyword::Declaration, Name::Function, Keyword::Declaration
|
102
|
+
end
|
88
103
|
|
89
104
|
rule /(let|var)\b(\s*)(#{id})/ do
|
90
105
|
groups Keyword, Text, Name::Variable
|
@@ -98,8 +113,8 @@ module Rouge
|
|
98
113
|
end
|
99
114
|
end
|
100
115
|
|
101
|
-
rule /as[?!]
|
102
|
-
rule /try[!]
|
116
|
+
rule /as[?!]?(?=\s)/, Keyword
|
117
|
+
rule /try[!]?(?=\s)/, Keyword
|
103
118
|
|
104
119
|
rule /(#?(?!default)(?![[:upper:]])#{id})(\s*)(:)/ do
|
105
120
|
groups Name::Variable, Text, Punctuation
|