Sha256: ff69a76f6e250f072ab62c49ba4f59b5dd804bfe9f52f1b9c664522056dc0786

Contents?: true

Size: 802 Bytes

Versions: 1

Compression:

Stored size: 802 Bytes

Contents

class Danica::Function
  include ActiveModel::Model

  require 'danica/function/chained'
  require 'danica/function/product'
  require 'danica/function/sum'
  require 'danica/function/division'
  require 'danica/function/power'

  attr_accessor :name, :variables

  def to_f
    raise 'Not IMplemented yet'
  end

  def to_tex
    raise 'Not IMplemented yet'
  end

  def variables=(variables)
    @variables = variables.map { |v| wrap_value(v) }
  end

  def valued?
    to_f.presend?
  rescue Danica::NotDefined
    false
  end

  private

  def wrap_value(value)
    return Danica::Number.new(value) if value.is_a?(Numeric)
    return Danica::Variable.new(value) if value.is_a?(Hash)
    return Danica::Variable.new(name: value) if [ String, Symbol ].any? { |c| value.is_a?(c) }
    value
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
danica-0.2.0 lib/danica/function.rb