Added more countries.
This commit is contained in:
parent
aab28b5979
commit
abd34bde80
2 changed files with 211 additions and 11 deletions
|
@ -50,10 +50,10 @@ import java.util.Locale
|
|||
class WorldTime(bot: Mobibot) : AbstractModule(bot) {
|
||||
companion object {
|
||||
// Beats (Internet Time) keyword
|
||||
private const val BEATS_KEYWORD = ".beats"
|
||||
const val BEATS_KEYWORD = ".beats"
|
||||
|
||||
// Supported countries
|
||||
private var COUNTRIES_MAP: Map<String, String>
|
||||
var COUNTRIES_MAP: Map<String, String>
|
||||
|
||||
// The Time command
|
||||
private const val TIME_CMD = "time"
|
||||
|
@ -95,85 +95,265 @@ class WorldTime(bot: Mobibot) : AbstractModule(bot) {
|
|||
init {
|
||||
// Initialize the countries map
|
||||
val countries = mutableMapOf<String, String>()
|
||||
countries["AD"] = "Europe/Andorra"
|
||||
countries["AE"] = "Asia/Dubai"
|
||||
countries["AF"] = "Asia/Kabul"
|
||||
countries["AKDT"] = "America/Anchorage"
|
||||
countries["AKST"] = "America/Anchorage"
|
||||
countries["AQ"] = "Antarctica/South_Pole"
|
||||
countries["AR"] = "America/Argentina/Buenos_Aires"
|
||||
countries["AS"] = "Pacific/Pago_Pago"
|
||||
countries["AT"] = "Europe/Vienna"
|
||||
countries["AU"] = "Australia/Sydney"
|
||||
countries["AKST"] = "America/Anchorage"
|
||||
countries["AKDT"] = "America/Anchorage"
|
||||
countries["AX"] = "Europe/Mariehamn"
|
||||
countries["AZ"] = "Asia/Baku"
|
||||
countries["BA"] = "Europe/Sarajevo"
|
||||
countries["BB"] = "America/Barbados"
|
||||
countries["BD"] = "Asia/Dhaka"
|
||||
countries["BE"] = "Europe/Brussels"
|
||||
countries["BEAT"] = BEATS_KEYWORD
|
||||
countries["BF"] = "Africa/Ouagadougou"
|
||||
countries["BG"] = "Europe/Sofia"
|
||||
countries["BH"] = "Asia/Bahrain"
|
||||
countries["BI"] = "Africa/Bujumbura"
|
||||
countries["BJ"] = "Africa/Porto-Novo"
|
||||
countries["BL"] = "America/St_Barthelemy"
|
||||
countries["BM"] = "Atlantic/Bermuda"
|
||||
countries["BMT"] = BEATS_KEYWORD
|
||||
countries["BN"] = "Asia/Brunei"
|
||||
countries["BQ"] = "America/Kralendijk"
|
||||
countries["BR"] = "America/Sao_Paulo"
|
||||
countries["BS"] = "America/Toronto"
|
||||
countries["BT"] = "Asia/Thimphu"
|
||||
countries["BW"] = "Africa/Gaborone"
|
||||
countries["BY"] = "Europe/Minsk"
|
||||
countries["BZ"] = "America/Belize"
|
||||
countries["CA"] = "America/Montreal"
|
||||
countries["CC"] = "Indian/Cocos"
|
||||
countries["CD"] = "Africa/Kinshasa"
|
||||
countries["CDT"] = "America/Chicago"
|
||||
countries["CET"] = "CET"
|
||||
countries["CF"] = "Africa/Bangui"
|
||||
countries["CG"] = "Africa/Brazzaville"
|
||||
countries["CH"] = "Europe/Zurich"
|
||||
countries["CI"] = "Africa/Abidjan"
|
||||
countries["CK"] = "Pacific/Rarotonga"
|
||||
countries["CL"] = "America/Santiago"
|
||||
countries["CN"] = "Asia/Shanghai"
|
||||
countries["CO"] = "America/Bogota"
|
||||
countries["CR"] = "America/Costa_Rica"
|
||||
countries["CST"] = "America/Chicago"
|
||||
countries["CU"] = "Cuba"
|
||||
countries["CV"] = "Atlantic/Cape_Verde"
|
||||
countries["CW"] = "America/Curacao"
|
||||
countries["CX"] = "Indian/Christmas"
|
||||
countries["CY"] = "Asia/Nicosia"
|
||||
countries["CZ"] = "Europe/Prague"
|
||||
countries["DE"] = "Europe/Berlin"
|
||||
countries["DJ"] = "Africa/Djibouti"
|
||||
countries["DK"] = "Europe/Copenhagen"
|
||||
countries["DM"] = "America/Dominica"
|
||||
countries["DO"] = "America/Santo_Domingo"
|
||||
countries["DZ"] = "Africa/Algiers"
|
||||
countries["EC"] = "Pacific/Galapagos"
|
||||
countries["EDT"] = "America/New_York"
|
||||
countries["EE"] = "Europe/Tallinn"
|
||||
countries["EG"] = "Africa/Cairo"
|
||||
countries["EH"] = "Africa/El_Aaiun"
|
||||
countries["ER"] = "Africa/Asmara"
|
||||
countries["ES"] = "Europe/Madrid"
|
||||
countries["EST"] = "America/New_York"
|
||||
countries["ET"] = "Africa/Addis_Ababa"
|
||||
countries["FI"] = "Europe/Helsinki"
|
||||
countries["FJ"] = "Pacific/Fiji"
|
||||
countries["FK"] = "Atlantic/Stanley"
|
||||
countries["FM"] = "Pacific/Port_Moresby"
|
||||
countries["FO"] = "Atlantic/Faroe"
|
||||
countries["FR"] = "Europe/Paris"
|
||||
countries["GA"] = "Asia/Tbilisi"
|
||||
countries["GB"] = "Europe/London"
|
||||
countries["GD"] = "America/Grenada"
|
||||
countries["GE"] = "Asia/Tbilisi"
|
||||
countries["GF"] = "America/Cayenne"
|
||||
countries["GG"] = "Europe/London"
|
||||
countries["GH"] = "Africa/Accra"
|
||||
countries["GI"] = "Europe/Gibraltar"
|
||||
countries["GL"] = "America/Thule"
|
||||
countries["GM"] = "Africa/Banjul"
|
||||
countries["GMT"] = "GMT"
|
||||
countries["GN"] = "Africa/Conakry"
|
||||
countries["GP"] = "America/Guadeloupe"
|
||||
countries["GQ"] = "Africa/Malabo"
|
||||
countries["GR"] = "Europe/Athens"
|
||||
countries["GS"] = "Atlantic/South_Georgia"
|
||||
countries["GT"] = "America/Guatemala"
|
||||
countries["GU"] = "Pacific/Guam"
|
||||
countries["GW"] = "Africa/Bissau"
|
||||
countries["GY"] = "America/Guyana"
|
||||
countries["HK"] = "Asia/Hong_Kong"
|
||||
countries["HN"] = "America/Tegucigalpa"
|
||||
countries["HR"] = "Europe/Zagreb"
|
||||
countries["HST"] = "Pacific/Honolulu"
|
||||
countries["HT"] = "America/Port-au-Prince"
|
||||
countries["HU"] = "Europe/Budapest"
|
||||
countries["ID"] = "Asia/Jakarta"
|
||||
countries["IE"] = "Europe/Dublin"
|
||||
countries["IL"] = "Asia/Tel_Aviv"
|
||||
countries["IM"] = "Europe/London"
|
||||
countries["IN"] = "Asia/Kolkata"
|
||||
countries["IQ"] = "Asia/Baghdad"
|
||||
countries["IR"] = "Asia/Tehran"
|
||||
countries["IS"] = "Atlantic/Reykjavik"
|
||||
countries["IT"] = "Europe/Rome"
|
||||
countries["JE"] = "Europe/London"
|
||||
countries["JM"] = "Jamaica"
|
||||
countries["JO"] = "Asia/Amman"
|
||||
countries["JP"] = "Asia/Tokyo"
|
||||
countries["KE"] = "Africa/Nairobi"
|
||||
countries["KG"] = "Asia/Bishkek"
|
||||
countries["KH"] = "Asia/Phnom_Penh"
|
||||
countries["KI"] = "Pacific/Tarawa"
|
||||
countries["KM"] = "Indian/Comoro"
|
||||
countries["KN"] = "America/St_Kitts"
|
||||
countries["KP"] = "Asia/Pyongyang"
|
||||
countries["KR"] = "Asia/Seoul"
|
||||
countries["KW"] = "Asia/Riyadh"
|
||||
countries["KY"] = "America/Cayman"
|
||||
countries["KZ"] = "Asia/Oral"
|
||||
countries["LA"] = "Asia/Vientiane"
|
||||
countries["LB"] = "Asia/Beirut"
|
||||
countries["LC"] = "America/St_Lucia"
|
||||
countries["LI"] = "Europe/Vaduz"
|
||||
countries["LK"] = "Asia/Colombo"
|
||||
countries["LR"] = "Africa/Monrovia"
|
||||
countries["LS"] = "Africa/Maseru"
|
||||
countries["LT"] = "Europe/Vilnius"
|
||||
countries["LU"] = "Europe/Luxembourg"
|
||||
countries["LV"] = "Europe/Riga"
|
||||
countries["LY"] = "Africa/Tripoli"
|
||||
countries["MA"] = "Africa/Casablanca"
|
||||
countries["MC"] = "Europe/Monaco"
|
||||
countries["MD"] = "Europe/Chisinau"
|
||||
countries["MDT"] = "America/Denver"
|
||||
countries["ME"] = "Europe/Podgorica"
|
||||
countries["MF"] = "America/Marigot"
|
||||
countries["MG"] = "Indian/Antananarivo"
|
||||
countries["MH"] = "Kwajalein"
|
||||
countries["MK"] = "Europe/Skopje"
|
||||
countries["ML"] = "Africa/Bamako"
|
||||
countries["MM"] = "Asia/Yangon"
|
||||
countries["MN"] = "Asia/Ulaanbaatar"
|
||||
countries["MO"] = "Asia/Macau"
|
||||
countries["MP"] = "Pacific/Saipan"
|
||||
countries["MQ"] = "America/Martinique"
|
||||
countries["MR"] = "Africa/Nouakchott"
|
||||
countries["MS"] = "America/Montserrat"
|
||||
countries["MST"] = "America/Denver"
|
||||
countries["MT"] = "Europe/Malta"
|
||||
countries["MU"] = "Indian/Mauritius"
|
||||
countries["MV"] = "Indian/Maldives"
|
||||
countries["MW"] = "Africa/Blantyre"
|
||||
countries["MX"] = "America/Mexico_City"
|
||||
countries["MY"] = "Asia/Kuala_Lumpur"
|
||||
countries["MZ"] = "Africa/Maputo"
|
||||
countries["NA"] = "Africa/Windhoek"
|
||||
countries["NC"] = "Pacific/Noumea"
|
||||
countries["NE"] = "Africa/Niamey"
|
||||
countries["NF"] = "Pacific/Norfolk"
|
||||
countries["NG"] = "Africa/Lagos"
|
||||
countries["NI"] = "America/Managua"
|
||||
countries["NL"] = "Europe/Amsterdam"
|
||||
countries["NO"] = "Europe/Oslo"
|
||||
countries["NP"] = "Asia/Kathmandu"
|
||||
countries["NR"] = "Pacific/Nauru"
|
||||
countries["NU"] = "Pacific/Niue"
|
||||
countries["NZ"] = "Pacific/Auckland"
|
||||
countries["OM"] = "Asia/Muscat"
|
||||
countries["PA"] = "America/Panama"
|
||||
countries["PDT"] = "America/Los_Angeles"
|
||||
countries["PE"] = "America/Lima"
|
||||
countries["PF"] = "Pacific/Tahiti"
|
||||
countries["PG"] = "Pacific/Pohnpei"
|
||||
countries["PH"] = "Asia/Manila"
|
||||
countries["PK"] = "Asia/Karachi"
|
||||
countries["PL"] = "Europe/Warsaw"
|
||||
countries["PM"] = "America/Miquelon"
|
||||
countries["PN"] = "Pacific/Pitcairn"
|
||||
countries["PR"] = "America/Puerto_Rico"
|
||||
countries["PS"] = "Asia/Gaza"
|
||||
countries["PST"] = "America/Los_Angeles"
|
||||
countries["PT"] = "Europe/Lisbon"
|
||||
countries["PR"] = "America/Puerto_Rico"
|
||||
countries["PW"] = "Pacific/Palau"
|
||||
countries["PY"] = "America/Asuncion"
|
||||
countries["QA"] = "Asia/Qatar"
|
||||
countries["RE"] = "Indian/Reunion"
|
||||
countries["RO"] = "Europe/Bucharest"
|
||||
countries["RS"] = "Europe/Belgrade"
|
||||
countries["RU"] = "Europe/Moscow"
|
||||
countries["RW"] = "Africa/Kigali"
|
||||
countries["SA"] = "Africa/Johannesburg"
|
||||
countries["SB"] = "Pacific/Guadalcanal"
|
||||
countries["SC"] = "Indian/Mahe"
|
||||
countries["SD"] = "Africa/Khartoum"
|
||||
countries["SE"] = "Europe/Stockholm"
|
||||
countries["SG"] = "Asia/Singapore"
|
||||
countries["SH"] = "Atlantic/St_Helena"
|
||||
countries["SI"] = "Europe/Ljubljana"
|
||||
countries["SJ"] = "Atlantic/Jan_Mayen"
|
||||
countries["SK"] = "Europe/Bratislava"
|
||||
countries["SL"] = "Africa/Freetown"
|
||||
countries["SM"] = "Europe/San_Marino"
|
||||
countries["SN"] = "Africa/Dakar"
|
||||
countries["SO"] = "Africa/Mogadishu"
|
||||
countries["SR"] = "America/Paramaribo"
|
||||
countries["SS"] = "Africa/Juba"
|
||||
countries["ST"] = "Africa/Sao_Tome"
|
||||
countries["SV"] = "America/El_Salvador"
|
||||
countries["SX"] = "America/Marigot"
|
||||
countries["SY"] = "Asia/Damascus"
|
||||
countries["SZ"] = "Africa/Mbabane"
|
||||
countries["TC"] = "America/Grand_Turk"
|
||||
countries["TD"] = "Africa/Ndjamena"
|
||||
countries["TF"] = "Indian/Kerguelen"
|
||||
countries["TG"] = "Africa/Lome"
|
||||
countries["TH"] = "Asia/Bangkok"
|
||||
countries["TJ"] = "Asia/Dushanbe"
|
||||
countries["TK"] = "Pacific/Fakaofo"
|
||||
countries["TL"] = "Asia/Dili"
|
||||
countries["TM"] = "Asia/Ashgabat"
|
||||
countries["TN"] = "Africa/Tunis"
|
||||
countries["TO"] = "Pacific/Tongatapu"
|
||||
countries["TR"] = "Europe/Istanbul"
|
||||
countries["TT"] = "America/Port_of_Spain"
|
||||
countries["TV"] = "Pacific/Funafuti"
|
||||
countries["TW"] = "Asia/Taipei"
|
||||
countries["TZ"] = "Africa/Dar_es_Salaam"
|
||||
countries["UA"] = "Europe/Kiev"
|
||||
countries["UG"] = "Africa/Kampala"
|
||||
countries["UK"] = "Europe/London"
|
||||
countries["UM"] = "Pacific/Johnston"
|
||||
countries["US"] = "America/New_York"
|
||||
countries["UTC"] = "UTC"
|
||||
countries["UY"] = "America/Montevideo"
|
||||
countries["UZ"] = "Asia/Tashkent"
|
||||
countries["VA"] = "Europe/Vatican"
|
||||
countries["VC"] = "America/St_Vincent"
|
||||
countries["VE"] = "America/Caracas"
|
||||
countries["VG"] = "America/Tortola"
|
||||
countries["VI"] = "America/St_Johns"
|
||||
countries["VN"] = "Asia/Ho_Chi_Minh"
|
||||
countries["VU"] = "Pacific/Efate"
|
||||
countries["WF"] = "Pacific/Wallis"
|
||||
countries["WS"] = "Pacific/Apia"
|
||||
countries["YE"] = "Asia/Aden"
|
||||
countries["YT"] = "Indian/Mayotte"
|
||||
countries["ZA"] = "Africa/Johannesburg"
|
||||
countries["ZM"] = "Africa/Lusaka"
|
||||
countries["ZULU"] = "Zulu"
|
||||
countries["INTERNET"] = BEATS_KEYWORD
|
||||
countries["BEATS"] = BEATS_KEYWORD
|
||||
@Suppress("MagicNumber")
|
||||
ZoneId.getAvailableZoneIds().stream()
|
||||
.filter { tz: String ->
|
||||
!tz.contains("/") && tz.length == 3 && !countries.containsKey(tz)
|
||||
tz.length <= 3 && !countries.containsKey(tz)
|
||||
}
|
||||
.forEach { tz: String ->
|
||||
countries[tz] = tz
|
||||
|
@ -192,7 +372,13 @@ class WorldTime(bot: Mobibot) : AbstractModule(bot) {
|
|||
if (args.isEmpty()) {
|
||||
send(sender, "The supported countries/zones are: ", isPrivate)
|
||||
@Suppress("MagicNumber")
|
||||
sendList(sender, ArrayList(COUNTRIES_MAP.keys), 17, isPrivate = false)
|
||||
sendList(
|
||||
sender,
|
||||
COUNTRIES_MAP.keys.sorted().stream().map { it.padEnd(4) }.toList(),
|
||||
14,
|
||||
isPrivate = false,
|
||||
isIndent = true
|
||||
)
|
||||
} else {
|
||||
val msg = time(args)
|
||||
if (isPrivate) {
|
||||
|
@ -213,7 +399,7 @@ class WorldTime(bot: Mobibot) : AbstractModule(bot) {
|
|||
init {
|
||||
with(help) {
|
||||
add("To display a country's current date/time:")
|
||||
add(helpFormat("%c $TIME_CMD [<country code>]"))
|
||||
add(helpFormat("%c $TIME_CMD <country code>"))
|
||||
add("For a listing of the supported countries:")
|
||||
add(helpFormat("%c $TIME_CMD"))
|
||||
}
|
||||
|
|
|
@ -32,9 +32,13 @@
|
|||
package net.thauvin.erik.mobibot.modules
|
||||
|
||||
import net.thauvin.erik.mobibot.Utils.bold
|
||||
import net.thauvin.erik.mobibot.modules.WorldTime.Companion.BEATS_KEYWORD
|
||||
import net.thauvin.erik.mobibot.modules.WorldTime.Companion.COUNTRIES_MAP
|
||||
import net.thauvin.erik.mobibot.modules.WorldTime.Companion.time
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.testng.annotations.Test
|
||||
import java.time.ZoneId
|
||||
import java.time.zone.ZoneRulesException
|
||||
|
||||
/**
|
||||
* The `WordTimeTest` class.
|
||||
|
@ -44,6 +48,16 @@ class WordTimeTest {
|
|||
fun testTime() {
|
||||
assertThat(time("PST").msg).describedAs("PST").endsWith(bold("Los Angeles"))
|
||||
assertThat(time("BLAH").isError).describedAs("BLAH").isTrue
|
||||
assertThat(time("BEATS").msg).describedAs("BEATS").contains("@")
|
||||
assertThat(time("BEAT").msg).describedAs(BEATS_KEYWORD).endsWith(BEATS_KEYWORD).contains("@")
|
||||
}
|
||||
|
||||
@Test
|
||||
@Throws(ZoneRulesException::class)
|
||||
fun testCountries() {
|
||||
COUNTRIES_MAP.toSortedMap().forEach {
|
||||
if (it.value != BEATS_KEYWORD) {
|
||||
ZoneId.of(it.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue