diff --git a/hamlit.gemspec b/hamlit.gemspec index 852bc4d3..af4fa695 100644 --- a/hamlit.gemspec +++ b/hamlit.gemspec @@ -26,9 +26,11 @@ Gem::Specification.new do |spec| spec.add_development_dependency 'bundler', '~> 1.10' spec.add_development_dependency 'coffee-script' spec.add_development_dependency 'faml', '>= 0.3.3' + spec.add_development_dependency 'less' spec.add_development_dependency 'minitest-reporters', '~> 1.1' spec.add_development_dependency 'rails', '>= 4.0.0' spec.add_development_dependency 'rake', '~> 10.0' + spec.add_development_dependency 'therubyracer' spec.add_development_dependency 'thor', '~> 0.19' spec.add_development_dependency 'unindent' end diff --git a/lib/hamlit/filters.rb b/lib/hamlit/filters.rb index d127cd4c..cb1504cb 100644 --- a/lib/hamlit/filters.rb +++ b/lib/hamlit/filters.rb @@ -3,6 +3,7 @@ require 'hamlit/filters/tilt_base' require 'hamlit/filters/coffee' require 'hamlit/filters/css' require 'hamlit/filters/escaped' +require 'hamlit/filters/less' require 'hamlit/filters/javascript' require 'hamlit/filters/plain' require 'hamlit/filters/preserve' @@ -26,6 +27,7 @@ module Hamlit register :coffeescript, Coffee register :css, Css register :escaped, Escaped + register :less, Less register :javascript, Javascript register :plain, Plain register :preserve, Preserve diff --git a/lib/hamlit/filters/less.rb b/lib/hamlit/filters/less.rb new file mode 100644 index 00000000..e71e2ef2 --- /dev/null +++ b/lib/hamlit/filters/less.rb @@ -0,0 +1,32 @@ +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 + end + end +end diff --git a/test/hamlit/filters/less_test.rb b/test/hamlit/filters/less_test.rb index 8171c298..f86dbe55 100644 --- a/test/hamlit/filters/less_test.rb +++ b/test/hamlit/filters/less_test.rb @@ -3,7 +3,6 @@ describe Hamlit::Filters do describe '#compile' do it 'renders less filter' do - skip assert_render(<<-HAML, <<-HTML, compatible_only: :haml, error_with: :faml) :less .users_controller { @@ -23,7 +22,6 @@ describe Hamlit::Filters do end it 'parses string interpolation' do - skip assert_render(<<-'HAML', <<-HTML, compatible_only: :haml, error_with: :faml) :less .foo {