mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
erb.rb: warn invalid trim_mode [Misc #15294]
From: Justin Collins <justin@presidentbeef.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
7e61fdca9a
commit
ab5a3db48e
2 changed files with 32 additions and 1 deletions
11
lib/erb.rb
11
lib/erb.rb
|
@ -665,9 +665,13 @@ class ERB
|
||||||
return [false, '>']
|
return [false, '>']
|
||||||
when 2
|
when 2
|
||||||
return [false, '<>']
|
return [false, '<>']
|
||||||
when 0
|
when 0, nil
|
||||||
return [false, nil]
|
return [false, nil]
|
||||||
when String
|
when String
|
||||||
|
unless mode.match?(/\A(%|-|>|<>){1,2}\z/)
|
||||||
|
warn_invalid_trim_mode(mode, uplevel: 5)
|
||||||
|
end
|
||||||
|
|
||||||
perc = mode.include?('%')
|
perc = mode.include?('%')
|
||||||
if mode.include?('-')
|
if mode.include?('-')
|
||||||
return [perc, '-']
|
return [perc, '-']
|
||||||
|
@ -679,6 +683,7 @@ class ERB
|
||||||
[perc, nil]
|
[perc, nil]
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
warn_invalid_trim_mode(mode, uplevel: 5)
|
||||||
return [false, nil]
|
return [false, nil]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -730,6 +735,10 @@ class ERB
|
||||||
end
|
end
|
||||||
return enc, frozen
|
return enc, frozen
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def warn_invalid_trim_mode(mode, uplevel:)
|
||||||
|
warn "Invalid ERB trim mode: #{mode.inspect} (trim_mode: nil, 0, 1, 2, or String composed of '%' and/or '-', '>', '<>')", uplevel: uplevel + 1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -235,6 +235,28 @@ EOS
|
||||||
assert_equal("line\r\n" * 3, erb.result)
|
assert_equal("line\r\n" * 3, erb.result)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_invalid_trim_mode
|
||||||
|
assert_warning(/#{__FILE__}:#{__LINE__ + 1}/) do
|
||||||
|
@erb.new("", trim_mode: 'abc-def')
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_warning(/Invalid ERB trim mode/) do
|
||||||
|
@erb.new("", trim_mode: 'abc-def')
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_warning(/Invalid ERB trim mode/) do
|
||||||
|
@erb.new("", trim_mode: '%<')
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_warning(/Invalid ERB trim mode/) do
|
||||||
|
@erb.new("", trim_mode: '%<>-')
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_warning(/Invalid ERB trim mode/) do
|
||||||
|
@erb.new("", trim_mode: 3)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_run
|
def test_run
|
||||||
out = StringIO.new
|
out = StringIO.new
|
||||||
orig, $stdout = $stdout, out
|
orig, $stdout = $stdout, out
|
||||||
|
|
Loading…
Add table
Reference in a new issue