examples/extending.rb
#
# Example of extending a class when you need to synthesize an attribute.
#
# Adds Highrise::Person.{phone,fax,email} to the Person class inside your
# module
#
module MyModule
include Highrise
Highrise::Person.class_eval do
class << self
def lookup(id, list, item, location)
module_eval <<-EOT
def #{id}
contact_data.#{list}.each do |i|
return i.#{item}.strip if i.location == "#{location}"
end
''
end
EOT
end
private :lookup
end
lookup(:phone, 'phone_numbers', 'number', 'Work')
lookup(:fax, 'phone_numbers', 'number', 'Fax')
lookup(:email, 'email_addresses', 'address', 'Work')
end
end