class Middleman::Renderers::Sass::SassPlusCSSFilenameTemplate

A SassTemplate for Tilt which outputs debug messages

Public Class Methods

new(*args, &block) click to toggle source
Calls superclass method
# File lib/middleman-core/renderers/sass.rb, line 32
def initialize(*args, &block)
  super

  @context = @options[:context] if @options.key?(:context)
end

Public Instance Methods

evaluate(context, _) click to toggle source

Add exception messaging @param [Class] context @return [String]

# File lib/middleman-core/renderers/sass.rb, line 49
def evaluate(context, _)
  @context ||= context

  @engine = ::SassC::Engine.new(data, sass_options)

  begin
    @engine.render
  rescue ::SassC::SyntaxError => e
    raise e if @context.app.build?

    exception_to_css(e)
  end
end
exception_to_css(e) click to toggle source
# File lib/middleman-core/renderers/sass.rb, line 63
        def exception_to_css(e)
          header = "#{e.class}: #{e.message}"

          <<~END
            /*
            #{header.gsub('*/', '*\\/')}

            Backtrace:\n#{e.backtrace.join("\n").gsub('*/', '*\\/')}
            */
            body:before {
              white-space: pre;
              font-family: monospace;
              content: "#{header.gsub('"', '\"').gsub("\n", '\\A ')}"; }
          END
        end
prepare() click to toggle source
# File lib/middleman-core/renderers/sass.rb, line 44
def prepare; end
sass_options() click to toggle source

Change Sass path, for url functions, to the build folder if we’re building @return [Hash]

# File lib/middleman-core/renderers/sass.rb, line 81
def sass_options
  ctx = @context

  preexisting_load_paths = begin
    ::Sass.load_paths
  rescue
    []
  end

  more_opts = {
    load_paths: preexisting_load_paths + ctx.app.config[:sass_assets_paths],
    filename: eval_file,
    line: line,
    syntax: syntax,
    custom: {}.merge!(options[:custom] || {}).merge!(
      middleman_context: ctx.app,
      current_resource: ctx.current_resource
    )
  }

  if ctx.app.config[:sass_source_maps] || (ctx.app.config[:sass_source_maps].nil? && ctx.app.development?)
    more_opts[:source_map_file] = '.'
    more_opts[:source_map_embed] = true
    more_opts[:source_map_contents] = true
  end

  if ctx.is_a?(::Middleman::TemplateContext) && file
    more_opts[:css_filename] = file.sub(/\.s[ac]ss$/, '')
  end

  {}.merge!(options).merge!(more_opts)
end
syntax() click to toggle source

Define the expected syntax for the template @return [Symbol]

# File lib/middleman-core/renderers/sass.rb, line 40
def syntax
  :sass
end