slim 0.9.2 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -90,6 +90,14 @@ form(method='post' action=action_path(:page, :save))
90
90
  assert_html '<form action="&#47;action-page-save" method="post"></form>', source
91
91
  end
92
92
 
93
+ def test_bypassing_escape_in_attribute
94
+ source = %q{
95
+ form action==action_path(:page, :save) method='post'
96
+ }
97
+
98
+ assert_html '<form action="/action-page-save" method="post"></form>', source
99
+ end
100
+
93
101
  def test_hash_call_in_attribute_without_quotes
94
102
  source = %q{
95
103
  p id=hash[:a] Test it
@@ -185,17 +193,56 @@ p id="#{(false ? 'notshown' : 'shown')}" = output_number
185
193
  assert_html '<div class="alpha beta">Test it</div>', source
186
194
  end
187
195
 
196
+ def test_class_attribute_merging_with_nil
197
+ source = %{
198
+ .alpha class="beta" class=nil class="gamma" Test it
199
+ }
200
+ assert_html '<div class="alpha beta gamma">Test it</div>', source
201
+ end
202
+
188
203
  def test_id_attribute_merging
189
204
  source = %{
190
205
  #alpha id="beta" Test it
191
206
  }
192
- assert_html '<div id="alpha_beta">Test it</div>', source, :id_delimiter => '_'
207
+ assert_html '<div id="alpha_beta">Test it</div>', source, :attr_delimiter => {'class' => ' ', 'id' => '_' }
193
208
  end
194
209
 
195
210
  def test_id_attribute_merging2
196
211
  source = %{
197
212
  #alpha id="beta" Test it
198
213
  }
199
- assert_html '<div id="alpha-beta">Test it</div>', source, :id_delimiter => '-'
214
+ assert_html '<div id="alpha-beta">Test it</div>', source, :attr_delimiter => {'class' => ' ', 'id' => '-' }
215
+ end
216
+
217
+ def test_boolean_attribute_true
218
+ source = %{
219
+ option selected=1 Text
220
+ }
221
+
222
+ assert_html '<option selected="selected">Text</option>', source
223
+ end
224
+
225
+ def test_boolean_attribute_false
226
+ source = %{
227
+ option selected=false Text
228
+ }
229
+
230
+ assert_html '<option>Text</option>', source
231
+ end
232
+
233
+ def test_non_boolean_attribute
234
+ source = %{
235
+ .alpha class="beta" class=false
236
+ }
237
+
238
+ assert_html '<div class="alpha beta false"></div>', source
239
+ end
240
+
241
+ def test_array_attribute
242
+ source = %{
243
+ .alpha class="beta" class=[:gamma, nil, :delta, [true, false]]
244
+ }
245
+
246
+ assert_html '<div class="alpha beta gamma delta true false"></div>', source
200
247
  end
201
248
  end
@@ -10,13 +10,15 @@ class TestSlimEmbeddedEngines < TestSlim
10
10
  p
11
11
  - text = 'haml'
12
12
  haml:
13
+ - passed_from_haml = 'from haml'
13
14
  %b Hello from #{text.upcase}!
14
15
  Second Line!
15
16
  - if true
16
17
  = true
18
+ = passed_from_haml
17
19
  }
18
20
 
19
- assert_html "<p><b>Hello from HAML!</b>\nSecond Line!\ntrue\n</p>", source
21
+ assert_html "<p><b>Hello from HAML!</b>\nSecond Line!\ntrue\nfrom haml</p>", source
20
22
  end
21
23
 
22
24
  def test_render_with_erb
@@ -29,4 +29,12 @@ p class="#{x}" test #{content}
29
29
 
30
30
  assert_html '<p class="&quot;">test &lt;x&gt;</p>', source
31
31
  end
32
+
33
+ def test_html_nested_escaping
34
+ source = %q{
35
+ = hello_world do
36
+ | escaped &
37
+ }
38
+ assert_html 'Hello World from @env escaped &amp; Hello World from @env', source
39
+ end
32
40
  end
@@ -338,4 +338,22 @@ p World
338
338
 
339
339
  assert_html "<p>Hello</p><!--This is a comment\n Another comment\nLast line of comment.--><p>World</p>", source
340
340
  end
341
+
342
+ def test_render_with_html_conditional_and_tag
343
+ source = %q{
344
+ /[ if IE ]
345
+ p Get a better browser.
346
+ }
347
+
348
+ assert_html "<!--[if IE]><p>Get a better browser.</p><![endif]-->", source
349
+ end
350
+
351
+ def test_render_with_html_conditional_and_method_output
352
+ source = %q{
353
+ /[ if IE ]
354
+ = message 'hello'
355
+ }
356
+
357
+ assert_html "<!--[if IE]>hello<![endif]-->", source
358
+ end
341
359
  end
@@ -9,7 +9,7 @@ class TestSlimPretty < TestSlim
9
9
  Slim::Engine.set_default_options :pretty => false
10
10
  end
11
11
 
12
- def test_pretty_sass
12
+ def test_pretty
13
13
  source = %q{
14
14
  doctype 5
15
15
  html
@@ -20,7 +20,9 @@ html
20
20
  background-color: red
21
21
  body
22
22
  #container
23
- p Hello!
23
+ p Hello
24
+ World!
25
+ p= "dynamic text with\nnewline"
24
26
  }
25
27
 
26
28
  result = %q{<!DOCTYPE html>
@@ -35,7 +37,10 @@ html
35
37
  </head>
36
38
  <body>
37
39
  <div id="container">
38
- <p>Hello!</p>
40
+ <p>Hello
41
+ World!</p>
42
+ <p>dynamic text with
43
+ newline</p>
39
44
  </div>
40
45
  </body>
41
46
  </html>}
@@ -82,7 +82,32 @@ ruby:
82
82
  = unknown_ruby_method
83
83
  }
84
84
 
85
- assert_ruby_error NameError,"(__TEMPLATE__):5", source
85
+ assert_ruby_error NameError,"(__TEMPLATE__):6", source
86
+ end
87
+
88
+ def test_embedded_markdown
89
+ source = %q{
90
+ markdown:
91
+ #Header
92
+ Hello from #{"Markdown!"}
93
+ "Second Line!"
94
+ = unknown_ruby_method
95
+ }
96
+
97
+ assert_ruby_error NameError,"(__TEMPLATE__):6", source
98
+ end
99
+
100
+ def test_embedded_liquid
101
+ source = %q{
102
+ - text = 'before liquid block'
103
+ liquid:
104
+ First
105
+ {{text}}
106
+ Third
107
+ = unknown_ruby_method
108
+ }
109
+
110
+ assert_ruby_error NameError,"(__TEMPLATE__):7", source
86
111
  end
87
112
 
88
113
  def test_embedded_javascript
@@ -139,6 +164,6 @@ div
139
164
  source = %{
140
165
  #alpha id="beta" Test it
141
166
  }
142
- assert_runtime_error 'Multiple id attributes specified, but id concatenation disabled', source
167
+ assert_runtime_error 'Multiple id attributes specified', source
143
168
  end
144
169
  end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slim
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 9
8
- - 2
9
- version: 0.9.2
4
+ prerelease:
5
+ version: 0.9.3
10
6
  platform: ruby
11
7
  authors:
12
8
  - Andrew Stone
@@ -16,7 +12,7 @@ autorequire:
16
12
  bindir: bin
17
13
  cert_chain: []
18
14
 
19
- date: 2011-03-30 00:00:00 -04:00
15
+ date: 2011-05-15 00:00:00 -04:00
20
16
  default_executable:
21
17
  dependencies:
22
18
  - !ruby/object:Gem::Dependency
@@ -27,11 +23,7 @@ dependencies:
27
23
  requirements:
28
24
  - - ~>
29
25
  - !ruby/object:Gem::Version
30
- segments:
31
- - 0
32
- - 2
33
- - 0
34
- version: 0.2.0
26
+ version: 0.3.0
35
27
  type: :runtime
36
28
  version_requirements: *id001
37
29
  - !ruby/object:Gem::Dependency
@@ -42,9 +34,6 @@ dependencies:
42
34
  requirements:
43
35
  - - ~>
44
36
  - !ruby/object:Gem::Version
45
- segments:
46
- - 1
47
- - 2
48
37
  version: "1.2"
49
38
  type: :runtime
50
39
  version_requirements: *id002
@@ -56,10 +45,6 @@ dependencies:
56
45
  requirements:
57
46
  - - ">="
58
47
  - !ruby/object:Gem::Version
59
- segments:
60
- - 0
61
- - 8
62
- - 7
63
48
  version: 0.8.7
64
49
  type: :development
65
50
  version_requirements: *id003
@@ -71,89 +56,86 @@ dependencies:
71
56
  requirements:
72
57
  - - ">="
73
58
  - !ruby/object:Gem::Version
74
- segments:
75
- - 0
76
- version: "0"
59
+ version: 3.1.0
77
60
  type: :development
78
61
  version_requirements: *id004
79
62
  - !ruby/object:Gem::Dependency
80
- name: minitest
63
+ name: sass
81
64
  prerelease: false
82
65
  requirement: &id005 !ruby/object:Gem::Requirement
83
66
  none: false
84
67
  requirements:
85
68
  - - ">="
86
69
  - !ruby/object:Gem::Version
87
- segments:
88
- - 0
89
- version: "0"
70
+ version: 3.1.0
90
71
  type: :development
91
72
  version_requirements: *id005
92
73
  - !ruby/object:Gem::Dependency
93
- name: rcov
74
+ name: minitest
94
75
  prerelease: false
95
76
  requirement: &id006 !ruby/object:Gem::Requirement
96
77
  none: false
97
78
  requirements:
98
79
  - - ">="
99
80
  - !ruby/object:Gem::Version
100
- segments:
101
- - 0
102
81
  version: "0"
103
82
  type: :development
104
83
  version_requirements: *id006
105
84
  - !ruby/object:Gem::Dependency
106
- name: rdiscount
85
+ name: rcov
107
86
  prerelease: false
108
87
  requirement: &id007 !ruby/object:Gem::Requirement
109
88
  none: false
110
89
  requirements:
111
90
  - - ">="
112
91
  - !ruby/object:Gem::Version
113
- segments:
114
- - 0
115
92
  version: "0"
116
93
  type: :development
117
94
  version_requirements: *id007
118
95
  - !ruby/object:Gem::Dependency
119
- name: liquid
96
+ name: rdiscount
120
97
  prerelease: false
121
98
  requirement: &id008 !ruby/object:Gem::Requirement
122
99
  none: false
123
100
  requirements:
124
101
  - - ">="
125
102
  - !ruby/object:Gem::Version
126
- segments:
127
- - 0
128
103
  version: "0"
129
104
  type: :development
130
105
  version_requirements: *id008
131
106
  - !ruby/object:Gem::Dependency
132
- name: yard
107
+ name: liquid
133
108
  prerelease: false
134
109
  requirement: &id009 !ruby/object:Gem::Requirement
135
110
  none: false
136
111
  requirements:
137
112
  - - ">="
138
113
  - !ruby/object:Gem::Version
139
- segments:
140
- - 0
141
114
  version: "0"
142
115
  type: :development
143
116
  version_requirements: *id009
144
117
  - !ruby/object:Gem::Dependency
145
- name: creole
118
+ name: yard
146
119
  prerelease: false
147
120
  requirement: &id010 !ruby/object:Gem::Requirement
148
121
  none: false
149
122
  requirements:
150
123
  - - ">="
151
124
  - !ruby/object:Gem::Version
152
- segments:
153
- - 0
154
125
  version: "0"
155
126
  type: :development
156
127
  version_requirements: *id010
128
+ - !ruby/object:Gem::Dependency
129
+ name: creole
130
+ prerelease: false
131
+ requirement: &id011 !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: "0"
137
+ type: :development
138
+ version_requirements: *id011
157
139
  description: Slim is a template language whose goal is reduce the syntax to the essential parts without becoming cryptic.
158
140
  email:
159
141
  - andy@stonean.com
@@ -167,9 +149,21 @@ extra_rdoc_files:
167
149
  - README.md
168
150
  files:
169
151
  - .gemtest
152
+ - .gitignore
153
+ - .yardopts
154
+ - CHANGES
155
+ - Gemfile
156
+ - LICENSE
170
157
  - README.md
171
158
  - Rakefile
159
+ - benchmarks/run.rb
160
+ - benchmarks/src/complex.erb
161
+ - benchmarks/src/complex.haml
162
+ - benchmarks/src/complex.slim
163
+ - benchmarks/src/complex_view.rb
172
164
  - bin/slimrb
165
+ - extra/slim-mode.el
166
+ - extra/test.slim
173
167
  - lib/slim.rb
174
168
  - lib/slim/command.rb
175
169
  - lib/slim/compiler.rb
@@ -177,6 +171,7 @@ files:
177
171
  - lib/slim/end_inserter.rb
178
172
  - lib/slim/engine.rb
179
173
  - lib/slim/filter.rb
174
+ - lib/slim/grammar.rb
180
175
  - lib/slim/interpolation.rb
181
176
  - lib/slim/parser.rb
182
177
  - lib/slim/rails.rb
@@ -184,6 +179,7 @@ files:
184
179
  - lib/slim/template.rb
185
180
  - lib/slim/version.rb
186
181
  - lib/slim/wrapper.rb
182
+ - slim.gemspec
187
183
  - test/helper.rb
188
184
  - test/integration/rails/dummy/Rakefile
189
185
  - test/integration/rails/dummy/app/controllers/application_controller.rb
@@ -255,21 +251,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
255
251
  requirements:
256
252
  - - ">="
257
253
  - !ruby/object:Gem::Version
258
- segments:
259
- - 0
260
254
  version: "0"
261
255
  required_rubygems_version: !ruby/object:Gem::Requirement
262
256
  none: false
263
257
  requirements:
264
258
  - - ">="
265
259
  - !ruby/object:Gem::Version
266
- segments:
267
- - 0
268
260
  version: "0"
269
261
  requirements: []
270
262
 
271
263
  rubyforge_project: slim
272
- rubygems_version: 1.3.7
264
+ rubygems_version: 1.6.2
273
265
  signing_key:
274
266
  specification_version: 3
275
267
  summary: Slim is a template language.