Class: Middleman::Renderers::Sass::SassPlusCSSFilenameTemplate

Inherits:
Tilt::SassTemplate
  • Object
show all
Defined in:
lib/middleman-core/renderers/sass.rb

Overview

A SassTemplate for Tilt which outputs debug messages

Direct Known Subclasses

ScssPlusCSSFilenameTemplate

Instance Method Summary collapse

Constructor Details

#initialize(*args, &block) ⇒ SassPlusCSSFilenameTemplate

Returns a new instance of SassPlusCSSFilenameTemplate.



42
43
44
45
46
47
48
# File 'lib/middleman-core/renderers/sass.rb', line 42

def initialize(*args, &block)
  super
  
  if @options.has_key?(:context)
    @context = @options[:context]
  end
end

Instance Method Details

#evaluate(context, locals, &block) ⇒ String

Add exception messaging

Parameters:

  • context (Class)
  • locals (Hash)

Returns:

  • (String)


62
63
64
65
66
67
68
69
70
71
# File 'lib/middleman-core/renderers/sass.rb', line 62

def evaluate(context, locals, &block)
  @context ||= context
  @engine = ::Sass::Engine.new(data, sass_options)

  begin
    @engine.render
  rescue ::Sass::SyntaxError => e
    ::Sass::SyntaxError.exception_to_css(e, :full_exception => true)
  end
end

#prepareObject



56
# File 'lib/middleman-core/renderers/sass.rb', line 56

def prepare; end

#sass_optionsHash

Change Sass path, for url functions, to the build folder if we’re building

Returns:

  • (Hash)


75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/middleman-core/renderers/sass.rb', line 75

def sass_options
  more_opts = { :filename => eval_file, :line => line, :syntax => syntax }
  
  if @context.is_a?(::Middleman::Application) && file
    location_of_sass_file = File.expand_path(@context.source, @context.root)
  
    parts = basename.split('.')
    parts.pop
    more_opts[:css_filename] = File.join(location_of_sass_file, @context.css_dir, parts.join("."))
  end
  
  options.merge(more_opts)
end

#syntaxSymbol

Define the expected syntax for the template

Returns:

  • (Symbol)


52
53
54
# File 'lib/middleman-core/renderers/sass.rb', line 52

def syntax
  :sass
end