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.



37
38
39
40
41
# File 'lib/middleman-core/renderers/sass.rb', line 37

def initialize(*args, &block)
  super

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

Instance Method Details

#evaluate(context, _) ⇒ String

Add exception messaging

Parameters:

  • context (Class)

Returns:

  • (String)


54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/middleman-core/renderers/sass.rb', line 54

def evaluate(context, _)
  @context ||= context

  sass_module = if defined?(::SassC)
    ::SassC
  else
    ::Sass
  end

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

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

#prepareObject



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

def prepare; end

#sass_optionsHash

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

Returns:

  • (Hash)


74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/middleman-core/renderers/sass.rb', line 74

def sass_options
  ctx = @context

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

  if ctx.config[:sass_source_maps]
    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

  options.merge(more_opts)
end

#syntaxSymbol

Define the expected syntax for the template

Returns:

  • (Symbol)


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

def syntax
  :sass
end