class Keisan::Functions::ToH

Public Class Methods

new() click to toggle source
Calls superclass method Keisan::Function::new
# File lib/keisan/functions/to_h.rb, line 4
def initialize
  super("to_h", 1)
end

Public Instance Methods

evaluate(ast_function, context = nil) click to toggle source
# File lib/keisan/functions/to_h.rb, line 13
def evaluate(ast_function, context = nil)
  validate_arguments!(ast_function.children.count)
  context ||= Context.new

  child = ast_function.children[0].simplify(context)

  case child
  when AST::List
    AST::Hash.new(child.children)
  when AST::Hash
    child
  else
    raise Exceptions::InvalidFunctionError.new("Cannot call to_h on a #{child.class}")
  end
end
simplify(ast_function, context = nil) click to toggle source
# File lib/keisan/functions/to_h.rb, line 29
def simplify(ast_function, context = nil)
  evaluate(ast_function, context)
end
value(ast_function, context = nil) click to toggle source
# File lib/keisan/functions/to_h.rb, line 8
def value(ast_function, context = nil)
  validate_arguments!(ast_function.children.count)
  evaluate(ast_function, context).value(context)
end