Class: Sass::Script::Operation
- Defined in:
- lib/sass/script/operation.rb
Overview
A SassScript parse node representing a binary operation,
such as !a + !b
or "foo" + 1
.
Instance Method Summary collapse
-
#initialize(operand1, operand2, operator) ⇒ Operation
constructor
A new instance of Operation.
-
#inspect ⇒ String
A human-readable s-expression representation of the operation.
-
#perform(environment) ⇒ Literal
Evaluates the operation.
Constructor Details
#initialize(operand1, operand2, operator) ⇒ Operation
Returns a new instance of Operation.
18 19 20 21 22 |
# File 'lib/sass/script/operation.rb', line 18
def initialize(operand1, operand2, operator)
@operand1 = operand1
@operand2 = operand2
@operator = operator
end
|
Instance Method Details
#inspect ⇒ String
Returns A human-readable s-expression representation of the operation.
25 26 27 |
# File 'lib/sass/script/operation.rb', line 25
def inspect
"(#{@operator.inspect} #{@operand1.inspect} #{@operand2.inspect})"
end
|
#perform(environment) ⇒ Literal
Evaluates the operation.
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/sass/script/operation.rb', line 34
def perform(environment)
literal1 = @operand1.perform(environment)
literal2 = @operand2.perform(environment)
begin
literal1.send(@operator, literal2)
rescue NoMethodError => e
raise e unless e.name.to_s == @operator.to_s
raise Sass::SyntaxError.new("Undefined operation: \"#{literal1} #{@operator} #{literal2}\".")
end
end
|