| Class | Sass::Script::Operation |
| In: |
lib/sass/script/operation.rb
|
| Parent: | Node |
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 18
18: def initialize(operand1, operand2, operator)
19: @operand1 = operand1
20: @operand2 = operand2
21: @operator = operator
22: 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 34
34: def perform(environment)
35: literal1 = @operand1.perform(environment)
36: literal2 = @operand2.perform(environment)
37: begin
38: literal1.send(@operator, literal2)
39: rescue NoMethodError => e
40: raise e unless e.name.to_s == @operator.to_s
41: raise Sass::SyntaxError.new("Undefined operation: \"#{literal1} #{@operator} #{literal2}\".")
42: end
43: end