require "json"
|
|
|
|
enum Country
|
|
FR,
|
|
NL,
|
|
DE,
|
|
IT,
|
|
EI,
|
|
GB,
|
|
end
|
|
|
|
class Address
|
|
JSON.mapping(
|
|
name: String,
|
|
address1: String,
|
|
address2: {type: String, nilable: true},
|
|
postcode: String,
|
|
city: String,
|
|
country: Country,
|
|
is_default: {type: Bool, default: false},
|
|
)
|
|
def <=> (other : Address)
|
|
cmp = @name<=>other.name
|
|
if cmp==0
|
|
cmp = @address1<=>other.address1
|
|
if cmp==0
|
|
if @address2.nil?
|
|
if(other.address2.nil?)
|
|
cmp=0
|
|
elsif
|
|
cmp=-1
|
|
end
|
|
elsif other.address2.nil?
|
|
cmp=1
|
|
else
|
|
cmp = @address2.not_nil!<=>other.address2.not_nil!
|
|
end
|
|
if cmp==0
|
|
cmp = @postcode<=>other.postcode
|
|
if cmp==0
|
|
cmp = @city<=>other.city
|
|
if cmp==0
|
|
cmp = @country<=>other.country
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return cmp
|
|
end
|
|
def == (other : Address)
|
|
0==(self<=>other)
|
|
end
|
|
def != (other : Address)
|
|
0!=(self<=>other)
|
|
end
|
|
end
|