2010-02-22 01:18:08 -08:00
|
|
|
require 'sass/tree/node'
|
|
|
|
|
|
|
|
module Sass::Tree
|
|
|
|
class ExtendNode < Node
|
|
|
|
def initialize(selector)
|
|
|
|
@selector = selector
|
|
|
|
super()
|
|
|
|
end
|
|
|
|
|
2010-02-23 23:40:42 -08:00
|
|
|
def cssize(extends, parent)
|
|
|
|
@resolved_selector.members.each do |seq|
|
|
|
|
if seq.members.size > 1
|
|
|
|
raise Sass::SyntaxError.new("Can't extend #{seq.to_a.join}: can't extend nested selectors")
|
|
|
|
end
|
|
|
|
|
|
|
|
sseq = seq.members.first
|
|
|
|
if !sseq.is_a?(Sass::Selector::SimpleSequence)
|
|
|
|
raise Sass::SyntaxError.new("Can't extend #{seq.to_a.join}: invalid selector")
|
|
|
|
end
|
|
|
|
|
2010-04-11 14:22:24 -07:00
|
|
|
sel = sseq.members
|
2010-04-19 10:19:47 -07:00
|
|
|
parent.resolved_rules.members.each do |seq|
|
|
|
|
if !seq.members.last.is_a?(Sass::Selector::SimpleSequence)
|
|
|
|
raise Sass::SyntaxError.new("#{seq} can't extend: invalid selector")
|
|
|
|
end
|
|
|
|
|
|
|
|
extends[sel] = seq
|
|
|
|
end
|
2010-02-23 23:40:42 -08:00
|
|
|
end
|
|
|
|
|
|
|
|
[]
|
|
|
|
end
|
|
|
|
|
2010-02-22 01:18:08 -08:00
|
|
|
protected
|
|
|
|
|
|
|
|
def perform!(environment)
|
2010-03-08 22:38:55 -08:00
|
|
|
@resolved_selector = Sass::SCSS::CssParser.new(run_interp(@selector, environment)).
|
|
|
|
parse_selector(self.line, self.filename)
|
2010-02-22 01:18:08 -08:00
|
|
|
super
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|