git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4216 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
seki 2003-07-29 14:35:42 +00:00
Родитель e078a75b73
Коммит 38ac53f0c1
1 изменённых файлов: 14 добавлений и 6 удалений

Просмотреть файл

@ -34,6 +34,8 @@ class ERB
end
class TrimScanner < Scanner
TrimSplitRegexp = /(<%%)|(%%>)|(<%=)|(<%#)|(<%)|(%>\n)|(%>)|(\n)/
def initialize(src, trim_mode, percent)
super(src)
@trim_mode = trim_mode
@ -83,17 +85,21 @@ class ERB
def trim_line(line)
head = nil
last = nil
line.split(SplitRegexp).each do |token|
line.split(TrimSplitRegexp).each do |token|
next if token.empty?
head = token unless head
if token == "\n" && last == '%>'
next if @trim_mode == '>'
next if @trim_mode == '<>' && is_erb_stag?(head)
yield("\n")
if token == "%>\n"
yield('%>')
if @trim_mode == '>'
yield(:cr)
elsif @trim_mode == '<>' && is_erb_stag?(head)
yield(:cr)
else
yield("\n")
end
break
end
yield(token)
last = token
end
end
@ -158,6 +164,8 @@ class ERB
content = ''
out.push(token.to_s)
out.cr
when :cr
out.cr
when '<%', '<%=', '<%#'
scanner.stag = token
out.push("#{@put_cmd} #{content.dump}") if content.size > 0