class Sass::Tree::PropNode
@see Sass::Tree
A static node reprenting a CSS property.
def ==(other)
-
(Boolean)
- Whether or not this node and the other object
Parameters:
-
other
(Object
) -- The object to compare with
def ==(other) self.class == other.class && name == other.name && value == other.value && super end
def check!
def check! if @options[:property_syntax] && @options[:property_syntax] != @prop_syntax raise Sass::SyntaxError.new( "Illegal property syntax: can't use #{@prop_syntax} syntax when :property_syntax => #{@options[:property_syntax].inspect} is set.") elsif resolved_value.empty? raise Sass::SyntaxError.new("Invalid property: #{declaration.dump} (no value)." + pseudo_class_selector_message) end end
def declaration(opts = {:old => @prop_syntax == :old}, fmt = :sass)
-
fmt
(Symbol
) -- `:scss` or `:sass`. -
opts
({Symbol => Object}
) -- The options hash for the tree.
def declaration(opts = {:old => @prop_syntax == :old}, fmt = :sass) name = self.name.map {|n| n.is_a?(String) ? n : "\#{#{n.to_sass(opts)}}"}.join if name[0] == ?: raise Sass::SyntaxError.new("The \"#{name}: #{self.class.val_to_sass(value, opts)}\" hack is not allowed in the Sass indented syntax") end old = opts[:old] && fmt == :sass initial = old ? ':' : '' mid = old ? '' : ':' "#{initial}#{name}#{mid} #{self.class.val_to_sass(value, opts)}".rstrip end
def initialize(name, value, prop_syntax)
-
prop_syntax
(Symbol
) -- `:new` if this property uses `a: b`-style syntax, -
value
(Sass::Script::Node
) -- See \{#value} -
name
(Array
) -- See \{#name}
def initialize(name, value, prop_syntax) @name = Sass::Util.strip_string_array( Sass::Util.merge_adjacent_strings(name)) @value = value @tabs = 0 @prop_syntax = prop_syntax super() end
def pseudo_class_selector_message
-
(String)
- The message
def pseudo_class_selector_message return "" if @prop_syntax == :new || !value.is_a?(Sass::Script::String) || !value.value.empty? "\nIf #{declaration.dump} should be a selector, use \"\\#{declaration}\" instead." end
def val_to_sass(value, opts)
- Private: -
def val_to_sass(value, opts) val_to_sass_comma(value, opts).to_sass(opts) end
def val_to_sass_comma(node, opts)
def val_to_sass_comma(node, opts) return node unless node.is_a?(Sass::Script::Operation) return val_to_sass_concat(node, opts) unless node.operator == :comma Sass::Script::Operation.new( val_to_sass_concat(node.operand1, opts), val_to_sass_comma(node.operand2, opts), node.operator) end
def val_to_sass_concat(node, opts)
def val_to_sass_concat(node, opts) return node unless node.is_a?(Sass::Script::Operation) return val_to_sass_div(node, opts) unless node.operator == :space Sass::Script::Operation.new( val_to_sass_div(node.operand1, opts), val_to_sass_concat(node.operand2, opts), node.operator) end
def val_to_sass_div(node, opts)
def val_to_sass_div(node, opts) unless node.is_a?(Sass::Script::Operation) && node.operator == :div && node.operand1.is_a?(Sass::Script::Number) && node.operand2.is_a?(Sass::Script::Number) && (!node.operand1.original || !node.operand2.original) return node end Sass::Script::String.new("(#{node.to_sass(opts)})") end