Sha256: cdc18783322039ddd64b8ad3f355379404c77202905ab3596fe43a15a7577704

Contents?: true

Size: 1.06 KB

Versions: 6

Compression:

Stored size: 1.06 KB

Contents

require 'etapper/classes/hashable'

module Etapper
  class Phone
    include Hashable
    
    TYPES = [
      :voice,
      :mobile,
      :pager,
      :fax,
      :business,
      :home
      ]
                   
    def initialize(params = {})
      if params.kind_of?(Etapper::API::Phone)  # Simply wrap the API object we're given
        @base = params
      else
        raise Etapper::BadValueError, "You must supply a valid type!" unless TYPES.include?(params[:type])
        raise Etapper::BadValueError, "You must supply a phone number!" unless params[:number]
        @base = Etapper::API::Phone.new(params[:number], params[:type].titleize)
      end
    end
    
    def base
      @base
    end
    
    def type
      @base.type.symbolize
    end
    
    def type=(val)
      @base.type = val.titleize
    end
    
    def number
      @base.number
    end
    
    def number=(val)
      @base.number = val
    end
    
    
    alias_method :key, :type
    alias_method :key=, :type=
    alias_method :value, :number
    alias_method :value=, :number=

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
etapper-0.0.5 lib/etapper/classes/phone.rb
etapper-0.0.4 lib/etapper/classes/phone.rb
etapper-0.0.3 lib/etapper/classes/phone.rb
etapper-0.0.2 lib/etapper/classes/phone.rb
etapper-0.0.1 lib/etapper/classes/phone.rb
etapper-0.0.0 lib/etapper/classes/phone.rb