module Sass::Constant
def operationalize(value, constants)
have Constant.parse automatically add it to exception.
TODO: Don't pass around original value;
--
def operationalize(value, constants) value = [value] unless value.is_a?(Array) case value.length when 0 Sass::Constant::Nil.new when 1 value = value[0] if value.is_a? Array operationalize(value, constants) elsif value.is_a? Operation value else Literal.parse(value) end when 2 if value[0] == :neg Operation.new(Sass::Constant::Number.new('0'), operationalize(value[1], constants), :minus) elsif value[0] == :const Literal.parse(get_constant(value[1], constants)) else raise SyntaxError.new("Constant arithmetic error") end when 3 Operation.new(operationalize(value[0], constants), operationalize(value[2], constants), value[1]) else if SECOND_ORDER.include?(value[1]) && FIRST_ORDER.include?(value[3]) operationalize([value[0], value[1], operationalize(value[2..4], constants), *value[5..-1]], constants) else operationalize([operationalize(value[0..2], constants), *value[3..-1]], constants) end end end