Class: Sass::Engine

Inherits:
Object show all
Includes:
Haml::Util
Defined in:
lib/sass/engine.rb

Overview

This is the class where all the parsing and processing of the Sass template is done. It can be directly used by the user by creating a new instance and calling render to render the template. For example:

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

Defined Under Namespace

Classes: Line

Constant Summary collapse

ATTRIBUTE_CHAR =

The character that begins a CSS attribute.

?:
SCRIPT_CHAR =

The character that designates that an attribute 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

?+
ATTRIBUTE =

The regex that matches and extracts data from attributes of the form :name attr.

/^:([^\s=:]+)\s*(=?)(?:\s+|$)(.*)/
ATTRIBUTE_ALTERNATE_MATCHER =

The regex that matches attributes of the form name: attr.

/^[^\s:]+\s*[=:](\s|$)/
ATTRIBUTE_ALTERNATE =

The regex that matches and extracts data from attributes of the form name: attr.

/^([^\s=:]+)(\s*=|:)(?:\s+|$)(.*)/

Constants included from Haml::Util

Haml::Util::RUBY_VERSION

Instance Method Summary collapse

Methods included from Haml::Util

#def_static_method, #enum_with_index, #has?, #map_hash, #map_keys, #map_vals, #powerset, #ruby1_8?, #static_method_name, #to_hash

Constructor Details

#initialize(template, options = {}) ⇒ Engine

Creates a new instace of Sass::Engine that will compile the given template string when render is called. See README.rdoc for available options.

TODO: Add current options to REFRENCE. Remember :filename!

When adding options, remember to add information about them to README.rdoc! ++



91
92
93
94
95
96
97
98
99
# File 'lib/sass/engine.rb', line 91

def initialize(template, options={})
  @options = {
    :style => :nested,
    :load_paths => ['.']
  }.merge! options
  @template = template
  @environment = Environment.new
  @environment.set_var("important", Script::String.new("!important"))
end

Instance Method Details

#renderObject Also known as: to_css

Processes the template and returns the result as a string.



102
103
104
105
106
107
108
109
110
111
112
# File 'lib/sass/engine.rb', line 102

def render
  begin
    render_to_tree.perform(@environment).to_s
  rescue SyntaxError => err
    err.sass_line = @line unless err.sass_line
    unless err.sass_filename
      err.add_backtrace_entry(@options[:filename])
    end
    raise err
  end
end