Sha256: 63fc31d94287fc4c11732f980e0e3a79c7f924ef0949f904525020cb86f18881

Contents?: true

Size: 1.09 KB

Versions: 3

Compression:

Stored size: 1.09 KB

Contents

module Danica
  module Wrapper
    def wrap_value(value)
      Wrapper.wrap_value(value)
    end

    def self.wrap_value(value)
      case value
      when Formatted
        value.content
      when Numeric
        wrap_numeric(value)
      when Hash
        wrap_hash(value)
      when String, Symbol, NilClass
        Variable.new(name: value)
      else
        raise Exception::InvalidInput, value unless value.is_a?(Danica::Common)
        value
      end
    end

    def self.wrap_numeric(number)
      return Negative.new(Number.new(-number)) if number < 0
      Number.new(number)
    end

    def self.wrap_hash(hash)
      return Constant.new(hash) if hash.keys.map(&:to_sym).sort == %i(gnuplot latex value)
      Variable.new(hash)
    end

    autoload :Number,    'danica/wrapper/number'
    autoload :Group,     'danica/wrapper/group'
    autoload :Negative,  'danica/wrapper/negative'
    autoload :PlusMinus, 'danica/wrapper/plus_minus'
    autoload :Constant,  'danica/wrapper/constant'
    autoload :Variable,  'danica/wrapper/variable'
    autoload :Container, 'danica/wrapper/container'
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
danica-2.7.4 lib/danica/wrapper.rb
danica-2.7.3 lib/danica/wrapper.rb
danica-2.7.2 lib/danica/wrapper.rb