103 lines
3.9 KiB
Ruby
103 lines
3.9 KiB
Ruby
|
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'
|