Module: Compass::Configuration::Adapters

Included in:
Data
Defined in:
lib/compass/configuration/adapters.rb

Overview

The adapters module provides methods that make configuration data from a compass project adapt to various consumers of configuration data

Instance Method Summary collapse

Instance Method Details

#absolute_path?(path) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
60
# File 'lib/compass/configuration/adapters.rb', line 57

def absolute_path?(path)
  # Pretty basic implementation
  path.index(File::SEPARATOR) == 0 || path.index(':') == 1
end

#resolve_additional_import_pathsObject



47
48
49
50
51
52
53
54
55
# File 'lib/compass/configuration/adapters.rb', line 47

def resolve_additional_import_paths
  (additional_import_paths || []).map do |path|
    if path.is_a?(String) && project_path && !absolute_path?(path)
      File.join(project_path, path)
    else
      path
    end
  end
end

#sass_3_4?Boolean

Returns:

  • (Boolean)


101
102
103
# File 'lib/compass/configuration/adapters.rb', line 101

def sass_3_4?
  Sass.version[:major] == 3 && Sass.version[:minor] == 4
end

#sass_load_pathsObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/compass/configuration/adapters.rb', line 80

def sass_load_paths
  load_paths = []
  load_paths << sass_path if sass_path && File.directory?(sass_path)
  Compass::Frameworks::ALL.each do |f|
    load_paths << f.stylesheets_directory if File.directory?(f.stylesheets_directory)
  end
  importer = sass_options[:filesystem_importer] if sass_options && sass_options[:filesystem_importer]
  importer ||= Sass::Importers::Filesystem
  load_paths += resolve_additional_import_paths
  load_paths.map! do |p|
    next p if p.respond_to?(:find_relative)
    importer.new(p.to_s)
  end
  # TODO: When sprites are extracted to their own plugin, this
  # TODO: will need to be extracted to there.
  if defined?(Compass::SpriteImporter.new)
    load_paths << Compass::SpriteImporter.new
  end
  load_paths
end

#to_compiler_arguments(additional_options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/compass/configuration/adapters.rb', line 6

def to_compiler_arguments(additional_options = {})
  engine_opts = to_sass_engine_options.merge(additional_options)
  # we have to pass the quiet option in the nested :sass hash to disambiguate it from the compass compiler's own quiet option.
  if engine_opts.has_key?(:quiet)
    engine_opts[:sass] ||= {}
    engine_opts[:sass][:quiet] = engine_opts.delete(:quiet)
  end
  [project_path, sass_path, css_path, engine_opts]
end

#to_sass_engine_optionsObject



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/compass/configuration/adapters.rb', line 62

def to_sass_engine_options
  engine_opts = {:load_paths => sass_load_paths}
  engine_opts[:style] = output_style if output_style
  engine_opts[:line_comments] = line_comments
  if sass_3_4?
    engine_opts[:sourcemap] = sourcemap ? :auto : :none
  else
    engine_opts[:sourcemap] = sourcemap
  end
  engine_opts[:cache] = cache
  engine_opts[:cache_location] = cache_path
  engine_opts[:quiet] = disable_warnings if disable_warnings
  engine_opts[:compass] = {}
  engine_opts[:compass][:environment] = environment
  engine_opts[:full_exception] = (environment == :development)
  engine_opts.merge!(sass_options || {})
end

#to_sass_plugin_optionsObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/compass/configuration/adapters.rb', line 16

def to_sass_plugin_options
  locations = []
  locations << [sass_path, css_path] if sass_path && css_path
  Compass::Frameworks::ALL.each do |framework|
    locations << [framework.stylesheets_directory, File.join(css_path || css_dir || ".", framework.name)]
  end
  plugin_opts = {:template_location => locations}
  plugin_opts[:style] = output_style if output_style
  plugin_opts[:line_comments] = line_comments
  if sass_3_4?
    plugin_opts[:sourcemap] = sourcemap ? :auto : :none
  else
    plugin_opts[:sourcemap] = sourcemap
  end
  plugin_opts[:cache] = cache unless cache.nil?
  plugin_opts[:cache_location] = cache_path unless cache_path.nil?
  plugin_opts[:quiet] = disable_warnings if disable_warnings
  plugin_opts[:compass] = {}
  plugin_opts[:compass][:environment] = environment
  plugin_opts.merge!(sass_options || {})
  plugin_opts[:load_paths] ||= []
  plugin_opts[:load_paths] += resolve_additional_import_paths
  # TODO: When sprites are extracted to their own plugin, this
  # TODO: will need to be extracted to there.
  if defined?(Compass::SpriteImporter.new)
    plugin_opts[:load_paths] << Compass::SpriteImporter.new
  end
  plugin_opts[:full_exception] = (environment == :development)
  plugin_opts
end