2013-12-28 01:26:31 +01:00
|
|
|
require 'less'
|
2012-06-05 19:24:00 +02:00
|
|
|
|
|
|
|
module Middleman
|
|
|
|
module Renderers
|
|
|
|
# Sass renderer
|
2014-07-05 22:41:59 +02:00
|
|
|
class Less < ::Middleman::Extension
|
2016-01-13 01:03:23 +01:00
|
|
|
define_setting :less, {}, 'LESS compiler options'
|
|
|
|
|
2014-07-05 22:41:59 +02:00
|
|
|
def initialize(app, options={}, &block)
|
|
|
|
super
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2014-07-05 22:41:59 +02:00
|
|
|
# Tell Tilt to use it as well (for inline sass blocks)
|
|
|
|
::Tilt.register 'less', LocalLoadingLessTemplate
|
|
|
|
::Tilt.prefer(LocalLoadingLessTemplate)
|
2012-06-05 19:24:00 +02:00
|
|
|
end
|
2012-08-14 00:39:06 +02:00
|
|
|
|
2014-07-16 03:01:45 +02:00
|
|
|
def after_configuration
|
|
|
|
app.files.by_type(:source).watchers.each do |source|
|
|
|
|
::Less.paths << (source.directory + app.config[:css_dir]).to_s
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2012-06-05 19:24:00 +02:00
|
|
|
# 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
|
2016-01-14 20:21:42 +01:00
|
|
|
parser = ::Less::Parser.new(options.merge(filename: eval_file, line: line, paths: ['.', File.dirname(eval_file)]))
|
2012-06-05 19:24:00 +02:00
|
|
|
@engine = parser.parse(data)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2012-08-14 00:39:06 +02:00
|
|
|
end
|