A SassScript parse node representing a binary operation, such as `$a + $b` or `“foo” + 1`.
@param operand1 [Script::Node] The parse-tree node
for the right-hand side of the operator
@param operand2 [Script::Node] The parse-tree node
for the left-hand side of the operator
@param operator [Symbol] The operator to perform.
This should be one of the binary operator names in {Lexer::OPERATORS}
# File lib/sass/script/operation.rb, line 24 24: def initialize(operand1, operand2, operator) 25: @operand1 = operand1 26: @operand2 = operand2 27: @operator = operator 28: super() 29: end
Returns the operands for this operation.
@return [Array
# File lib/sass/script/operation.rb, line 54 54: def children 55: [@operand1, @operand2] 56: end
@return [String] A human-readable s-expression representation of the operation
# File lib/sass/script/operation.rb, line 32 32: def inspect 33: "(#{@operator.inspect} #{@operand1.inspect} #{@operand2.inspect})" 34: end
@see Node#to_sass
# File lib/sass/script/operation.rb, line 37 37: def to_sass(opts = {}) 38: pred = Sass::Script::Parser.precedence_of(@operator) 39: o1 = operand_to_sass pred, @operand1, opts 40: o2 = operand_to_sass pred, @operand2, opts 41: sep = 42: case @operator 43: when :comma; ", " 44: when :concat; " " 45: else; " #{Lexer::OPERATORS_REVERSE[@operator]} " 46: end 47: "#{o1}#{sep}#{o2}" 48: end
Evaluates the operation.
@param environment [Sass::Environment] The environment in which to evaluate the SassScript @return [Literal] The SassScript object that is the value of the operation @raise [Sass::SyntaxError] if the operation is undefined for the operands
# File lib/sass/script/operation.rb, line 65 65: def _perform(environment) 66: literal1 = @operand1.perform(environment) 67: literal2 = @operand2.perform(environment) 68: 69: if @operator == :concat && context == :equals 70: literal1 = Sass::Script::String.new(literal1.value) if literal1.is_a?(Sass::Script::String) 71: literal2 = Sass::Script::String.new(literal2.value) if literal2.is_a?(Sass::Script::String) 72: end 73: 74: begin 75: res = literal1.send(@operator, literal2) 76: res.options = environment.options 77: res 78: rescue NoMethodError => e 79: raise e unless e.name.to_s == @operator.to_s 80: raise Sass::SyntaxError.new("Undefined operation: \"#{literal1} #{@operator} #{literal2}\".") 81: end 82: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.