Module: Danica::VariablesHolder

Extended by:
ActiveSupport::Concern
Includes:
Common
Included in:
Equation, Expressable, Function, Operator, Wrapper::Negative, Wrapper::PlusMinus
Defined in:
lib/danica/variables_holder.rb,
lib/danica/variables_holder/calculator.rb,
lib/danica/variables_holder/alias_builder.rb,
lib/danica/variables_holder/variables_builder.rb

Defined Under Namespace

Classes: AliasBuilder, Calculator, Store, VariablesBuilder

Instance Method Summary collapse

Methods included from Common

#content, #formatted, #gnu, #tex, #to, #to_f, #to_gnu, #to_tex, #valued?

Instance Method Details

#calculate(*args) ⇒ Object



64
65
66
# File 'lib/danica/variables_holder.rb', line 64

def calculate(*args)
  Calculator.new(self, *args).calculate
end

#initialize(*args) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/danica/variables_holder.rb', line 48

def initialize(*args)
  args = args.flatten
  args = args.first if (args.length == 1) && args.first.try(:keys).try(:all?) do |k|
    self.class.variables_names.include?(k)
  end
  self.variables = args
end

#variables=(vars) ⇒ Object



56
57
58
59
60
61
62
# File 'lib/danica/variables_holder.rb', line 56

def variables=(vars)
  vars = vars.as_hash(self.class.variables_names).compact unless vars.is_a? Hash
  vars = vars.dup.change_values!(skip_inner: false) { |v| wrap_value(v) }
  vars.each do |k, v|
    public_send("#{k}=", v)
  end
end