Module: Compass::Configuration::Helpers

Included in:
Compass
Defined in:
lib/compass/configuration/helpers.rb

Overview

The helpers are available as methods on the Compass module. E.g. Compass.configuration

Constant Summary collapse

KNOWN_CONFIG_LOCATIONS =

TODO: Deprecate the src/config.rb location.

['config/compass.rb', ".compass/config.rb", "config/compass.config", "config.rb", "src/config.rb"]

Instance Method Summary collapse

Instance Method Details

#add_project_configuration(*args) ⇒ Object

Read the configuration file for this project

Raises:

  • (ArgumentError)


64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/compass/configuration/helpers.rb', line 64

def add_project_configuration(*args)
  options = args.last.is_a?(Hash) ? args.pop : {}
  configuration_file_path = args.shift || detect_configuration_file

  raise ArgumentError, "Too many arguments" if args.any?
  if AppIntegration.default? && data = configuration_for(configuration_file_path, nil, configuration_for(options[:defaults]))
    if data.raw_project_type
      add_configuration(data.raw_project_type.to_sym)
    elsif options[:project_type]
      add_configuration(options[:project_type])
    else
      add_configuration(:stand_alone)
    end
    add_configuration(data)
  else
    add_configuration(options[:project_type] || configuration.project_type_without_default || (yield if block_given?) || :stand_alone)
  end
end

#compilerObject

Deprecated.


99
100
101
102
103
104
# File 'lib/compass/configuration/helpers.rb', line 99

def compiler
  Compass::Deprecation.deprecated!(:compiler_accessor,
    "Compass.compiler is deprecated. Use Compass.sass_compiler instead.")
  Compass::Deprecation.mark_as_issued(:compass_compiler_constructor)
  Compass::Compiler.new(*Compass.configuration.to_compiler_arguments)
end

#configuration_for(config, filename = nil, defaults = nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/compass/configuration/helpers.rb', line 6

def configuration_for(config, filename = nil, defaults = nil)
  if config.nil?
    nil
  elsif config.is_a?(Compass::Configuration::Data)
    config
  elsif config.instance_of?(Hash)
    Compass::Configuration::Data.new(filename, config)
  elsif config.respond_to?(:read)
    filename ||= config.to_s if config.is_a?(Pathname)
    Compass::Configuration::FileData.new_from_string(config.read, filename, defaults)
  elsif config.is_a?(Hash)
    Compass::Configuration::Data.new(filename, config)
  elsif config.is_a?(String)
    Compass::Configuration::FileData.new_from_file(config, defaults)
  elsif config.is_a?(Symbol)
    Compass::AppIntegration.lookup(config).configuration
  else
    raise "I don't know what to do with: #{config.inspect}"
  end
end

#configure_sass_plugin!Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/compass/configuration/helpers.rb', line 31

def configure_sass_plugin!
  require 'sass/plugin'
  config = sass_plugin_configuration
  locations = config.delete(:template_location)
  Sass::Plugin.options.merge!(config)
  locations.each do |sass_dir, css_dir|
    unless Sass::Plugin.engine_options[:load_paths].include?(sass_dir)
      Sass::Plugin.add_template_location sass_dir, css_dir
    end
  end
  unless @callbacks_loaded
    on_saved = Proc.new do |sass_file, css_file|
                 Compass.configuration.run_stylesheet_saved(css_file)
               end
    if Sass::Plugin.respond_to?(:on_updated_stylesheet)
      Sass::Plugin.on_updated_stylesheet(&on_saved)
    else
      Sass::Plugin.on_updating_stylesheet(&on_saved)
    end
    
    Sass::Plugin.on_compilation_error do |e, filename, css|
      Compass.configuration.run_stylesheet_error(filename, e.message)
    end
    
    @callbacks_loaded = true
  end
end

#detect_configuration_file(project_path = nil) ⇒ Object

Finds the configuration file, if it exists in a known location.



87
88
89
90
# File 'lib/compass/configuration/helpers.rb', line 87

def detect_configuration_file(project_path = nil)
  possible_files = KNOWN_CONFIG_LOCATIONS.map{|f| projectize(f, project_path) }
  possible_files.detect{|f| File.exists?(f)}
end

#handle_configuration_change!Object



92
93
94
95
96
# File 'lib/compass/configuration/helpers.rb', line 92

def handle_configuration_change!
  if (compiler = Compass.compiler).new_config?
    compiler.clean!
  end
end

#sass_compiler(*args) ⇒ Object



106
107
108
# File 'lib/compass/configuration/helpers.rb', line 106

def sass_compiler(*args)
  Compass::SassCompiler.new(*args)
end

#sass_engine_optionsObject



59
60
61
# File 'lib/compass/configuration/helpers.rb', line 59

def sass_engine_options
  configuration.to_sass_engine_options
end

#sass_plugin_configurationObject



27
28
29
# File 'lib/compass/configuration/helpers.rb', line 27

def sass_plugin_configuration
  configuration.to_sass_plugin_options
end