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:
parent
ad1a3561c7
commit
4967bfae99
3 changed files with 23 additions and 40 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue