Class: Sass::Tree::PropNode
- Defined in:
- lib/sass/tree/prop_node.rb,
lib/sass/css.rb
Overview
A static node reprenting a CSS property.
Instance Attribute Summary collapse
-
#name ⇒ String
The name of the property.
-
#value ⇒ String, Script::Node
The value of the property, either a plain string or a SassScript parse tree.
Attributes inherited from Node
#children, #filename, #line, #options
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Compares the names and values of two properties.
-
#initialize(name, value, prop_syntax) ⇒ PropNode
constructor
A new instance of PropNode.
-
#invalid_child?(child) ⇒ String
protected
Returns an error message if the given child node is invalid, and false otherwise.
-
#perform!(environment) ⇒ Object
protected
Runs any SassScript that may be embedded in the property.
-
#to_s(tabs, parent_name = nil) ⇒ String
Computes the CSS for the property.
- #to_sass(tabs, opts = {}) ⇒ Object
Methods inherited from Node
#<<, #_perform, #balance, #interpolate, #invisible?, #last, #perform, #perform_children, #render, #style
Constructor Details
#initialize(name, value, prop_syntax) ⇒ PropNode
Returns a new instance of PropNode.
21 22 23 24 25 26 |
# File 'lib/sass/tree/prop_node.rb', line 21
def initialize(name, value, prop_syntax)
@name = name
@value = value
@prop_syntax = prop_syntax
super()
end
|
Instance Attribute Details
#name ⇒ String
The name of the property.
9 10 11 |
# File 'lib/sass/tree/prop_node.rb', line 9
def name
@name
end
|
#value ⇒ String, Script::Node
The value of the property, either a plain string or a SassScript parse tree.
15 16 17 |
# File 'lib/sass/tree/prop_node.rb', line 15
def value
@value
end
|
Instance Method Details
#==(other) ⇒ Boolean
Compares the names and values of two properties.
33 34 35 |
# File 'lib/sass/tree/prop_node.rb', line 33
def ==(other)
self.class == other.class && name == other.name && value == other.value && super
end
|
#invalid_child?(child) ⇒ String (protected)
Returns an error message if the given child node is invalid, and false otherwise.
Sass::Tree::PropNode only allows other Sass::Tree::PropNodes and CommentNodes as children.
97 98 99 100 101 |
# File 'lib/sass/tree/prop_node.rb', line 97
def invalid_child?(child)
if !child.is_a?(PropNode) && !child.is_a?(CommentNode)
"Illegal nesting: Only properties may be nested beneath properties."
end
end
|
#perform!(environment) ⇒ Object (protected)
Runs any SassScript that may be embedded in the property.
85 86 87 88 89 |
# File 'lib/sass/tree/prop_node.rb', line 85
def perform!(environment)
@name = interpolate(@name, environment)
@value = @value.is_a?(String) ? interpolate(@value, environment) : @value.perform(environment).to_s
super
end
|
#to_s(tabs, parent_name = nil) ⇒ String
Computes the CSS for the property.
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/sass/tree/prop_node.rb', line 43
def to_s(tabs, parent_name = nil)
if @options[:property_syntax] == :old && @prop_syntax == :new
raise Sass::SyntaxError.new("Illegal property syntax: can't use new syntax when :property_syntax => :old is set.")
elsif @options[:property_syntax] == :new && @prop_syntax == :old
raise Sass::SyntaxError.new("Illegal property syntax: can't use old syntax when :property_syntax => :new is set.")
end
if value[-1] == ?;
raise Sass::SyntaxError.new("Invalid property: #{declaration.dump} (no \";\" required at end-of-line).", @line)
end
real_name = name
real_name = "#{parent_name}-#{real_name}" if parent_name
if value.empty? && children.empty?
raise Sass::SyntaxError.new("Invalid property: #{declaration.dump} (no value).", @line)
end
join_string = case style
when :compact; ' '
when :compressed; ''
else "\n"
end
spaces = ' ' * (tabs - 1)
to_return = ''
if !value.empty?
to_return << "#{spaces}#{real_name}:#{style == :compressed ? '' : ' '}#{value};#{join_string}"
end
children.each do |kid|
next if kid.invisible?
to_return << kid.to_s(tabs, real_name) << join_string
end
(style == :compressed && parent_name) ? to_return : to_return[0...-1]
end
|
#to_sass(tabs, opts = {}) ⇒ Object
39 40 41 |
# File 'lib/sass/css.rb', line 39
def to_sass(tabs, opts = {})
"#{' ' * tabs}#{opts[:old] ? ':' : ''}#{name}#{opts[:old] ? '' : ':'} #{value}\n"
end
|