From 4967bfae99004569bc3446e1d819188782f53424 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Wed, 28 Oct 2015 22:12:12 +0900 Subject: [PATCH] Refactor less and coffee --- lib/hamlit/filters/coffee.rb | 21 +-------------------- lib/hamlit/filters/less.rb | 21 +-------------------- lib/hamlit/filters/tilt_base.rb | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+), 40 deletions(-) diff --git a/lib/hamlit/filters/coffee.rb b/lib/hamlit/filters/coffee.rb index 953f4b96..c2e0b4d3 100644 --- a/lib/hamlit/filters/coffee.rb +++ b/lib/hamlit/filters/coffee.rb @@ -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, "".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, "".freeze] temple end diff --git a/lib/hamlit/filters/less.rb b/lib/hamlit/filters/less.rb index e71e2ef2..f7a92482 100644 --- a/lib/hamlit/filters/less.rb +++ b/lib/hamlit/filters/less.rb @@ -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, "".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, "".freeze] temple end diff --git a/lib/hamlit/filters/tilt_base.rb b/lib/hamlit/filters/tilt_base.rb index 08961818..742d053d 100644 --- a/lib/hamlit/filters/tilt_base.rb +++ b/lib/hamlit/filters/tilt_base.rb @@ -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