Module: Sass::Files

Extended by:
Files
Included in:
Files
Defined in:
lib/sass/files.rb

Overview

This module contains various bits of functionality related to finding and caching Sass files.

Instance Method Summary collapse

Instance Method Details

#find_file_to_import(filename, load_paths) ⇒ Object

Raises:



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/sass/files.rb', line 38

def find_file_to_import(filename, load_paths)
  was_sass = false
  original_filename = filename

  if filename[-5..-1] == ".sass"
    filename = filename[0...-5]
    was_sass = true
  elsif filename[-4..-1] == ".css"
    return filename
  end

  new_filename = find_full_path("#{filename}.sass", load_paths)

  return new_filename if new_filename
  return filename + '.css' unless was_sass
  raise SyntaxError.new("File to import not found or unreadable: #{original_filename}.", @line)
end

#tree_for(filename, options) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/sass/files.rb', line 10

def tree_for(filename, options)
  options = Sass::Engine::DEFAULT_OPTIONS.merge(options)
  text = File.read(filename)

  if options[:cache]
    compiled_filename = sassc_filename(filename, options)
    sha = Digest::SHA1.hexdigest(text)

    if root = try_to_read_sassc(filename, compiled_filename, sha)
      root.options = options.merge(:filename => filename)
      return root
    end
  end

  engine = Sass::Engine.new(text, options.merge(:filename => filename))

  begin
    root = engine.to_tree
  rescue Sass::SyntaxError => err
    err.add_backtrace_entry(filename)
    raise err
  end

  try_to_write_sassc(root, compiled_filename, sha, options) if options[:cache]

  root
end