Let the Line strip its own text

This commit is contained in:
Akira Matsuda 2013-02-13 22:31:16 +09:00
parent 6f7978a1eb
commit 92c33a222f
1 changed files with 17 additions and 42 deletions

View File

@ -181,6 +181,12 @@ module Haml
def tabs def tabs
@tabs ||= parser.compute_tabs(self) @tabs ||= parser.compute_tabs(self)
end end
def strip!(from)
self.text = text[from..-1]
self.text.lstrip!
self
end
end end
# @private # @private
@ -218,57 +224,26 @@ module Haml
when ELEMENT; push tag(line) when ELEMENT; push tag(line)
when COMMENT; push comment(line.text[1..-1].lstrip) when COMMENT; push comment(line.text[1..-1].lstrip)
when SANITIZE when SANITIZE
if line.text[1, 2] == '==' return push plain(line.strip!(3), :escape_html) if line.text[1, 2] == '=='
line.text = line.text[3..-1].lstrip return push script(line.strip!(2), :escape_html) if line.text[1] == SCRIPT
return push plain(line, :escape_html) return push flat_script(line.strip!(2), :escape_html) if line.text[1] == FLAT_SCRIPT
end return push plain(line.strip!(1), :escape_html) if line.text[1] == ?\s
if line.text[1] == SCRIPT
line.text = line.text[2..-1].lstrip
return push script(line, :escape_html)
end
if line.text[1] == FLAT_SCRIPT
line.text = line.text[2..-1].lstrip
return push flat_script(line, :escape_html)
end
if line.text[1] == ?\s
line.text = line.text[1..-1].lstrip
return push plain(line, :escape_html)
end
push plain(line) push plain(line)
when SCRIPT when SCRIPT
if line.text[1] == SCRIPT return push plain(line.strip!(2)) if line.text[1] == SCRIPT
line.text = line.text[2..-1].lstrip
return push plain(line)
end
line.text = line.text[1..-1] line.text = line.text[1..-1]
push script(line) push script(line)
when FLAT_SCRIPT when FLAT_SCRIPT; push flat_script(line.strip!(1))
line.text = line.text[1..-1]
push flat_script(line)
when SILENT_SCRIPT; push silent_script(line) when SILENT_SCRIPT; push silent_script(line)
when FILTER; push filter(line.text[1..-1].downcase) when FILTER; push filter(line.text[1..-1].downcase)
when DOCTYPE when DOCTYPE
return push doctype(line.text) if line.text[0, 3] == '!!!' return push doctype(line.text) if line.text[0, 3] == '!!!'
if line.text[1, 2] == '==' return push plain(line.strip!(3), false) if line.text[1, 2] == '=='
line.text = line.text[3..-1].lstrip return push script(line.strip!(2), false) if line.text[1] == SCRIPT
return push plain(line, false) return push flat_script(line.strip!(2), false) if line.text[1] == FLAT_SCRIPT
end return push plain(line.strip!(1), false) if line.text[1] == ?\s
if line.text[1] == SCRIPT
line.text = line.text[2..-1].lstrip
return push script(line, false)
end
if line.text[1] == FLAT_SCRIPT
line.text = line.text[2..-1].lstrip
return push flat_script(line, false)
end
if line.text[1] == ?\s
line.text = line.text[1..-1].lstrip
return push plain(line, false)
end
push plain(line)
when ESCAPE
line.text = line.text[1..-1]
push plain(line) push plain(line)
when ESCAPE; push plain(line.strip!(1))
else; push plain(line) else; push plain(line)
end end
end end