Class: Sass::Engine
- Inherits:
-
Object
- Object
- Sass::Engine
- Defined in:
- lib/sass/engine.rb
Overview
This class handles the parsing and compilation of the Sass template. Example usage:
template = File.read('stylesheets/sassy.sass')
sass_engine = Sass::Engine.new(template)
output = sass_engine.render
puts output
Defined Under Namespace
Classes: Line
Constant Summary collapse
- PROPERTY_CHAR =
The character that begins a CSS property.
?:
- 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.
?/
- SASS_LOUD_COMMENT_CHAR =
The character that indicates that a comment allows interpolation and should be preserved even in
:compressed
mode. ?!
- 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_OLD =
The regex that matches and extracts data from properties of the form
:name prop
. /^:([^\s=:"]+)\s*(?:\s+|$)(.*)/
- DEFAULT_OPTIONS =
The default options for Sass::Engine.
{ :style => :nested, :load_paths => [], :cache => true, :cache_location => './.sass-cache', :syntax => :sass, :filesystem_importer => Sass::Importers::Filesystem }.freeze
- @@old_property_deprecation =
Deprecation.new
Instance Attribute Summary collapse
-
#options ⇒ {Symbol => Object}
readonly
The options for the Sass engine.
Class Method Summary collapse
-
.for_file(filename, options) ⇒ Sass::Engine
Returns the Engine for the given file.
Instance Method Summary collapse
-
#dependencies ⇒ [Sass::Engine]
Gets a set of all the documents that are (transitive) dependencies of this document, not including the document itself.
-
#initialize(template, options = {}) ⇒ Engine
constructor
Creates a new Engine.
-
#render ⇒ String
(also: #to_css)
Render the template to CSS.
-
#render_with_sourcemap(sourcemap_uri) ⇒ (String, Sass::Source::Map)
Render the template to CSS and return the source map.
-
#source_encoding ⇒ Encoding?
Returns the original encoding of the document.
-
#to_tree ⇒ Sass::Tree::Node
Parses the document into its parse tree.
Constructor Details
#initialize(template, options = {}) ⇒ Engine
274 275 276 277 278 279 280 |
# File 'lib/sass/engine.rb', line 274
def initialize(template, options = {})
@options = self.class.normalize_options(options)
@template = template
@checked_encoding = false
@filename = nil
@line = nil
end
|
Instance Attribute Details
#options ⇒ {Symbol => Object} (readonly)
The options for the Sass engine. See the Sass options documentation.
255 256 257 |
# File 'lib/sass/engine.rb', line 255
def options
@options
end
|
Class Method Details
.for_file(filename, options) ⇒ Sass::Engine
Returns the Sass::Engine for the given file. This is preferable to Sass::Engine.new when reading from a file because it properly sets up the Engine's metadata, enables parse-tree caching, and infers the syntax from the filename.
237 238 239 240 241 242 243 244 245 246 247 248 249 |
# File 'lib/sass/engine.rb', line 237
def self.for_file(filename, options)
had_syntax = options[:syntax]
if had_syntax
# Use what was explicitly specified
elsif filename =~ /\.scss$/
options.merge!(:syntax => :scss)
elsif filename =~ /\.sass$/
options.merge!(:syntax => :sass)
end
Sass::Engine.new(File.read(filename), options.merge(:filename => filename))
end
|
Instance Method Details
#dependencies ⇒ [Sass::Engine]
Gets a set of all the documents that are (transitive) dependencies of this document, not including the document itself.
341 342 343 344 |
# File 'lib/sass/engine.rb', line 341
def dependencies
_dependencies(Set.new, engines = Set.new)
Sass::Util.array_minus(engines, [self])
end
|
#render ⇒ String Also known as: to_css
Render the template to CSS.
289 290 291 292 |
# File 'lib/sass/engine.rb', line 289
def render
return _to_tree.render unless @options[:quiet]
Sass::Util.silence_sass_warnings {_to_tree.render}
end
|
#render_with_sourcemap(sourcemap_uri) ⇒ (String, Sass::Source::Map)
Render the template to CSS and return the source map.
306 307 308 309 |
# File 'lib/sass/engine.rb', line 306
def render_with_sourcemap(sourcemap_uri)
return _render_with_sourcemap(sourcemap_uri) unless @options[:quiet]
Sass::Util.silence_sass_warnings {_render_with_sourcemap(sourcemap_uri)}
end
|
#source_encoding ⇒ Encoding?
Returns the original encoding of the document.
331 332 333 334 |
# File 'lib/sass/engine.rb', line 331
def source_encoding
check_encoding!
@source_encoding
end
|
#to_tree ⇒ Sass::Tree::Node
Parses the document into its parse tree. Memoized.
317 318 319 320 321 322 323 |
# File 'lib/sass/engine.rb', line 317
def to_tree
@tree ||= if @options[:quiet]
Sass::Util.silence_sass_warnings {_to_tree}
else
_to_tree
end
end
|