Sha256: f87c45a10f23471f16974d92c9fb583ca3a85b968d6b251dabf5cb2acdd4419a
Contents?: true
Size: 1.46 KB
Versions: 1
Compression:
Stored size: 1.46 KB
Contents
module Smurfville class SassVisitor < Sass::Tree::Visitors::Base def visit_import(node) if path = node.css_import? return Sass::Tree::CssImportNode.resolved("url(#{path})") end file = node.imported_file handle_import_loop!(node) if @stack.any? {|e| e[:filename] == file.options[:filename]} @stack.push(:filename => node.filename, :line => node.line) root = file.to_tree Sass::Tree::Visitors::CheckNesting.visit(root) node.children = root.children.map {|c| visit(c)}.flatten node rescue Sass::SyntaxError => e e.modify_backtrace(:filename => node.imported_file.options[:filename]) e.add_backtrace(:filename => node.filename, :line => node.line) raise e ensure @stack.pop unless path end protected def initialize # Stack trace information, including mixin includes and imports. @stack = [] end def handle_import_loop!(node) msg = "An @import loop has been found:" files = @stack.map {|s| s[:filename]}.compact if node.filename == node.imported_file.options[:filename] raise Sass::SyntaxError.new("#{msg} #{node.filename} imports itself") end files << node.filename << node.imported_file.options[:filename] msg << "\n" << Sass::Util.enum_cons(files, 2).map do |m1, m2| " #{m1} imports #{m2}" end.join("\n") raise Sass::SyntaxError.new(msg) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
smurfville-0.0.6 | lib/smurfville/sass_visitor.rb |