| dir = File.dirname(__FILE__) |
| $LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir) |
| |
| require 'sass/version' |
| |
| # The module that contains everything Sass-related: |
| # |
| # * {Sass::Engine} is the class used to render Sass/SCSS within Ruby code. |
| # * {Sass::Plugin} is interfaces with web frameworks (Rails and Merb in particular). |
| # * {Sass::SyntaxError} is raised when Sass encounters an error. |
| # * {Sass::CSS} handles conversion of CSS to Sass. |
| # |
| # Also see the {file:SASS_REFERENCE.md full Sass reference}. |
| module Sass |
| class << self |
| # @private |
| attr_accessor :tests_running |
| end |
| |
| # The global load paths for Sass files. This is meant for plugins and |
| # libraries to register the paths to their Sass stylesheets to that they may |
| # be `@imported`. This load path is used by every instance of {Sass::Engine}. |
| # They are lower-precedence than any load paths passed in via the |
| # {file:SASS_REFERENCE.md#load_paths-option `:load_paths` option}. |
| # |
| # If the `SASS_PATH` environment variable is set, |
| # the initial value of `load_paths` will be initialized based on that. |
| # The variable should be a colon-separated list of path names |
| # (semicolon-separated on Windows). |
| # |
| # Note that files on the global load path are never compiled to CSS |
| # themselves, even if they aren't partials. They exist only to be imported. |
| # |
| # @example |
| # Sass.load_paths << File.dirname(__FILE__ + '/sass') |
| # @return [Array<String, Pathname, Sass::Importers::Base>] |
| def self.load_paths |
| @load_paths ||= if ENV['SASS_PATH'] |
| ENV['SASS_PATH'].split(Sass::Util.windows? ? ';' : ':') |
| else |
| [] |
| end |
| end |
| |
| # Compile a Sass or SCSS string to CSS. |
| # Defaults to SCSS. |
| # |
| # @param contents [String] The contents of the Sass file. |
| # @param options [{Symbol => Object}] An options hash; |
| # see {file:SASS_REFERENCE.md#Options the Sass options documentation} |
| # @raise [Sass::SyntaxError] if there's an error in the document |
| # @raise [Encoding::UndefinedConversionError] if the source encoding |
| # cannot be converted to UTF-8 |
| # @raise [ArgumentError] if the document uses an unknown encoding with `@charset` |
| def self.compile(contents, options = {}) |
| options[:syntax] ||= :scss |
| Engine.new(contents, options).to_css |
| end |
| |
| # Compile a file on disk to CSS. |
| # |
| # @raise [Sass::SyntaxError] if there's an error in the document |
| # @raise [Encoding::UndefinedConversionError] if the source encoding |
| # cannot be converted to UTF-8 |
| # @raise [ArgumentError] if the document uses an unknown encoding with `@charset` |
| # |
| # @overload compile_file(filename, options = {}) |
| # Return the compiled CSS rather than writing it to a file. |
| # |
| # @param filename [String] The path to the Sass, SCSS, or CSS file on disk. |
| # @param options [{Symbol => Object}] An options hash; |
| # see {file:SASS_REFERENCE.md#Options the Sass options documentation} |
| # @return [String] The compiled CSS. |
| # |
| # @overload compile_file(filename, css_filename, options = {}) |
| # Write the compiled CSS to a file. |
| # |
| # @param filename [String] The path to the Sass, SCSS, or CSS file on disk. |
| # @param options [{Symbol => Object}] An options hash; |
| # see {file:SASS_REFERENCE.md#Options the Sass options documentation} |
| # @param css_filename [String] The location to which to write the compiled CSS. |
| def self.compile_file(filename, *args) |
| options = args.last.is_a?(Hash) ? args.pop : {} |
| css_filename = args.shift |
| result = Sass::Engine.for_file(filename, options).render |
| if css_filename |
| options[:css_filename] ||= css_filename |
| open(css_filename, "w") {|css_file| css_file.write(result)} |
| nil |
| else |
| result |
| end |
| end |
| end |
| |
| require 'sass/logger' |
| require 'sass/util' |
| |
| require 'sass/engine' |
| require 'sass/plugin' if defined?(Merb::Plugins) |
| require 'sass/railtie' |
| require 'sass/features' |