Class | Sass::Engine
In: | lib/sass/engine.rb
Parent: | Object

This class handles the parsing and compilation of the Sass template. Example usage:

        template = File.load('stylesheets/sassy.sass')
        sass_engine = Sass::Engine.new(template)
        output = sass_engine.render
        puts output

### Methods

new render source_encoding to_css to_tree

### Included Modules

Haml::Util

### Classes and Modules

Class Sass::Engine::Line

### Constants

PROPERTY_CHAR | = | ?: |  | The character that begins a CSS property.
SCRIPT_CHAR | = | ?= |  | The character that designates that a property should be assigned to a SassScript expression.
COMMENT_CHAR | = | ?/ |  | The character that designates the beginning of a comment, either Sass or CSS.
SASS_COMMENT_CHAR | = | ?/ |  | The character that follows the general COMMENT_CHAR and designates a Sass comment, which is not output as a CSS comment.
CSS_COMMENT_CHAR | = | ?* |  | The character that follows the general COMMENT_CHAR and designates a CSS comment, which is embedded in the CSS document.
DIRECTIVE_CHAR | = | ?@ |  | The character used to denote a compiler directive.
ESCAPE_CHAR | = | ?\\ |  | Designates a non-parsed rule.
MIXIN_DEFINITION_CHAR | = | ?= |  | Designates block as mixin definition rather than CSS rules to output
MIXIN_INCLUDE_CHAR | = | ?+ |  | Includes named mixin declared using MIXIN_DEFINITION_CHAR
PROPERTY_NEW_MATCHER | = | /^[^\s:"\[]+\s*[=:](\s|$)/ |  | The regex that matches properties of the form `name: prop`.
PROPERTY_NEW | = | /^([^\s=:"]+)\s*(=|:)(?:\s+|$)(.*)/ |  | The regex that matches and extracts data from properties of the form `name: prop`.
PROPERTY_OLD | = | /^:([^\s=:"]+)\s*(=?)(?:\s+|$)(.*)/ |  | The regex that matches and extracts data from properties of the form `:name prop`.
DEFAULT_OPTIONS | = | { :style => :nested, :load_paths => ['.'], :cache => true, :cache_location => './.sass-cache', :syntax => :sass, }.freeze |  | The default options for Sass::Engine. @api public
MIXIN_DEF_RE | = | /^(?:=|@mixin)\s*(#{Sass::SCSS::RX::IDENT})(.*)$/
MIXIN_INCLUDE_RE | = | /^(?:\+|@include)\s*(#{Sass::SCSS::RX::IDENT})(.*)$/

### Public Class methods

new(template, options={})

@param template [String] The Sass template.

      This template can be encoded using any encoding
      that can be converted to Unicode.
      If the template contains an `@charset` declaration,
      that overrides the Ruby encoding
      (see {file:SASS_REFERENCE.md#encodings the encoding documentation})

@param options [{Symbol => Object}] An options hash;

      see {file:SASS_REFERENCE.md#sass_options the Sass options documentation}

[Source]

         # File lib/sass/engine.rb, line 143
    143:     def initialize(template, options={})
    144:       @options = DEFAULT_OPTIONS.merge(options.reject {|k, v| v.nil?})
    145:       @template = template
    146:
    147:       # Support both, because the docs said one and the other actually worked
    148:       # for quite a long time.
    149:       @options[:line_comments] ||= @options[:line_numbers]
    150:
    151:       # Backwards compatibility
    152:       @options[:property_syntax] ||= @options[:attribute_syntax]
    153:       case @options[:property_syntax]
    154:       when :alternate; @options[:property_syntax] = :new
    155:       when :normal; @options[:property_syntax] = :old
    156:       end
    157:     end

### Public Instance methods

render()

Render the template to CSS.

@return [String] The 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`

[Source]

         # File lib/sass/engine.rb, line 166
    166:     def render
    167:       return _render unless @options[:quiet]
    168:       Haml::Util.silence_haml_warnings {_render}
    169:     end

source_encoding()

Returns the original encoding of the document, or `nil` under Ruby 1.8.

@return [Encoding, nil] @raise [Encoding::UndefinedConversionError] if the source encoding

      cannot be converted to UTF-8

@raise [ArgumentError] if the document uses an unknown encoding with `@charset`

[Source]

         # File lib/sass/engine.rb, line 188
    188:     def source_encoding
    189:       check_encoding!
    190:       @original_encoding
    191:     end

to_css()

Alias for render

to_tree()

Parses the document into its parse tree.

@return [Sass::Tree::Node] The root of the parse tree. @raise [Sass::SyntaxError] if there‘s an error in the document

[Source]

         # File lib/sass/engine.rb, line 176
    176:     def to_tree
    177:       return _to_tree unless @options[:quiet]
    178:       Haml::Util.silence_haml_warnings {_to_tree}
    179:     end

[Validate]