module Sass::Plugin::Configuration

We keep configuration in its own self-contained file so that we can load it independently in Rails 3, where the full plugin stuff is lazy-loaded.

Note that this is not guaranteed to be thread-safe. For guaranteed thread safety, use a separate {Sass::Plugin} for each thread.

Public Instance Methods

add_template_location(template_location, css_location = options[:css_location]) click to toggle source

Adds a new template-location/css-location mapping. This means that Sass/SCSS files in ‘template_location` will be compiled to CSS files in `css_location`.

This is preferred over manually manipulating the {file:SASS_REFERENCE.md#template_location-option ‘:template_location` option} since the option can be in multiple formats.

Note that this method will change ‘options` to be in the Array format. This means that even if `options` had previously been a Hash or a String, it will now be an Array.

@param template_location [String] The location where Sass/SCSS files will be. @param css_location [String] The location where compiled CSS files will go.

# File lib/sass/plugin/configuration.rb, line 53
def add_template_location(template_location, css_location = options[:css_location])
  normalize_template_location!
  template_location_array << [template_location, css_location]
end
default_options() click to toggle source

Returns the default options for a {Sass::Plugin::Compiler}.

@return [{Symbol => Object}]

# File lib/sass/plugin/configuration.rb, line 12
def default_options
  @default_options ||= {
    :css_location       => './public/stylesheets',
    :always_update      => false,
    :always_check       => true,
    :full_exception     => true,
    :cache_location     => ".sass-cache"
  }.freeze
end
options() click to toggle source

An options hash. See {file:SASS_REFERENCE.md#Options the Sass options documentation}.

@return [{Symbol => Object}]

# File lib/sass/plugin/configuration.rb, line 33
def options
  @options ||= default_options.dup
end
remove_template_location(template_location, css_location = options[:css_location]) click to toggle source

Removes a template-location/css-location mapping. This means that Sass/SCSS files in ‘template_location` will no longer be compiled to CSS files in `css_location`.

This is preferred over manually manipulating the {file:SASS_REFERENCE.md#template_location-option ‘:template_location` option} since the option can be in multiple formats.

Note that this method will change ‘options` to be in the Array format. This means that even if `options` had previously been a Hash or a String, it will now be an Array.

@param template_location [String]

The location where Sass/SCSS files were,
which is now going to be ignored.

@param css_location [String]

The location where compiled CSS files went, but will no longer go.

@return [Boolean]

Non-`nil` if the given mapping already existed and was removed,
or `nil` if nothing was changed.
# File lib/sass/plugin/configuration.rb, line 80
def remove_template_location(template_location, css_location = options[:css_location])
  normalize_template_location!
  template_location_array.delete([template_location, css_location])
end
reset!() click to toggle source

Resets the options and {Sass::Callbacks::InstanceMethods#clear_callbacks! clears all callbacks}.

# File lib/sass/plugin/configuration.rb, line 24
def reset!
  @options = nil
  clear_callbacks!
end
template_location_array() click to toggle source

Returns the template locations configured for Sass as an array of ‘[template_location, css_location]` pairs. See the {file:SASS_REFERENCE.md#template_location-option `:template_location` option} for details.

Modifications to the returned array may not be persistent. Use {#add_template_location} and {#remove_template_location} instead.

@return [Array<(String, String)>]

An array of `[template_location, css_location]` pairs.
# File lib/sass/plugin/configuration.rb, line 95
def template_location_array
  convert_template_location(options[:template_location], options[:css_location])
end

Private Instance Methods

convert_template_location(template_location, css_location) click to toggle source

Returns the given template location, as an array. If it’s already an array, it is returned unmodified. Otherwise, a new array is created and returned.

@param template_location [String, Array<(String, String)>]

A single template location, or a pre-normalized array of template
locations and CSS locations.

@param css_location [String?]

The location for compiled CSS files.

@return [Array<(String, String)>]

An array of `[template_location, css_location]` pairs.
# File lib/sass/plugin/configuration.rb, line 111
def convert_template_location(template_location, css_location)
  return template_location if template_location.is_a?(Array)

  case template_location
  when nil
    if css_location
      [[File.join(css_location, 'sass'), css_location]]
    else
      []
    end
  when String
    [[template_location, css_location]]
  else
    template_location.to_a
  end
end
normalize_template_location!() click to toggle source
# File lib/sass/plugin/configuration.rb, line 128
def normalize_template_location!
  options[:template_location] = convert_template_location(
    options[:template_location], options[:css_location])
end