rouge 1.10.1 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,51 @@
|
|
1
|
+
module Rouge
|
2
|
+
module Lexers
|
3
|
+
load_lexer 'markdown.rb'
|
4
|
+
|
5
|
+
class APIBlueprint < Markdown
|
6
|
+
title 'API Blueprint'
|
7
|
+
desc 'Markdown based API description language.'
|
8
|
+
|
9
|
+
tag 'apiblueprint'
|
10
|
+
aliases 'apiblueprint', 'apib'
|
11
|
+
filenames '*.apib'
|
12
|
+
mimetypes 'text/vnd.apiblueprint'
|
13
|
+
|
14
|
+
def self.analyze_text(text)
|
15
|
+
return 1 if text.start_with?('FORMAT: 1A\n')
|
16
|
+
end
|
17
|
+
|
18
|
+
prepend :root do
|
19
|
+
# Metadata
|
20
|
+
rule(/(\S+)(:\s*)(.*)$/) do
|
21
|
+
groups Name::Variable, Punctuation, Literal::String
|
22
|
+
end
|
23
|
+
|
24
|
+
# Resource Group
|
25
|
+
rule(/^(#+)(\s*Group\s+)(.*)$/) do
|
26
|
+
groups Punctuation, Keyword, Generic::Heading
|
27
|
+
end
|
28
|
+
|
29
|
+
# Resource \ Action
|
30
|
+
rule(/^(#+)(.*)(\[.*\])$/) do
|
31
|
+
groups Punctuation, Generic::Heading, Literal::String
|
32
|
+
end
|
33
|
+
|
34
|
+
# Relation
|
35
|
+
rule(/^([\+\-\*])(\s*Relation:)(\s*.*)$/) do
|
36
|
+
groups Punctuation, Keyword, Literal::String
|
37
|
+
end
|
38
|
+
|
39
|
+
# MSON
|
40
|
+
rule(/^(\s+[\+\-\*]\s*)(Attributes|Parameters)(.*)$/) do
|
41
|
+
groups Punctuation, Keyword, Literal::String
|
42
|
+
end
|
43
|
+
|
44
|
+
# Request/Response
|
45
|
+
rule(/^([\+\-\*]\s*)(Request|Response)(\s+\d\d\d)?(.*)$/) do
|
46
|
+
groups Punctuation, Keyword, Literal::Number, Literal::String
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Rouge
|
2
|
+
module Lexers
|
3
|
+
load_lexer 'xml.rb'
|
4
|
+
|
5
|
+
class BIML < XML
|
6
|
+
title "BIML"
|
7
|
+
desc "BIML, Business Intelligence Markup Language"
|
8
|
+
tag 'biml'
|
9
|
+
filenames '*.biml'
|
10
|
+
|
11
|
+
def self.analyze_text(text)
|
12
|
+
return 1 if text =~ /<\s*Biml\b/
|
13
|
+
end
|
14
|
+
|
15
|
+
prepend :root do
|
16
|
+
rule %r(<#@\s*)m, Name::Tag, :directive_tag
|
17
|
+
|
18
|
+
rule %r(<#[=]?\s*)m, Name::Tag, :directive_as_csharp
|
19
|
+
end
|
20
|
+
|
21
|
+
prepend :attr do
|
22
|
+
#TODO: how to deal with embedded <# tags inside a attribute string
|
23
|
+
#rule %r("<#[=]?\s*)m, Name::Tag, :directive_as_csharp
|
24
|
+
end
|
25
|
+
|
26
|
+
state :directive_as_csharp do
|
27
|
+
rule /\s*#>\s*/m, Name::Tag, :pop!
|
28
|
+
rule %r(.*?(?=\s*#>\s*))m do
|
29
|
+
delegate CSharp
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
state :directive_tag do
|
34
|
+
rule /\s+/m, Text
|
35
|
+
rule /[\w.:-]+\s*=/m, Name::Attribute, :attr
|
36
|
+
rule /[\w]+\s*/m, Name::Attribute
|
37
|
+
rule %r(/?\s*#>), Name::Tag, :pop!
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/rouge/lexers/c.rb
CHANGED
@@ -19,6 +19,9 @@ module Rouge
|
|
19
19
|
auto break case const continue default do else enum extern
|
20
20
|
for goto if register restricted return sizeof static struct
|
21
21
|
switch typedef union volatile virtual while
|
22
|
+
|
23
|
+
_Alignas _Alignof _Atomic _Generic _Imaginary
|
24
|
+
_Noreturn _Static_assert _Thread_local
|
22
25
|
)
|
23
26
|
end
|
24
27
|
|
@@ -38,6 +41,8 @@ module Rouge
|
|
38
41
|
int_fast64_t uint_fast8_t uint_fast16_t uint_fast32_t
|
39
42
|
uint_fast64_t intptr_t uintptr_t intmax_t
|
40
43
|
uintmax_t
|
44
|
+
|
45
|
+
char16_t char32_t
|
41
46
|
)
|
42
47
|
end
|
43
48
|
|
@@ -96,8 +101,8 @@ module Rouge
|
|
96
101
|
|
97
102
|
state :statements do
|
98
103
|
mixin :whitespace
|
99
|
-
rule /L?"/, Str, :string
|
100
|
-
rule %r(L?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
|
104
|
+
rule /(u8|u|U|L)?"/, Str, :string
|
105
|
+
rule %r((u8|u|U|L)?'(\\.|\\[0-7]{1,3}|\\x[a-f0-9]{1,2}|[^\\'\n])')i, Str::Char
|
101
106
|
rule %r((\d+[.]\d*|[.]?\d+)e[+-]?\d+[lu]*)i, Num::Float
|
102
107
|
rule %r(\d+e[+-]?\d+[lu]*)i, Num::Float
|
103
108
|
rule /0x[0-9a-f]+[lu]*/i, Num::Hex
|
@@ -0,0 +1,123 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class Ceylon < RegexLexer
|
6
|
+
tag 'ceylon'
|
7
|
+
filenames '*.ceylon'
|
8
|
+
mimetypes 'text/x-ceylon'
|
9
|
+
|
10
|
+
title "Ceylon"
|
11
|
+
desc 'Say more, more clearly.'
|
12
|
+
|
13
|
+
keywords = %w(
|
14
|
+
break case catch continue else finally for in
|
15
|
+
if return switch this throw try while is exists dynamic
|
16
|
+
nonempty then outer assert let
|
17
|
+
)
|
18
|
+
|
19
|
+
keywords_declaration = %w(
|
20
|
+
abstracts extends satisfies super given of out assign
|
21
|
+
)
|
22
|
+
|
23
|
+
keywords_type = %w(
|
24
|
+
function value void new
|
25
|
+
)
|
26
|
+
|
27
|
+
keywords_namespace = %w(
|
28
|
+
assembly module package
|
29
|
+
)
|
30
|
+
|
31
|
+
keywords_constant = %w(
|
32
|
+
true false null
|
33
|
+
)
|
34
|
+
|
35
|
+
annotations = %w(
|
36
|
+
shared abstract formal default actual variable deprecated small
|
37
|
+
late literal doc by see throws optional license tagged final native
|
38
|
+
annotation sealed
|
39
|
+
)
|
40
|
+
|
41
|
+
state :whitespace do
|
42
|
+
rule %r([^\S\n]+), Text
|
43
|
+
rule %r(//.*?\n), Comment::Single
|
44
|
+
rule %r(/\*), Comment::Multiline
|
45
|
+
end
|
46
|
+
|
47
|
+
state :root do
|
48
|
+
mixin :whitespace
|
49
|
+
|
50
|
+
rule %r((shared|abstract|formal|default|actual|variable|deprecated|small|
|
51
|
+
late|literal|doc|by|see|throws|optional|license|tagged|final|native|
|
52
|
+
annotation|sealed)\b), Name::Decorator
|
53
|
+
|
54
|
+
rule %r((break|case|catch|continue|else|finally|for|in|
|
55
|
+
if|return|switch|this|throw|try|while|is|exists|dynamic|
|
56
|
+
nonempty|then|outer|assert|let)\b), Keyword
|
57
|
+
|
58
|
+
rule %r((abstracts|extends|satisfies|super|given|of|out|assign)\b), Keyword::Declaration
|
59
|
+
|
60
|
+
rule %r((function|value|void|new)\b), Keyword::Type
|
61
|
+
|
62
|
+
rule %r((assembly|module|package)(\s+)) do
|
63
|
+
groups Keyword::Namespace, Text
|
64
|
+
push :import
|
65
|
+
end
|
66
|
+
|
67
|
+
rule %r((true|false|null)\b), Keyword::Constant
|
68
|
+
|
69
|
+
rule %r((class|interface|object|alias)(\s+)) do
|
70
|
+
groups Keyword::Declaration, Text
|
71
|
+
push :class
|
72
|
+
end
|
73
|
+
|
74
|
+
rule %r((import)(\s+)) do
|
75
|
+
groups Keyword::Namespace, Text
|
76
|
+
push :import
|
77
|
+
end
|
78
|
+
|
79
|
+
rule %r("(\\\\|\\"|[^"])*"), Literal::String
|
80
|
+
rule %r('\\.'|'[^\\]'|'\\\{#[0-9a-fA-F]{4}\}'), Literal::String::Char
|
81
|
+
rule %r(".*``.*``.*"', String::Interpol
|
82
|
+
rule %r(\.)([a-z_]\w*)) do
|
83
|
+
groups Operator, Name::Attribute
|
84
|
+
end
|
85
|
+
rule %r([a-zA-Z_]\w*:), Name::Label
|
86
|
+
rule %r((\\I[a-z]|[A-Z])\w*), Name::Decorator
|
87
|
+
rule %r([a-zA-Z_]\w*), Name
|
88
|
+
rule %r([~^*!%&\[\](){}<>|+=:;,./?-`]), Operator
|
89
|
+
rule %r(\d{1,3}(_\d{3})+\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
|
90
|
+
rule %r(\d{1,3}(_\d{3})+\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
|
91
|
+
Literal::Number::Float
|
92
|
+
rule %r([0-9][0-9]*\.\d{1,3}(_\d{3})+[kMGTPmunpf]?), Literal::Number::Float
|
93
|
+
rule %r([0-9][0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[kMGTPmunpf]?),
|
94
|
+
Literal::Number::Float
|
95
|
+
rule %r(#([0-9a-fA-F]{4})(_[0-9a-fA-F]{4})+), Literal::Number::Hex
|
96
|
+
rule %r(#[0-9a-fA-F]+), Literal::Number::Hex
|
97
|
+
rule %r(\$([01]{4})(_[01]{4})+), Literal::Number::Bin
|
98
|
+
rule %r(\$[01]+), Literal::Number::Bin
|
99
|
+
rule %r(\d{1,3}(_\d{3})+[kMGTP]?), Literal::Number::Integer
|
100
|
+
rule %r([0-9]+[kMGTP]?), Literal::Number::Integer
|
101
|
+
rule %r(\n), Text
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
state :class do
|
106
|
+
mixin :whitespace
|
107
|
+
rule %r([A-Za-z_]\w*), Name::Class, :pop!
|
108
|
+
end
|
109
|
+
|
110
|
+
state :import do
|
111
|
+
rule %r([a-z][\w.]*), Name::Namespace, :pop!
|
112
|
+
rule %r("(\\\\|\\"|[^"])*"), Literal::String, :pop!
|
113
|
+
end
|
114
|
+
|
115
|
+
state :comment do
|
116
|
+
rule %r([^*/]), Comment.Multiline
|
117
|
+
rule %r(/\*), Comment::Multiline, :push!
|
118
|
+
rule %r(\*/), Comment::Multiline, :pop!
|
119
|
+
rule %r([*/]), Comment::Multiline
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
data/lib/rouge/lexers/clojure.rb
CHANGED
@@ -0,0 +1,206 @@
|
|
1
|
+
# -*- coding: utf-8 -*- #
|
2
|
+
|
3
|
+
module Rouge
|
4
|
+
module Lexers
|
5
|
+
class CMake < RegexLexer
|
6
|
+
title 'CMake'
|
7
|
+
desc 'The cross-platform, open-source build system'
|
8
|
+
tag 'cmake'
|
9
|
+
filenames 'CMakeLists.txt', '*.cmake'
|
10
|
+
mimetypes 'text/x-cmake'
|
11
|
+
|
12
|
+
SPACE = '[ \t]'
|
13
|
+
BRACKET_OPEN = '\[=*\['
|
14
|
+
|
15
|
+
STATES_MAP = {
|
16
|
+
:root => Text,
|
17
|
+
:bracket_string => Str::Double,
|
18
|
+
:quoted_argument => Str::Double,
|
19
|
+
:bracket_comment => Comment::Multiline,
|
20
|
+
:variable_reference => Name::Variable,
|
21
|
+
}
|
22
|
+
|
23
|
+
BUILTIN_COMMANDS = Set.new %w[
|
24
|
+
add_compile_options
|
25
|
+
add_custom_command
|
26
|
+
add_custom_target
|
27
|
+
add_definitions
|
28
|
+
add_dependencies
|
29
|
+
add_executable
|
30
|
+
add_library
|
31
|
+
add_subdirectory
|
32
|
+
add_test
|
33
|
+
aux_source_directory
|
34
|
+
break
|
35
|
+
build_command
|
36
|
+
build_name
|
37
|
+
cmake_host_system_information
|
38
|
+
cmake_minimum_required
|
39
|
+
cmake_policy
|
40
|
+
configure_file
|
41
|
+
create_test_sourcelist
|
42
|
+
define_property
|
43
|
+
else
|
44
|
+
elseif
|
45
|
+
enable_language
|
46
|
+
enable_testing
|
47
|
+
endforeach
|
48
|
+
endfunction
|
49
|
+
endif
|
50
|
+
endmacro
|
51
|
+
endwhile
|
52
|
+
exec_program
|
53
|
+
execute_process
|
54
|
+
export
|
55
|
+
export_library_dependencies
|
56
|
+
file
|
57
|
+
find_file
|
58
|
+
find_library
|
59
|
+
find_package
|
60
|
+
find_path
|
61
|
+
find_program
|
62
|
+
fltk_wrap_ui
|
63
|
+
foreach
|
64
|
+
function
|
65
|
+
get_cmake_property
|
66
|
+
get_directory_property
|
67
|
+
get_filename_component
|
68
|
+
get_property
|
69
|
+
get_source_file_property
|
70
|
+
get_target_property
|
71
|
+
get_test_property
|
72
|
+
if
|
73
|
+
include
|
74
|
+
include_directories
|
75
|
+
include_external_msproject
|
76
|
+
include_regular_expression
|
77
|
+
install
|
78
|
+
install_files
|
79
|
+
install_programs
|
80
|
+
install_targets
|
81
|
+
link_directories
|
82
|
+
link_libraries
|
83
|
+
list
|
84
|
+
load_cache
|
85
|
+
load_command
|
86
|
+
macro
|
87
|
+
make_directory
|
88
|
+
mark_as_advanced
|
89
|
+
math
|
90
|
+
message
|
91
|
+
option
|
92
|
+
output_required_files
|
93
|
+
project
|
94
|
+
qt_wrap_cpp
|
95
|
+
qt_wrap_ui
|
96
|
+
remove
|
97
|
+
remove_definitions
|
98
|
+
return
|
99
|
+
separate_arguments
|
100
|
+
set
|
101
|
+
set_directory_properties
|
102
|
+
set_property
|
103
|
+
set_source_files_properties
|
104
|
+
set_target_properties
|
105
|
+
set_tests_properties
|
106
|
+
site_name
|
107
|
+
source_group
|
108
|
+
string
|
109
|
+
subdir_depends
|
110
|
+
subdirs
|
111
|
+
target_compile_definitions
|
112
|
+
target_compile_options
|
113
|
+
target_include_directories
|
114
|
+
target_link_libraries
|
115
|
+
try_compile
|
116
|
+
try_run
|
117
|
+
unset
|
118
|
+
use_mangled_mesa
|
119
|
+
utility_source
|
120
|
+
variable_requires
|
121
|
+
variable_watch
|
122
|
+
while
|
123
|
+
write_file
|
124
|
+
]
|
125
|
+
|
126
|
+
state :default do
|
127
|
+
rule /\r\n?|\n/ do
|
128
|
+
token STATES_MAP[state.name.to_sym]
|
129
|
+
end
|
130
|
+
rule /./ do
|
131
|
+
token STATES_MAP[state.name.to_sym]
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
state :variable_interpolation do
|
136
|
+
rule /\$\{/ do
|
137
|
+
token Str::Interpol
|
138
|
+
push :variable_reference
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
state :bracket_close do
|
143
|
+
rule /\]=*\]/ do |m|
|
144
|
+
token STATES_MAP[state.name.to_sym]
|
145
|
+
goto :root if m[0].length == @bracket_len
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
state :root do
|
150
|
+
mixin :variable_interpolation
|
151
|
+
|
152
|
+
rule /#{SPACE}/, Text
|
153
|
+
rule /[()]/, Punctuation
|
154
|
+
|
155
|
+
rule /##{BRACKET_OPEN}/ do |m|
|
156
|
+
token Comment::Multiline
|
157
|
+
@bracket_len = m[0].length - 1 # decount '#'
|
158
|
+
goto :bracket_comment
|
159
|
+
end
|
160
|
+
rule /#{BRACKET_OPEN}/ do |m|
|
161
|
+
token Str::Double
|
162
|
+
@bracket_len = m[0].length
|
163
|
+
goto :bracket_string
|
164
|
+
end
|
165
|
+
|
166
|
+
rule /"/, Str::Double, :quoted_argument
|
167
|
+
|
168
|
+
rule /([A-Za-z_][A-Za-z0-9_]*)(#{SPACE}*)(\()/ do |m|
|
169
|
+
groups BUILTIN_COMMANDS.include?(m[1]) ? Name::Builtin : Name::Function, Text, Punctuation
|
170
|
+
end
|
171
|
+
|
172
|
+
rule /#.*/, Comment::Single
|
173
|
+
|
174
|
+
mixin :default
|
175
|
+
end
|
176
|
+
|
177
|
+
state :bracket_string do
|
178
|
+
mixin :bracket_close
|
179
|
+
mixin :variable_interpolation
|
180
|
+
mixin :default
|
181
|
+
end
|
182
|
+
|
183
|
+
state :bracket_comment do
|
184
|
+
mixin :bracket_close
|
185
|
+
mixin :default
|
186
|
+
end
|
187
|
+
|
188
|
+
state :variable_reference do
|
189
|
+
mixin :variable_interpolation
|
190
|
+
|
191
|
+
rule /}/, Str::Interpol, :pop!
|
192
|
+
|
193
|
+
mixin :default
|
194
|
+
end
|
195
|
+
|
196
|
+
state :quoted_argument do
|
197
|
+
mixin :variable_interpolation
|
198
|
+
|
199
|
+
rule /"/, Str::Double, :root
|
200
|
+
rule /\\[()#" \\$@^trn;]/, Str::Escape
|
201
|
+
|
202
|
+
mixin :default
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|