class PP_ADDRESS
Paypal postal address
note
	description: "Paypal postal address"
	author: "Finnian Reilly"
	copyright: "Copyright (c) 2001-2022 Finnian Reilly"
	contact: "finnian at eiffel hyphen loop dot com"
	license: "MIT license (See: en.wikipedia.org/wiki/MIT_License)"
	date: "2024-09-22 13:39:37 GMT (Sunday 22nd September 2024)"
	revision: "18"
		
		class
	PP_ADDRESS
inherit
	EL_REFLECTIVELY_SETTABLE
		rename
			field_included as is_any_field,
			foreign_naming as eiffel_naming,
			has_default_strings as is_empty
		redefine
			new_representations, new_field_printer
		end
	EL_MAKEABLE
		rename
			make as make_default
		undefine
			is_equal
		end
	EL_SHARED_ESCAPE_TABLE
create
	make_default
feature -- Access
	city: ZSTRING
	country: ZSTRING
	country_code: STRING
	name: ZSTRING
	state: ZSTRING
	status: NATURAL_8
	status_name: STRING
		do
			Result := Status_enum.name (status)
		end
	street: ZSTRING
	street_escaped: like street
		-- escape line breaking control characters `%R', `%N' for display in one line
		do
			Result := street.escaped (Line_break_escaper)
		end
	zip: ZSTRING
feature -- Element change
	set_country (a_country: like country)
		do
			country := a_country
		end
feature -- Status query
	is_confirmed: BOOLEAN
		do
			Result := status = Status_enum.confirmed
		end
feature {NONE} -- Implementation
	new_field_printer: EL_REFLECTIVE_CONSOLE_PRINTER
		-- Fields that will not be output by `print_fields'
		-- Must be comma-separated names
		do
			create Result.make_default
			Result.put_escaper (Line_break_escaper, "street")
		end
	new_representations: like Default_representations
		do
			create Result.make_assignments (<<
				["status", Status_enum.to_representation]
			>>)
		end
feature {NONE} -- Constants
	Line_break_escaper: EL_STRING_ESCAPER [ZSTRING]
		once
			create Result.make (Escape_table.Eiffel)
		end
	Status_enum: PP_ADDRESS_STATUS_ENUM
		once
			create Result.make
		end
end