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