module MirrorMirror::SassPatch

Sass should provide hooks for getting access to the AST a various stages of transformation. So that we don't have to monkeypatch it.

Public Class Methods

included(base) click to toggle source
# File lib/mirror-mirror/sass_patch.rb, line 7
def self.included(base)
  if base.respond_to?(:css_tree, true)
    # Sass >= 3.3
    base.send(:alias_method, :css_tree_without_mirror_mirror, :css_tree)
    base.send(:alias_method, :css_tree, :css_tree_with_mirror_mirror)
  else
    # Sass < 3.3
    base.send(:alias_method, :render_without_mirror_mirror, :render)
    base.send(:alias_method, :render, :render_with_mirror_mirror)
  end
end

Public Instance Methods

css_tree_with_mirror_mirror() click to toggle source
# File lib/mirror-mirror/sass_patch.rb, line 19
def css_tree_with_mirror_mirror
  root = css_tree_without_mirror_mirror
  MirrorVisitor.visit(root)
  root
end
render_with_mirror_mirror() click to toggle source
# File lib/mirror-mirror/sass_patch.rb, line 25
def render_with_mirror_mirror
  Sass::Tree::Visitors::CheckNesting.visit(self)
  result = Sass::Tree::Visitors::Perform.visit(self)
  Sass::Tree::Visitors::CheckNesting.visit(result) # Check again to validate mixins
  result, extends = Sass::Tree::Visitors::Cssize.visit(result)
  Sass::Tree::Visitors::Extend.visit(result, extends)
  MirrorVisitor.visit(result)
  result.to_s
end