Example 5.166. Directory class - examples
/******************************************************************************/
/* A Phone Book Directory program */
/* This program demonstrates use of the directory class. */
/******************************************************************************/
/* Define an UNKNOWN method that adds an abbreviation lookup feature. */
/* Directories do not have to have an UNKNOWN method. */
book = .directory~new~~setMethod("UNKNOWN", .methods["UNKNOWN"])
book["ANN" ] = "Ann B. ....... 555-6220"
book["ann" ] = "Little annie . 555-1234"
book["JEFF"] = "Jeff G. ...... 555-5115"
book["MARK"] = "Mark C. ...... 555-5017"
book["MIKE"] = "Mike H. ...... 555-6123"
book~Rick = "Rick M. ...... 555-5110" /* Same as book["RICK"] = ... */
Do i over book /* Iterate over the collection */
Say book[i]
end i
Say "" /* Index lookup is case sensitive... */
Say book~entry("Mike") /* ENTRY method uppercases before lookup */
Say book["ANN"] /* Exact match */
Say book~ann /* Message sends uppercase before lookup */
Say book["ann"] /* Exact match with lowercase index */
Say ""
Say book["M"] /* Uses UNKNOWN method for lookup */
Say book["Z"]
Exit
/* Define an unknown method to handle indexes not found. */
/* Check for abbreviations or indicate listing not found */
::Method unknown
Parse arg at_index
value = ""
Do i over self
If abbrev(i, at_index) then do
If value <> "" then value = value", "
value = value || self~at(i)
end
end i
If value = "" then value = "No listing found for" at_index
Return value