class Less::Rails::LessTransformer

Constants

TO_CSS_KEYS

Public Class Methods

call(input) click to toggle source
# File lib/less/rails/less_transformer.rb, line 24
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
default_mime_type() click to toggle source
# File lib/less/rails/less_transformer.rb, line 33
def self.default_mime_type
  'text/css'
end
evaluate(filename, source, scope) click to toggle source
# File lib/less/rails/less_transformer.rb, line 17
def self.evaluate(filename, source, scope)
  Less.Parser['scope'] = scope
  parser = ::Less::Parser.new config_to_less_parser_options(filename, scope)
  engine = parser.parse(source)
  engine.to_css config_to_css_options(scope)
end
new(filename, &block) click to toggle source
# File lib/less/rails/less_transformer.rb, line 8
def initialize(filename, &block)
  @filename = filename
  @source   = block.call
end

Protected Class Methods

config_from_rails(scope) click to toggle source
# File lib/less/rails/less_transformer.rb, line 58
def self.config_from_rails(scope)
  scope.environment.context_class.less_config
end
config_paths(scope) click to toggle source
# File lib/less/rails/less_transformer.rb, line 50
def self.config_paths(scope)
  config_from_rails(scope)[:paths]
end
config_raw(scope) click to toggle source
# File lib/less/rails/less_transformer.rb, line 54
def self.config_raw(scope)
  config_from_rails(scope)[:raw]
end
config_to_css_options(scope) click to toggle source
# File lib/less/rails/less_transformer.rb, line 46
def self.config_to_css_options(scope)
  Hash[config_from_rails(scope).each.to_a].slice *TO_CSS_KEYS
end
config_to_less_parser_options(filename, scope) click to toggle source
# File lib/less/rails/less_transformer.rb, line 39
def self.config_to_less_parser_options(filename, scope)
  paths = config_paths(scope) + scope.environment.paths
  local_path = scope.pathname.dirname
  paths += [local_path] unless paths.include? local_path
  {:filename => filename, :paths => paths, :dumpLineNumbers => config_from_rails(scope).line_numbers}.merge(config_raw(scope))
end

Public Instance Methods

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