Class: Kalculator
- Inherits:
-
Object
show all
- Defined in:
- lib/kalculator/validator.rb,
lib/kalculator.rb,
lib/kalculator/lexer.rb,
lib/kalculator/types.rb,
lib/kalculator/errors.rb,
lib/kalculator/parser.rb,
lib/kalculator/formula.rb,
lib/kalculator/pointer.rb,
lib/kalculator/version.rb,
lib/kalculator/evaluator.rb,
lib/kalculator/transform.rb,
lib/kalculator/data_sources.rb,
lib/kalculator/type_sources.rb,
lib/kalculator/built_in_functions.rb
Overview
Author: Benjamin Walter Newhall, 12/17/19, github: bennewhall Explanation: much like the data sources class, this stores type data in the form “variable-name”=>String
Defined Under Namespace
Modules: Transform
Classes: AnonymousPointer, Bool, Collection, Comparable, DataSources, Error, Evaluator, Formula, Lexer, List, MappedObject, Number, Parser, Percent, Pointer, String, Time, TypeError, TypeSources, UndefinedFunctionError, UndefinedVariableError, Validator
Constant Summary
collapse
- VERSION =
"1.0.0"
- BUILT_IN_FUNCTIONS =
{
["contains", 2] => lambda { |collection, item|
collection.include?(item)
},
["count", 1] => lambda { |list|
list.count
},
["date", 1] => lambda { |str|
Date.parse(str)
},
["max", 2] => lambda { |left, right|
[left, right].max
},
["min", 2] => lambda { |left, right|
[left, right].min
},
["sum", 1] => lambda { |list|
list.inject(0){|sum, num| sum + num}
},
}.freeze
Class Method Summary
collapse
Class Method Details
.evaluate(formula, data_source = {}, custom_functions = {}) ⇒ Object
22
23
24
|
# File 'lib/kalculator.rb', line 22
def self.evaluate(formula, data_source = {}, custom_functions = {})
Kalculator::Formula.new(formula).evaluate(data_source, custom_functions)
end
|
.new(*args) ⇒ Object
28
29
30
|
# File 'lib/kalculator.rb', line 28
def self.new(*args)
Kalculator::Formula.new(*args)
end
|
.validate(formula, type_source = Kalculator::TypeSources.new(Hash.new)) ⇒ Object