class Less::Rails::ImportProcessor

Constants

IMPORT_SCANNER

lesscss.org/features/#import-options

PATHNAME_FINDER

Public Class Methods

call(input) click to toggle source
# File lib/less/rails/import_processor.rb, line 30
def self.call(input)
  filename = input[:filename]
  source   = input[:data]
  scope  = input[:environment].context_class.new(input)

  result = evaluate(filename, source, scope)
  scope.metadata.merge(data: result)
end
depend_on(scope, source, base=File.dirname(scope.logical_path)) click to toggle source
# File lib/less/rails/import_processor.rb, line 39
def self.depend_on(scope, source, base=File.dirname(scope.logical_path))
  import_paths = source.scan(IMPORT_SCANNER).flatten.compact.uniq
  import_paths.each do |path|
    pathname = PATHNAME_FINDER.call(scope, path) || PATHNAME_FINDER.call(scope, File.join(base, path))
    scope.depend_on(pathname) if pathname && pathname.to_s.ends_with?('.less')
    depend_on scope, File.read(pathname), File.dirname(path) if pathname
  end
  source
end
evaluate(filename, source, scope) click to toggle source
# File lib/less/rails/import_processor.rb, line 25
def self.evaluate(filename, source, scope)
  depend_on scope, source
  source
end
new(filename, &block) click to toggle source
# File lib/less/rails/import_processor.rb, line 16
def initialize(filename, &block)
  @filename = filename
  @source   = block.call
end

Public Instance Methods

render(scope, locals) click to toggle source
# File lib/less/rails/import_processor.rb, line 21
def render(scope, locals)
  self.class.evaluate(@filename, @source, scope)
end