class Dagger::Generate::NumericGenerator
Abstract base for generating numeric values
Public Instance Methods
process(args) { |result| ... }
click to toggle source
# File lib/dagger/numeric_generator.rb, line 9 def process(args) array(args).each do |arg| result = process_recurse(arg) yield result unless result.nil? end end
Private Instance Methods
numeric_arithmetic_mean(args)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 64 def numeric_arithmetic_mean(args) return if args.empty? numeric_sum(args) / args.length end
numeric_geometric_mean(args)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 70 def numeric_geometric_mean(args) return if args.empty? numeric_product(args)**(1.0 / args.length) end
numeric_harmonic_mean(args)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 76 def numeric_harmonic_mean(args) return if args.empty? args.length / args.map { |n| 1.0 / n }.sum end
numeric_product(args)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 60 def numeric_product(args) args.reduce(:*) end
numeric_sum(args)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 56 def numeric_sum(args) args.sum end
numeric_values(args)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 52 def numeric_values(args) args.map { |value| from_s(value) } end
process_args(args)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 46 def process_args(args) args = array(args).flat_map { |arg| process_recurse(arg) } args.delete(nil) args end
process_hash(hash)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 30 def process_hash(hash) hash.each do |key, args| result = process_hash_item(key, args) return result unless result.nil? end end
process_hash_item(key, args)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 37 def process_hash_item(key, args) case args when ::String send("numeric_#{key}", dictionary[args]) else send("numeric_#{key}", process_args(args)) end end
process_recurse(arg)
click to toggle source
# File lib/dagger/numeric_generator.rb, line 18 def process_recurse(arg) case arg when Hash process_hash(arg) when ::String str = format_string(arg) from_s(str) unless str.nil? else from_s(arg) end end