super-pro-kit 0.0.1
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/slim-5.2.1/CHANGES +496 -0
- data/slim-5.2.1/Gemfile +43 -0
- data/slim-5.2.1/LICENSE +21 -0
- data/slim-5.2.1/README.jp.md +1276 -0
- data/slim-5.2.1/README.md +1313 -0
- data/slim-5.2.1/Rakefile +80 -0
- data/slim-5.2.1/bin/slimrb +6 -0
- data/slim-5.2.1/doc/include.md +20 -0
- data/slim-5.2.1/doc/jp/include.md +20 -0
- data/slim-5.2.1/doc/jp/logic_less.md +137 -0
- data/slim-5.2.1/doc/jp/smart.md +102 -0
- data/slim-5.2.1/doc/jp/translator.md +28 -0
- data/slim-5.2.1/doc/logic_less.md +137 -0
- data/slim-5.2.1/doc/smart.md +120 -0
- data/slim-5.2.1/doc/translator.md +28 -0
- data/slim-5.2.1/lib/slim/code_attributes.rb +68 -0
- data/slim-5.2.1/lib/slim/command.rb +122 -0
- data/slim-5.2.1/lib/slim/controls.rb +61 -0
- data/slim-5.2.1/lib/slim/do_inserter.rb +34 -0
- data/slim-5.2.1/lib/slim/embedded.rb +248 -0
- data/slim-5.2.1/lib/slim/end_inserter.rb +63 -0
- data/slim-5.2.1/lib/slim/engine.rb +42 -0
- data/slim-5.2.1/lib/slim/erb_converter.rb +15 -0
- data/slim-5.2.1/lib/slim/filter.rb +31 -0
- data/slim-5.2.1/lib/slim/grammar.rb +24 -0
- data/slim-5.2.1/lib/slim/include.rb +58 -0
- data/slim-5.2.1/lib/slim/interpolation.rb +36 -0
- data/slim-5.2.1/lib/slim/logic_less/context.rb +126 -0
- data/slim-5.2.1/lib/slim/logic_less/filter.rb +81 -0
- data/slim-5.2.1/lib/slim/logic_less.rb +6 -0
- data/slim-5.2.1/lib/slim/parser.rb +535 -0
- data/slim-5.2.1/lib/slim/railtie.rb +19 -0
- data/slim-5.2.1/lib/slim/smart/escaper.rb +42 -0
- data/slim-5.2.1/lib/slim/smart/filter.rb +97 -0
- data/slim-5.2.1/lib/slim/smart/parser.rb +35 -0
- data/slim-5.2.1/lib/slim/smart.rb +9 -0
- data/slim-5.2.1/lib/slim/splat/builder.rb +115 -0
- data/slim-5.2.1/lib/slim/splat/filter.rb +93 -0
- data/slim-5.2.1/lib/slim/template.rb +6 -0
- data/slim-5.2.1/lib/slim/translator.rb +119 -0
- data/slim-5.2.1/lib/slim/version.rb +6 -0
- data/slim-5.2.1/lib/slim.rb +16 -0
- data/slim-5.2.1/slim.gemspec +33 -0
- data/slim-5.2.1/test/core/helper.rb +201 -0
- data/slim-5.2.1/test/core/test_code_blocks.rb +194 -0
- data/slim-5.2.1/test/core/test_code_escaping.rb +162 -0
- data/slim-5.2.1/test/core/test_code_evaluation.rb +181 -0
- data/slim-5.2.1/test/core/test_code_output.rb +168 -0
- data/slim-5.2.1/test/core/test_code_structure.rb +203 -0
- data/slim-5.2.1/test/core/test_commands.rb +219 -0
- data/slim-5.2.1/test/core/test_embedded_engines.rb +247 -0
- data/slim-5.2.1/test/core/test_encoding.rb +28 -0
- data/slim-5.2.1/test/core/test_erb_converter.rb +65 -0
- data/slim-5.2.1/test/core/test_html_attributes.rb +276 -0
- data/slim-5.2.1/test/core/test_html_escaping.rb +65 -0
- data/slim-5.2.1/test/core/test_html_structure.rb +599 -0
- data/slim-5.2.1/test/core/test_parser_errors.rb +148 -0
- data/slim-5.2.1/test/core/test_pretty.rb +163 -0
- data/slim-5.2.1/test/core/test_ruby_errors.rb +200 -0
- data/slim-5.2.1/test/core/test_slim_template.rb +78 -0
- data/slim-5.2.1/test/core/test_splat_prefix_option.rb +155 -0
- data/slim-5.2.1/test/core/test_tabs.rb +169 -0
- data/slim-5.2.1/test/core/test_text_interpolation.rb +79 -0
- data/slim-5.2.1/test/core/test_thread_options.rb +18 -0
- data/slim-5.2.1/test/core/test_unicode.rb +15 -0
- data/slim-5.2.1/test/include/files/recursive.slim +1 -0
- data/slim-5.2.1/test/include/files/slimfile.slim +3 -0
- data/slim-5.2.1/test/include/files/subdir/test.slim +1 -0
- data/slim-5.2.1/test/include/files/textfile +1 -0
- data/slim-5.2.1/test/include/test_include.rb +24 -0
- data/slim-5.2.1/test/literate/TESTS.md +1323 -0
- data/slim-5.2.1/test/literate/helper.rb +15 -0
- data/slim-5.2.1/test/literate/run.rb +92 -0
- data/slim-5.2.1/test/logic_less/test_logic_less.rb +330 -0
- data/slim-5.2.1/test/rails/Rakefile +7 -0
- data/slim-5.2.1/test/rails/app/assets/config/manifest.js +1 -0
- data/slim-5.2.1/test/rails/app/controllers/application_controller.rb +2 -0
- data/slim-5.2.1/test/rails/app/controllers/entries_controller.rb +5 -0
- data/slim-5.2.1/test/rails/app/controllers/slim_controller.rb +46 -0
- data/slim-5.2.1/test/rails/app/helpers/application_helper.rb +5 -0
- data/slim-5.2.1/test/rails/app/models/entry.rb +16 -0
- data/slim-5.2.1/test/rails/app/views/entries/edit.html.slim +3 -0
- data/slim-5.2.1/test/rails/app/views/layouts/application.html+testvariant.slim +10 -0
- data/slim-5.2.1/test/rails/app/views/layouts/application.html.slim +10 -0
- data/slim-5.2.1/test/rails/app/views/slim/_partial.html.slim +1 -0
- data/slim-5.2.1/test/rails/app/views/slim/attributes.html.slim +3 -0
- data/slim-5.2.1/test/rails/app/views/slim/content_for.html.slim +7 -0
- data/slim-5.2.1/test/rails/app/views/slim/erb.html.erb +1 -0
- data/slim-5.2.1/test/rails/app/views/slim/form_for.html.slim +2 -0
- data/slim-5.2.1/test/rails/app/views/slim/helper.html.slim +4 -0
- data/slim-5.2.1/test/rails/app/views/slim/integers.html.slim +1 -0
- data/slim-5.2.1/test/rails/app/views/slim/no_layout.html.slim +1 -0
- data/slim-5.2.1/test/rails/app/views/slim/normal.html.slim +1 -0
- data/slim-5.2.1/test/rails/app/views/slim/partial.html.slim +2 -0
- data/slim-5.2.1/test/rails/app/views/slim/splat.html.slim +2 -0
- data/slim-5.2.1/test/rails/app/views/slim/splat_with_delimiter.slim +1 -0
- data/slim-5.2.1/test/rails/app/views/slim/thread_options.html.slim +1 -0
- data/slim-5.2.1/test/rails/app/views/slim/variables.html.slim +1 -0
- data/slim-5.2.1/test/rails/app/views/slim/xml.slim +1 -0
- data/slim-5.2.1/test/rails/config/application.rb +44 -0
- data/slim-5.2.1/test/rails/config/boot.rb +10 -0
- data/slim-5.2.1/test/rails/config/environment.rb +5 -0
- data/slim-5.2.1/test/rails/config/environments/test.rb +34 -0
- data/slim-5.2.1/test/rails/config/initializers/backtrace_silencers.rb +7 -0
- data/slim-5.2.1/test/rails/config/initializers/inflections.rb +10 -0
- data/slim-5.2.1/test/rails/config/initializers/mime_types.rb +5 -0
- data/slim-5.2.1/test/rails/config/initializers/session_store.rb +8 -0
- data/slim-5.2.1/test/rails/config/locales/en.yml +5 -0
- data/slim-5.2.1/test/rails/config/routes.rb +60 -0
- data/slim-5.2.1/test/rails/config.ru +4 -0
- data/slim-5.2.1/test/rails/script/rails +6 -0
- data/slim-5.2.1/test/rails/test/helper.rb +34 -0
- data/slim-5.2.1/test/rails/test/test_slim.rb +102 -0
- data/slim-5.2.1/test/sinatra/contest.rb +91 -0
- data/slim-5.2.1/test/sinatra/helper.rb +143 -0
- data/slim-5.2.1/test/sinatra/test_core.rb +91 -0
- data/slim-5.2.1/test/sinatra/test_include.rb +16 -0
- data/slim-5.2.1/test/sinatra/views/embed_include_js.slim +8 -0
- data/slim-5.2.1/test/sinatra/views/embed_js.slim +11 -0
- data/slim-5.2.1/test/sinatra/views/footer.slim +1 -0
- data/slim-5.2.1/test/sinatra/views/hello.slim +1 -0
- data/slim-5.2.1/test/sinatra/views/layout2.slim +3 -0
- data/slim-5.2.1/test/smart/test_smart_text.rb +294 -0
- data/slim-5.2.1/test/translator/test_translator.rb +76 -0
- data/super-pro-kit.gemspec +11 -0
- metadata +165 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class TestSplatPrefixOption < TestSlim
|
|
4
|
+
|
|
5
|
+
def prefixes
|
|
6
|
+
['*','**','*!','*%','*^','*$']
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def options(prefix)
|
|
10
|
+
{ splat_prefix: prefix }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_splat_without_content
|
|
14
|
+
prefixes.each do |prefix|
|
|
15
|
+
source = %Q{
|
|
16
|
+
#{prefix}hash
|
|
17
|
+
p#{prefix}hash
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
assert_html '<div a="The letter a" b="The letter b"></div><p a="The letter a" b="The letter b"></p>', source, options(prefix)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_shortcut_splat
|
|
25
|
+
prefixes.each do |prefix|
|
|
26
|
+
source = %Q{
|
|
27
|
+
#{prefix}hash This is my title
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
assert_html '<div a="The letter a" b="The letter b">This is my title</div>', source, options(prefix)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_splat
|
|
35
|
+
prefixes.each do |prefix|
|
|
36
|
+
source = %Q{
|
|
37
|
+
h1 #{prefix}hash class=[] This is my title
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
assert_html '<h1 a="The letter a" b="The letter b">This is my title</h1>', source, options(prefix)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_closed_splat
|
|
45
|
+
prefixes.each do |prefix|
|
|
46
|
+
source = %Q{
|
|
47
|
+
#{prefix}hash /
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
assert_html '<div a="The letter a" b="The letter b" />', source, options(prefix)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_splat_tag_name
|
|
55
|
+
prefixes.each do |prefix|
|
|
56
|
+
source = %Q{
|
|
57
|
+
#{prefix}{tag: 'h1', id: 'title'} This is my title
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
assert_html '<h1 id="title">This is my title</h1>', source, options(prefix)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_splat_empty_tag_name
|
|
66
|
+
prefixes.each do |prefix|
|
|
67
|
+
source = %Q{
|
|
68
|
+
#{prefix}{tag: '', id: 'test'} This is my title
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
assert_html '<div id="test">This is my title</div>', source, options(prefix)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_closed_splat_tag
|
|
76
|
+
prefixes.each do |prefix|
|
|
77
|
+
source = %Q{
|
|
78
|
+
#{prefix}hash /
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
assert_html '<div a="The letter a" b="The letter b" />', source, options(prefix)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_splat_with_id_shortcut
|
|
86
|
+
prefixes.each do |prefix|
|
|
87
|
+
source = %Q{
|
|
88
|
+
#myid#{prefix}hash This is my title
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
assert_html '<div a="The letter a" b="The letter b" id="myid">This is my title</div>', source, options(prefix)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def test_splat_with_class_shortcut
|
|
96
|
+
prefixes.each do |prefix|
|
|
97
|
+
source = %Q{
|
|
98
|
+
.myclass#{prefix}hash This is my title
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
assert_html '<div a="The letter a" b="The letter b" class="myclass">This is my title</div>', source, options(prefix)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_splat_with_id_and_class_shortcuts
|
|
106
|
+
prefixes.each do |prefix|
|
|
107
|
+
source = %Q{
|
|
108
|
+
#myid.myclass#{prefix}hash This is my title
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
assert_html '<div a="The letter a" b="The letter b" class="myclass" id="myid">This is my title</div>', source, options(prefix)
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def test_splat_with_class_merging
|
|
116
|
+
prefixes.each do |prefix|
|
|
117
|
+
source = %Q{
|
|
118
|
+
#myid.myclass #{prefix}{class: [:secondclass, %w(x y z)]} #{prefix}hash This is my title
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
assert_html '<div a="The letter a" b="The letter b" class="myclass secondclass x y z" id="myid">This is my title</div>', source, options(prefix)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def test_splat_with_boolean_attribute
|
|
126
|
+
prefixes.each do |prefix|
|
|
127
|
+
source = %Q{
|
|
128
|
+
#{prefix}{disabled: true, empty1: false, nonempty: '', empty2: nil} This is my title
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
assert_html '<div disabled="" nonempty="">This is my title</div>', source, options(prefix)
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def test_splat_merging_with_arrays
|
|
136
|
+
prefixes.each do |prefix|
|
|
137
|
+
source = %Q{
|
|
138
|
+
#{prefix}{a: 1, b: 2} #{prefix}[[:c, 3], [:d, 4]] #{prefix}[[:e, 5], [:f, 6]] This is my title
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
assert_html '<div a="1" b="2" c="3" d="4" e="5" f="6">This is my title</div>', source, options(prefix)
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def test_splat_with_other_attributes
|
|
146
|
+
prefixes.each do |prefix|
|
|
147
|
+
source = %Q{
|
|
148
|
+
h1 data-id="123" #{prefix}hash This is my title
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
assert_html '<h1 a="The letter a" b="The letter b" data-id="123">This is my title</h1>', source, options(prefix)
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
end
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class TestSlimTabs < TestSlim
|
|
4
|
+
|
|
5
|
+
def teardown
|
|
6
|
+
Slim::Engine.set_options tabsize: 4
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_single_tab1_expansion
|
|
10
|
+
|
|
11
|
+
Slim::Engine.set_options tabsize: 1
|
|
12
|
+
|
|
13
|
+
source = %Q{
|
|
14
|
+
|
|
|
15
|
+
\t0
|
|
16
|
+
\t1
|
|
17
|
+
\t2
|
|
18
|
+
\t3
|
|
19
|
+
\t4
|
|
20
|
+
\t5
|
|
21
|
+
\t6
|
|
22
|
+
\t7
|
|
23
|
+
\t8
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
result = %q{
|
|
27
|
+
0
|
|
28
|
+
1
|
|
29
|
+
2
|
|
30
|
+
3
|
|
31
|
+
4
|
|
32
|
+
5
|
|
33
|
+
6
|
|
34
|
+
7
|
|
35
|
+
8
|
|
36
|
+
}.strip
|
|
37
|
+
|
|
38
|
+
assert_html result, source
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_single_tab4_expansion
|
|
42
|
+
|
|
43
|
+
Slim::Engine.set_options tabsize: 4
|
|
44
|
+
|
|
45
|
+
source = %Q{
|
|
46
|
+
|
|
|
47
|
+
\t0
|
|
48
|
+
\t1
|
|
49
|
+
\t2
|
|
50
|
+
\t3
|
|
51
|
+
\t4
|
|
52
|
+
\t5
|
|
53
|
+
\t6
|
|
54
|
+
\t7
|
|
55
|
+
\t8
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
result = %q{
|
|
59
|
+
0
|
|
60
|
+
1
|
|
61
|
+
2
|
|
62
|
+
3
|
|
63
|
+
4
|
|
64
|
+
5
|
|
65
|
+
6
|
|
66
|
+
7
|
|
67
|
+
8
|
|
68
|
+
}.strip
|
|
69
|
+
|
|
70
|
+
assert_html result, source
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def test_multi_tab1_expansion
|
|
74
|
+
|
|
75
|
+
Slim::Engine.set_options tabsize: 1
|
|
76
|
+
|
|
77
|
+
source = %Q{
|
|
78
|
+
|
|
|
79
|
+
\t0
|
|
80
|
+
\t\t1
|
|
81
|
+
\t \t2
|
|
82
|
+
\t \t3
|
|
83
|
+
\t \t4
|
|
84
|
+
\t\t1
|
|
85
|
+
\t \t2
|
|
86
|
+
\t \t3
|
|
87
|
+
\t \t4
|
|
88
|
+
\t\t1
|
|
89
|
+
\t \t2
|
|
90
|
+
\t \t3
|
|
91
|
+
\t \t4
|
|
92
|
+
\t\t1
|
|
93
|
+
\t \t2
|
|
94
|
+
\t \t3
|
|
95
|
+
\t \t4
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
result = %q{
|
|
99
|
+
0
|
|
100
|
+
1
|
|
101
|
+
2
|
|
102
|
+
3
|
|
103
|
+
4
|
|
104
|
+
1
|
|
105
|
+
2
|
|
106
|
+
3
|
|
107
|
+
4
|
|
108
|
+
1
|
|
109
|
+
2
|
|
110
|
+
3
|
|
111
|
+
4
|
|
112
|
+
1
|
|
113
|
+
2
|
|
114
|
+
3
|
|
115
|
+
4
|
|
116
|
+
}.strip
|
|
117
|
+
|
|
118
|
+
assert_html result, source
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def test_multi_tab4_expansion
|
|
122
|
+
|
|
123
|
+
Slim::Engine.set_options tabsize: 4
|
|
124
|
+
|
|
125
|
+
source = %Q{
|
|
126
|
+
|
|
|
127
|
+
\t0
|
|
128
|
+
\t\t1
|
|
129
|
+
\t \t2
|
|
130
|
+
\t \t3
|
|
131
|
+
\t \t4
|
|
132
|
+
\t\t1
|
|
133
|
+
\t \t2
|
|
134
|
+
\t \t3
|
|
135
|
+
\t \t4
|
|
136
|
+
\t\t1
|
|
137
|
+
\t \t2
|
|
138
|
+
\t \t3
|
|
139
|
+
\t \t4
|
|
140
|
+
\t\t1
|
|
141
|
+
\t \t2
|
|
142
|
+
\t \t3
|
|
143
|
+
\t \t4
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
result = %q{
|
|
147
|
+
0
|
|
148
|
+
1
|
|
149
|
+
2
|
|
150
|
+
3
|
|
151
|
+
4
|
|
152
|
+
1
|
|
153
|
+
2
|
|
154
|
+
3
|
|
155
|
+
4
|
|
156
|
+
1
|
|
157
|
+
2
|
|
158
|
+
3
|
|
159
|
+
4
|
|
160
|
+
1
|
|
161
|
+
2
|
|
162
|
+
3
|
|
163
|
+
4
|
|
164
|
+
}.strip
|
|
165
|
+
|
|
166
|
+
assert_html result, source
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class TestSlimTextInterpolation < TestSlim
|
|
4
|
+
def test_interpolation_in_attribute
|
|
5
|
+
source = %q{
|
|
6
|
+
p id="a#{id_helper}b" = hello_world
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
assert_html '<p id="anoticeb">Hello World from @env</p>', source
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_nested_interpolation_in_attribute
|
|
13
|
+
source = %q{
|
|
14
|
+
p id="#{"abc#{1+1}" + "("}" = hello_world
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
assert_html '<p id="abc2(">Hello World from @env</p>', source
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_interpolation_in_text
|
|
21
|
+
source = %q{
|
|
22
|
+
p
|
|
23
|
+
| #{hello_world} with "quotes"
|
|
24
|
+
p
|
|
25
|
+
|
|
|
26
|
+
A message from the compiler: #{hello_world}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
assert_html '<p>Hello World from @env with "quotes"</p><p>A message from the compiler: Hello World from @env</p>', source
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_interpolation_in_tag
|
|
33
|
+
source = %q{
|
|
34
|
+
p #{hello_world}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
assert_html '<p>Hello World from @env</p>', source
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_escape_interpolation
|
|
41
|
+
source = %q{
|
|
42
|
+
p \\#{hello_world}
|
|
43
|
+
p text1 \\#{hello_world} text2
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
assert_html '<p>#{hello_world}</p><p>text1 #{hello_world} text2</p>', source
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_complex_interpolation
|
|
50
|
+
source = %q{
|
|
51
|
+
p Message: #{message('hello', "user #{output_number}")}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
assert_html '<p>Message: hello user 1337</p>', source
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_interpolation_with_escaping
|
|
58
|
+
source = %q{
|
|
59
|
+
| #{evil_method}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
assert_html '<script>do_something_evil();</script>', source
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_interpolation_without_escaping
|
|
66
|
+
source = %q{
|
|
67
|
+
| #{{evil_method}}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
assert_html '<script>do_something_evil();</script>', source
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def test_interpolation_with_escaping_and_delimiter
|
|
74
|
+
source = %q{
|
|
75
|
+
| #{(evil_method)}
|
|
76
|
+
}
|
|
77
|
+
assert_html '<script>do_something_evil();</script>', source
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class TestSlimThreadOptions < TestSlim
|
|
4
|
+
def test_thread_options
|
|
5
|
+
source = %q{p.test}
|
|
6
|
+
|
|
7
|
+
assert_html '<p class="test"></p>', source
|
|
8
|
+
assert_html "<p class='test'></p>", source, attr_quote: "'"
|
|
9
|
+
|
|
10
|
+
Slim::Engine.with_options(attr_quote: "'") do
|
|
11
|
+
assert_html "<p class='test'></p>", source
|
|
12
|
+
assert_html '<p class="test"></p>', source, attr_quote: '"'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
assert_html '<p class="test"></p>', source
|
|
16
|
+
assert_html "<p class='test'></p>", source, attr_quote: "'"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class TestSlimUnicode < TestSlim
|
|
4
|
+
def test_unicode_tags
|
|
5
|
+
source = "Статья года"
|
|
6
|
+
result = "<Статья>года</Статья>"
|
|
7
|
+
assert_html result, source
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_unicode_attrs
|
|
11
|
+
source = "Статья года=123 content"
|
|
12
|
+
result = "<Статья года=\"123\">content</Статья>"
|
|
13
|
+
assert_html result, source
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
| rec
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
| subdir
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1+2=#{1+2}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
require 'slim/include'
|
|
3
|
+
|
|
4
|
+
class TestSlimInclude < TestSlim
|
|
5
|
+
def test_include
|
|
6
|
+
source = %q{
|
|
7
|
+
br/
|
|
8
|
+
a: include slimfile
|
|
9
|
+
b: include textfile
|
|
10
|
+
c: include slimfile.slim
|
|
11
|
+
d: include subdir/test
|
|
12
|
+
}
|
|
13
|
+
assert_html '<br /><a>slim1recslim2</a><b>1+2=3</b><c>slim1recslim2</c><d>subdir</d>', source, include_dirs: [File.expand_path('files', File.dirname(__FILE__))]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_include_with_newline
|
|
17
|
+
source = %q{
|
|
18
|
+
a: include slimfile
|
|
19
|
+
|
|
20
|
+
.content
|
|
21
|
+
}
|
|
22
|
+
assert_html '<a>slim1recslim2</a><div class="content"></div>', source, include_dirs: [File.expand_path('files', File.dirname(__FILE__))]
|
|
23
|
+
end
|
|
24
|
+
end
|