lib/danica/wrapper.rb in danica-2.4.1 vs lib/danica/wrapper.rb in danica-2.4.2
- old
+ new
@@ -1,12 +1,21 @@
module Danica
module Wrapper
def wrap_value(value)
- return wrap_value(number(value)) if value.is_a?(Numeric)
- return wrap_value(variable(value)) if value.is_a?(Hash)
- return wrap_value(variable(name: value)) if [ String, Symbol ].any? { |c| value.is_a?(c) }
- return wrap_value(variable) if value.nil?
- value
+ case value
+ when Numeric
+ return negative(number(-value)) if value < 0
+ number(value)
+ when Hash
+ return constant(value) if value.keys.map(&:to_sym).sort == %i(gnu latex value)
+ variable(value)
+ when String, Symbol
+ variable(name: value)
+ when NilClass
+ variable
+ else
+ value
+ end
end
autoload :Number, 'danica/wrapper/number'
autoload :Group, 'danica/wrapper/group'
autoload :Negative, 'danica/wrapper/negative'