module Valuer

a person whose job is to estimate the value of something that is to be purchased.

Constants

VERSION

Public Class Methods

value(type, value, opts = {}) click to toggle source
# File lib/valuer.rb, line 13
def self.value(type, value, opts = {})
  result = nil
  begin
    result = case type.name
             when "Integer"
               Integer value
             when "Float"
               Float value
             when "TrueClass"
               case value
               when "yes"
                 true
               else
                 value == true
               end
             when "FalseClass"
               case value
               when "no"
                 true
               else
                 value == true
               end
             end
  rescue StandardError => e
    return opts[:default] if opts[:default]

    raise Valuer::Error, e.to_s
  end

  raise Valuer::MinimumError, "minimum is #{opts[:min]}" if opts[:min] && result < opts[:min]
  raise Valuer::MaximumError, "maximum is #{opts[:max]}" if opts[:max] && result > opts[:max]

  result
end