erubi 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7f083e903297ea1af2aa0f9fffb787a7fcd8cdd
4
- data.tar.gz: 5f2ee10913c29dde0cd731781e8c696872f71733
3
+ metadata.gz: '06927703ddb707650937af01e62308503844ea83'
4
+ data.tar.gz: a15b6bf8a5bcc28f16aa5ccc4e607946816c6fac
5
5
  SHA512:
6
- metadata.gz: 78b7ecae18bdc2e524cf2f778ef3552419a0df2b61e63f1f027ee1083375e9395306c3444bcc5ceb69ba7fe2a9e0da7aaf1535267b3db59d6ff8c634cf42a955
7
- data.tar.gz: 58f2d7eb1f3930061415f010815d9e097fa3939d52491d60038ccf58283f4cf04d77ddabf808582cdae1a5fd6d9e3b0d9c8918c27cf2e02dc3a73c9ba367a05a
6
+ metadata.gz: 1319c023421b758f72d2a0c07d67fa1e1267879a3eb82999a523154b9b7bdd6fdd23b8767f4f058f72c5e75720670271df5f8e70a10e7d1101748962d0e4e386
7
+ data.tar.gz: 2a35f88d8c20279919fac6704fe0bc51ed4fcba6d56fb2e6ff7a1fde03c7ea44691a14da10588333daeeb4eb61b3cdae68700006424894fd1dd447eeb0b203ed
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.7.0 (2017-10-09)
2
+
3
+ * Fix escaping in erubi/capture_end, the setting was previously inverted (jeremyevans) (#10)
4
+
1
5
  === 1.6.1 (2017-06-27)
2
6
 
3
7
  * Fix usage on newer versions of JRuby 9.1 (jeremyevans)
@@ -45,7 +45,8 @@ Rails 5.1+.
45
45
 
46
46
  Erubi does not support capturing block output into the template by default.
47
47
  However, it comes with an +erubi/capture_end+ file that supports capturing
48
- via <tt><%|=</tt>, <tt><%|==</tt>, <tt><%|</tt> tags:
48
+ via <tt><%|=</tt> and <tt><%|==</tt> tags which are closed with a
49
+ <tt><%|</tt> tag:
49
50
 
50
51
  <%|= form do %>
51
52
  <input>
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Erubi
4
- VERSION = '1.6.1'
4
+ VERSION = '1.7.0'
5
5
  RANGE_ALL = 0..-1
6
6
 
7
7
  if RUBY_VERSION >= '1.9'
@@ -28,7 +28,7 @@ module Erubi
28
28
  when '|=', '|=='
29
29
  rspace = nil if tailch && !tailch.empty?
30
30
  add_text(lspace) if lspace
31
- escape_capture = ((indicator == '|=') ^ @escape_capture)
31
+ escape_capture = !((indicator == '|=') ^ @escape_capture)
32
32
  src << "begin; (#{@bufstack} ||= []) << #{@bufvar}; #{@bufvar} = #{@bufval}; #{@bufstack}.last << #{@escapefunc if escape_capture}((" << code
33
33
  add_text(rspace) if rspace
34
34
  when '|'
@@ -64,6 +64,16 @@ describe Erubi::Engine do
64
64
  @a << 'd'
65
65
  @a * 2
66
66
  end
67
+ def self.quux
68
+ @a << "a"
69
+ 3.times do |i|
70
+ @a << "c#{i}"
71
+ yield i
72
+ @a << "d#{i}"
73
+ end
74
+ @a << "b"
75
+ @a.upcase
76
+ end
67
77
  end
68
78
 
69
79
  it "should handle no options" do
@@ -159,6 +169,22 @@ END3
159
169
  @a.must_equal 'bar'
160
170
  end
161
171
 
172
+ it "should have <%|= with CaptureEndEngine not escape by default" do
173
+ eval(::Erubi::CaptureEndEngine.new('<%|= "&" %><%| %>').src).must_equal '&'
174
+ eval(::Erubi::CaptureEndEngine.new('<%|= "&" %><%| %>', :escape=>false).src).must_equal '&'
175
+ eval(::Erubi::CaptureEndEngine.new('<%|= "&" %><%| %>', :escape_capture=>false).src).must_equal '&'
176
+ eval(::Erubi::CaptureEndEngine.new('<%|= "&" %><%| %>', :escape=>true).src).must_equal '&amp;'
177
+ eval(::Erubi::CaptureEndEngine.new('<%|= "&" %><%| %>', :escape_capture=>true).src).must_equal '&amp;'
178
+ end
179
+
180
+ it "should have <%|== with CaptureEndEngine escape by default" do
181
+ eval(::Erubi::CaptureEndEngine.new('<%|== "&" %><%| %>').src).must_equal '&amp;'
182
+ eval(::Erubi::CaptureEndEngine.new('<%|== "&" %><%| %>', :escape=>true).src).must_equal '&'
183
+ eval(::Erubi::CaptureEndEngine.new('<%|== "&" %><%| %>', :escape_capture=>true).src).must_equal '&'
184
+ eval(::Erubi::CaptureEndEngine.new('<%|== "&" %><%| %>', :escape=>false).src).must_equal '&amp;'
185
+ eval(::Erubi::CaptureEndEngine.new('<%|== "&" %><%| %>', :escape_capture=>false).src).must_equal '&amp;'
186
+ end
187
+
162
188
  [['', false], ['=', true]].each do |ind, escape|
163
189
  it "should allow <%|=#{ind} and <%| for capturing with CaptureEndEngine with :escape_capture => #{escape} and :escape => #{!escape}" do
164
190
  @options[:bufvar] = '@a'
@@ -178,7 +204,7 @@ END3
178
204
  END1
179
205
  #{'__erubi = ::Erubi;' unless escape}@a = String.new; @a << '<table>
180
206
  <tbody>
181
- '; @a << ' ';begin; (__erubi_stack ||= []) << @a; @a = String.new; __erubi_stack.last << #{!escape ? '__erubi' : '::Erubi'}.h(( bar do @a << '
207
+ '; @a << ' ';begin; (__erubi_stack ||= []) << @a; @a = String.new; __erubi_stack.last << (( bar do @a << '
182
208
  '; @a << ' <b>'; @a << #{!escape ? '__erubi' : '::Erubi'}.h(( '&' )); @a << '</b>
183
209
  '; @a << ' '; end )).to_s; ensure; @a = __erubi_stack.pop; end; @a << '
184
210
  '; @a << ' </tbody>
@@ -189,7 +215,7 @@ END2
189
215
  <table>
190
216
  <tbody>
191
217
  A
192
- &lt;B&gt;&amp;AMP;&lt;/B&gt;
218
+ <B>&AMP;</B>
193
219
  B
194
220
  </tbody>
195
221
  </table>
@@ -214,7 +240,7 @@ END3
214
240
  END1
215
241
  #{'__erubi = ::Erubi;' if escape}@a = String.new; @a << '<table>
216
242
  <tbody>
217
- '; @a << ' ';begin; (__erubi_stack ||= []) << @a; @a = String.new; __erubi_stack.last << (( bar do @a << '
243
+ '; @a << ' ';begin; (__erubi_stack ||= []) << @a; @a = String.new; __erubi_stack.last << #{escape ? '__erubi' : '::Erubi'}.h(( bar do @a << '
218
244
  '; @a << ' <b>'; @a << #{escape ? '__erubi' : '::Erubi'}.h(( '&' )); @a << '</b>
219
245
  '; @a << ' '; end )).to_s; ensure; @a = __erubi_stack.pop; end; @a << '
220
246
  '; @a << ' </tbody>
@@ -225,13 +251,51 @@ END2
225
251
  <table>
226
252
  <tbody>
227
253
  A
228
- <B>&AMP;</B>
254
+ &lt;B&gt;&amp;AMP;&lt;/B&gt;
229
255
  B
230
256
  </tbody>
231
257
  </table>
232
258
  END3
233
259
  end
234
260
 
261
+ it "should handle loops in <%|=#{ind} and <%| for capturing with CaptureEndEngine when with :escape => #{escape}" do
262
+ @options[:bufvar] = '@a'
263
+ @options[:escape] = escape
264
+ @options[:engine] = ::Erubi::CaptureEndEngine
265
+ setup_bar
266
+ check_output(<<END1, <<END2, <<END3){}
267
+ <table>
268
+ <tbody>
269
+ <%|=#{ind} quux do |i| %>
270
+ <b><%=#{ind} "\#{i}&" %></b>
271
+ <%| end %>
272
+ </tbody>
273
+ </table>
274
+ END1
275
+ #{'__erubi = ::Erubi;' if escape}@a = String.new; @a << '<table>
276
+ <tbody>
277
+ '; @a << ' ';begin; (__erubi_stack ||= []) << @a; @a = String.new; __erubi_stack.last << #{escape ? '__erubi' : '::Erubi'}.h(( quux do |i| @a << '
278
+ '; @a << ' <b>'; @a << #{escape ? '__erubi' : '::Erubi'}.h(( "\#{i}&" )); @a << '</b>
279
+ '; @a << ' '; end )).to_s; ensure; @a = __erubi_stack.pop; end; @a << '
280
+ '; @a << ' </tbody>
281
+ </table>
282
+ ';
283
+ @a.to_s
284
+ END2
285
+ <table>
286
+ <tbody>
287
+ AC0
288
+ &lt;B&gt;0&amp;AMP;&lt;/B&gt;
289
+ D0C1
290
+ &lt;B&gt;1&amp;AMP;&lt;/B&gt;
291
+ D1C2
292
+ &lt;B&gt;2&amp;AMP;&lt;/B&gt;
293
+ D2B
294
+ </tbody>
295
+ </table>
296
+ END3
297
+ end
298
+
235
299
  it "should allow <%|=#{ind} and <%| for nested capturing with CaptureEndEngine when with :escape => #{escape}" do
236
300
  @options[:bufvar] = '@a'
237
301
  @options[:escape] = escape
@@ -249,9 +313,9 @@ END3
249
313
  END1
250
314
  #{'__erubi = ::Erubi;' if escape}@a = String.new; @a << '<table>
251
315
  <tbody>
252
- '; @a << ' ';begin; (__erubi_stack ||= []) << @a; @a = String.new; __erubi_stack.last << (( bar do @a << '
316
+ '; @a << ' ';begin; (__erubi_stack ||= []) << @a; @a = String.new; __erubi_stack.last << #{escape ? '__erubi' : '::Erubi'}.h(( bar do @a << '
253
317
  '; @a << ' <b>'; @a << #{escape ? '__erubi' : '::Erubi'}.h(( '&' )); @a << '</b>
254
- '; @a << ' ';begin; (__erubi_stack ||= []) << @a; @a = String.new; __erubi_stack.last << (( baz do @a << 'e'; end )).to_s; ensure; @a = __erubi_stack.pop; end; @a << '
318
+ '; @a << ' ';begin; (__erubi_stack ||= []) << @a; @a = String.new; __erubi_stack.last << #{escape ? '__erubi' : '::Erubi'}.h(( baz do @a << 'e'; end )).to_s; ensure; @a = __erubi_stack.pop; end; @a << '
255
319
  '; @a << ' '; end )).to_s; ensure; @a = __erubi_stack.pop; end; @a << '
256
320
  '; @a << ' </tbody>
257
321
  </table>
@@ -261,7 +325,7 @@ END2
261
325
  <table>
262
326
  <tbody>
263
327
  A
264
- <B>&AMP;</B>
328
+ &lt;B&gt;&amp;AMP;&lt;/B&gt;
265
329
  CEDCED
266
330
  B
267
331
  </tbody>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erubi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Evans
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-06-27 00:00:00.000000000 Z
12
+ date: 2017-10-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
68
  version: '0'
69
69
  requirements: []
70
70
  rubyforge_project:
71
- rubygems_version: 2.6.11
71
+ rubygems_version: 2.6.13
72
72
  signing_key:
73
73
  specification_version: 4
74
74
  summary: Small ERB Implementation