middleman/middleman-core/lib/middleman-core/renderers/less.rb

37 lines
1.0 KiB
Ruby

require 'less'
module Middleman
module Renderers
# Sass renderer
class Less < ::Middleman::Extension
define_setting :less, {}, 'LESS compiler options'
def initialize(app, options={}, &block)
super
# Tell Tilt to use it as well (for inline sass blocks)
::Tilt.register 'less', LocalLoadingLessTemplate
::Tilt.prefer(LocalLoadingLessTemplate)
end
def after_configuration
app.files.by_type(:source).watchers.each do |source|
::Less.paths << (source.directory + app.config[:css_dir]).to_s
end
end
# A SassTemplate for Tilt which outputs debug messages
class LocalLoadingLessTemplate < ::Tilt::LessTemplate
def prepare
if ::Less.const_defined? :Engine
@engine = ::Less::Engine.new(data)
else
parser = ::Less::Parser.new(options.merge(filename: eval_file, line: line, paths: ['.', File.dirname(eval_file)]))
@engine = parser.parse(data)
end
end
end
end
end
end