mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			971 B
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			971 B
		
	
	
	
		
			Kotlin
		
	
	
	
	
	
package addressbook
 | 
						|
 | 
						|
class Contact(
 | 
						|
  val name : String,
 | 
						|
  val emails : List<EmailAddress>,
 | 
						|
  val addresses : List<PostalAddress>,
 | 
						|
  val phonenums : List<PhoneNumber>
 | 
						|
)
 | 
						|
 | 
						|
class EmailAddress(
 | 
						|
  val user : String,
 | 
						|
  val host : String
 | 
						|
)
 | 
						|
 | 
						|
class PostalAddress(
 | 
						|
  val streetAddress : String,
 | 
						|
  val city : String,
 | 
						|
  val zip : String,
 | 
						|
  val state : USState?,
 | 
						|
  val country : Country
 | 
						|
) {
 | 
						|
   assert {(state == null) xor (country == Countries["US"]) }
 | 
						|
}
 | 
						|
 | 
						|
class PhoneNumber(
 | 
						|
  val country : Country,
 | 
						|
  val areaCode : Int,
 | 
						|
  val number : Long
 | 
						|
)
 | 
						|
 | 
						|
object Countries {
 | 
						|
  fun get(id : CountryID) : Country = countryTable[id]
 | 
						|
  
 | 
						|
  private var table : Map<String, Country>? = null
 | 
						|
  private val countryTable : Map<String, Country>
 | 
						|
    get() {
 | 
						|
      if (table == null) {
 | 
						|
        table = HashMap()
 | 
						|
        for (line in TextFile("countries.txt").lines(stripWhiteSpace = true)) {
 | 
						|
          table[line] = Country(line)
 | 
						|
        }
 | 
						|
      }
 | 
						|
      return table
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class Country(val name : String) |