1
0
Fork 0
mirror of https://github.com/haml/haml.git synced 2022-11-09 12:33:31 -05:00

Refactor less and coffee

This commit is contained in:
Takashi Kokubun 2015-10-28 22:12:12 +09:00
parent ad1a3561c7
commit 4967bfae99
3 changed files with 23 additions and 40 deletions

View file

@ -1,29 +1,10 @@
require 'tilt'
module Hamlit
class Filters
class Coffee < TiltBase
def compile(node)
if Haml::Util.contains_interpolation?(node.value[:text])
return runtime_compile(node)
end
temple = [:multi]
temple << [:static, "<script>\n".freeze]
temple << [:static, TiltBase.render('coffee', node.value[:text])]
temple << [:static, "</script>".freeze]
temple
end
private
def runtime_compile(node)
source = Haml::Util.unescape_interpolation(node.value[:text])
code = "::Hamlit::Filters::TiltBase.render('coffee', #{source})"
temple = [:multi]
temple << [:static, "<script>\n".freeze]
temple << [:dynamic, code]
temple << compile_with_tilt(node, 'coffee')
temple << [:static, "</script>".freeze]
temple
end

View file

@ -1,29 +1,10 @@
require 'tilt'
module Hamlit
class Filters
class Less < TiltBase
def compile(node)
if Haml::Util.contains_interpolation?(node.value[:text])
return runtime_compile(node)
end
temple = [:multi]
temple << [:static, "<style>\n".freeze]
temple << [:static, TiltBase.render('less', node.value[:text])]
temple << [:static, "</style>".freeze]
temple
end
private
def runtime_compile(node)
source = Haml::Util.unescape_interpolation(node.value[:text])
code = "::Hamlit::Filters::TiltBase.render('less', #{source})"
temple = [:multi]
temple << [:static, "<style>\n".freeze]
temple << [:dynamic, code]
temple << compile_with_tilt(node, 'less')
temple << [:static, "</style>".freeze]
temple
end

View file

@ -1,3 +1,5 @@
require 'tilt'
module Hamlit
class Filters
class TiltBase < Base
@ -5,6 +7,25 @@ module Hamlit
text = ::Tilt["t.#{name}"].new { source }.render
text.gsub!(/^/, ' '.freeze)
end
private
def compile_with_tilt(node, name)
if Haml::Util.contains_interpolation?(node.value[:text])
dynamic_compile(node, name)
else
static_compile(node, name)
end
end
def static_compile(node, name)
[:static, TiltBase.render(name, node.value[:text])]
end
def dynamic_compile(node, name)
source = Haml::Util.unescape_interpolation(node.value[:text])
[:dynamic, "::Hamlit::Filters::TiltBase.render('#{name}', #{source})"]
end
end
end
end