зеркало из https://github.com/github/ruby.git
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:
Родитель
7e61fdca9a
Коммит
ab5a3db48e
11
lib/erb.rb
11
lib/erb.rb
|
@ -665,9 +665,13 @@ class ERB
|
|||
return [false, '>']
|
||||
when 2
|
||||
return [false, '<>']
|
||||
when 0
|
||||
when 0, nil
|
||||
return [false, nil]
|
||||
when String
|
||||
unless mode.match?(/\A(%|-|>|<>){1,2}\z/)
|
||||
warn_invalid_trim_mode(mode, uplevel: 5)
|
||||
end
|
||||
|
||||
perc = mode.include?('%')
|
||||
if mode.include?('-')
|
||||
return [perc, '-']
|
||||
|
@ -679,6 +683,7 @@ class ERB
|
|||
[perc, nil]
|
||||
end
|
||||
else
|
||||
warn_invalid_trim_mode(mode, uplevel: 5)
|
||||
return [false, nil]
|
||||
end
|
||||
end
|
||||
|
@ -730,6 +735,10 @@ class ERB
|
|||
end
|
||||
return enc, frozen
|
||||
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
|
||||
|
||||
|
|
|
@ -235,6 +235,28 @@ EOS
|
|||
assert_equal("line\r\n" * 3, erb.result)
|
||||
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
|
||||
out = StringIO.new
|
||||
orig, $stdout = $stdout, out
|
||||
|
|
Загрузка…
Ссылка в новой задаче