mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
Rewrite css filter
This commit is contained in:
parent
1d39845d88
commit
3cabf19541
2 changed files with 31 additions and 5 deletions
|
@ -2,14 +2,42 @@ module Hamlit
|
||||||
class Filters
|
class Filters
|
||||||
class Css < Base
|
class Css < Base
|
||||||
def compile(node)
|
def compile(node)
|
||||||
text = compile_text(node.value[:text])
|
|
||||||
case @format
|
case @format
|
||||||
when :xhtml
|
when :xhtml
|
||||||
compile_xhtml('style', 'text/css', text)
|
compile_xhtml(node)
|
||||||
else
|
else
|
||||||
compile_html('style', text)
|
compile_html(node)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def compile_text!(temple, node, prefix)
|
||||||
|
(node.value[:text].rstrip << "\n").each_line do |line|
|
||||||
|
if Haml::Util.contains_interpolation?(line)
|
||||||
|
temple << [:dynamic, Haml::Util.unescape_interpolation(prefix.dup << line)]
|
||||||
|
else
|
||||||
|
temple << [:static, prefix.dup << line]
|
||||||
|
end
|
||||||
|
temple << [:newline]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def compile_html(node)
|
||||||
|
temple = [:multi]
|
||||||
|
temple << [:static, "<style>\n".freeze]
|
||||||
|
compile_text!(temple, node, ' '.freeze)
|
||||||
|
temple << [:static, '</style>'.freeze]
|
||||||
|
temple
|
||||||
|
end
|
||||||
|
|
||||||
|
def compile_xhtml(node)
|
||||||
|
temple = [:multi]
|
||||||
|
temple << [:static, "<style type='text/css'>\n /*<![CDATA[*/\n".freeze]
|
||||||
|
compile_text!(temple, node, ' '.freeze)
|
||||||
|
temple << [:static, " /*]]>*/\n</style>".freeze]
|
||||||
|
temple
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,6 @@ describe Hamlit::Filters do
|
||||||
|
|
||||||
describe '#compile' do
|
describe '#compile' do
|
||||||
it 'renders css' do
|
it 'renders css' do
|
||||||
skip
|
|
||||||
assert_render(<<-HAML, <<-HTML)
|
assert_render(<<-HAML, <<-HTML)
|
||||||
:css
|
:css
|
||||||
.foo {
|
.foo {
|
||||||
|
@ -19,7 +18,6 @@ describe Hamlit::Filters do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'parses string interpolation' do
|
it 'parses string interpolation' do
|
||||||
skip
|
|
||||||
assert_render(<<-'HAML', <<-HTML)
|
assert_render(<<-'HAML', <<-HTML)
|
||||||
:css
|
:css
|
||||||
.foo {
|
.foo {
|
||||||
|
|
Loading…
Add table
Reference in a new issue