class Object

Constants

SOURCE_MAPS_DIRECTORY

Public Instance Methods

copy_dependencies(files) click to toggle source
# File lib/compass-rails-source-maps/sass_template.rb, line 7
def copy_dependencies(files)
  files.each do |file|
    FileUtils.cp_r(file, ::Rails.root.join("public", SOURCE_MAPS_DIRECTORY, File.basename(file)))
  end
end
evaluate(context, locals, &block) click to toggle source
# File lib/compass-rails-source-maps/sass_template.rb, line 14
def evaluate(context, locals, &block)
  #raise 'test'
  if self.class.name == 'CompassRails::SpriteImporter'
    return base_evaluate(context, locals, &block)
  end
  cache_store = Sprockets::SassCacheStore.new(context.environment)
  paths  = context.environment.paths.map { |path| CompassRails::SpriteImporter.new(path) }
  paths += context.environment.paths.map { |path| Sass::Rails::SassImporter.new(path) }
  paths += ::Rails.application.config.sass.load_paths

  options = CompassRails.sass_config.merge({
    sourcemap_filename:  ::Sass::Util::sourcemap_name(basename),
    filename:            eval_file,
    line:                line,
    syntax:              syntax,
    cache_store:         cache_store,
    cache:               ::Rails.application.config.assets.debug,
    line_numbers:        ::Rails.application.config.sass.line_numbers,
    line_comments:       ::Rails.application.config.sass.line_comments,
    importer:            CompassRailsSourceMaps::SassImporter.new(context.pathname),
    load_paths:          paths,
    sprockets:           {
      context:     context,
      environment: context.environment
    }
  })
  result, mapping = ::Sass::Engine.new(data, options).render_with_sourcemap("/#{SOURCE_MAPS_DIRECTORY}/#{options[:sourcemap_filename]}")

  write_output(data, ::Rails.root.join("public", SOURCE_MAPS_DIRECTORY, basename).to_s)
  write_output(mapping.to_json(
      css_path:       basename.gsub(".#{syntax.to_s}", ""),
      sourcemap_path: ::Rails.root.join("public", SOURCE_MAPS_DIRECTORY, options[:sourcemap_filename])) + "\n",
    ::Rails.root.join("public", SOURCE_MAPS_DIRECTORY, options[:sourcemap_filename]).to_s)
  copy_dependencies(context._dependency_paths)

  result
rescue ::Sass::SyntaxError => e
  context.__LINE__ = e.sass_backtrace.first[:line]
  raise e
end
write_output(text, destination) click to toggle source
# File lib/compass-rails-source-maps/sass_template.rb, line 2
def write_output(text, destination)
  FileUtils.mkdir_p(::Rails.root.join("public", SOURCE_MAPS_DIRECTORY))
  File.open(destination, 'wb') { |file| file.write(text) }
end