Sha256: 381c2a5c5c2cfc12c23398207181d0cea16dd2977ef3d6357ffb66ffa1b85b79

Contents?: true

Size: 1.34 KB

Versions: 3

Compression:

Stored size: 1.34 KB

Contents

require 'json'

class Address
  include Comparable

  attr_accessor :address1, :address2, :city, :state, :zip

  def initialize(entity={})
    @address1 = entity['address1']
    @address2 = entity['address2']
    @city = entity['city']
    @state = entity['state']
    @zip = entity['zip']
  end

  def ==(obj)
    return false unless obj.is_a?(::Address)
    return false unless @address1 == obj.address1
    return false unless @address2 == obj.address2
    return false unless @city == obj.city
    return false unless @state == obj.state
    return false unless @zip == obj.zip
    true
  end

  def <=>(obj)
    address1 = @address1 <=> obj.address1
    address2 = @address2 <=> obj.address2
    city = @city <=> obj.city
    state = @state <=> obj.state
    zip = @zip <=> obj.zip

    case address1
      when 0
        case address2
          when 0
            case city
              when 0
                case state
                  when 0
                    zip
                  else
                    state
                end
              else
                city
            end
          else
            address2
        end
      else
        address1
    end
  end

  def to_json(*args)
    {
      :address1 => @address1,
      :address2 => @address2,
      :city => @city,
      :state => @state,
      :zip => @zip
    }.to_json
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ruby-development-toolbox-1.4.0 test/representations/address.rb
ruby-development-toolbox-1.3.2 test/representations/address.rb
ruby-development-toolbox-1.3.1 test/representations/address.rb