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