regiongroups.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. package countries
  2. import (
  3. "log"
  4. )
  5. var RegionGroups = map[string]string{
  6. "us-ak": "us-west",
  7. "us-az": "us-west",
  8. "us-ca": "us-west",
  9. "us-co": "us-west",
  10. "us-hi": "us-west",
  11. "us-id": "us-west",
  12. "us-mt": "us-west",
  13. "us-nm": "us-west",
  14. "us-nv": "us-west",
  15. "us-or": "us-west",
  16. "us-ut": "us-west",
  17. "us-wa": "us-west",
  18. "us-wy": "us-west",
  19. "us-ar": "us-central",
  20. "us-ia": "us-central",
  21. "us-il": "us-central",
  22. "us-in": "us-central",
  23. "us-ks": "us-central",
  24. "us-la": "us-central",
  25. "us-mn": "us-central",
  26. "us-mo": "us-central",
  27. "us-nd": "us-central",
  28. "us-ne": "us-central",
  29. "us-ok": "us-central",
  30. "us-sd": "us-central",
  31. "us-tx": "us-central",
  32. "us-wi": "us-central",
  33. "us-al": "us-east",
  34. "us-ct": "us-east",
  35. "us-dc": "us-east",
  36. "us-de": "us-east",
  37. "us-fl": "us-east",
  38. "us-ga": "us-east",
  39. "us-ky": "us-east",
  40. "us-ma": "us-east",
  41. "us-md": "us-east",
  42. "us-me": "us-east",
  43. "us-mi": "us-east",
  44. "us-ms": "us-east",
  45. "us-nc": "us-east",
  46. "us-nh": "us-east",
  47. "us-nj": "us-east",
  48. "us-ny": "us-east",
  49. "us-oh": "us-east",
  50. "us-pa": "us-east",
  51. "us-ri": "us-east",
  52. "us-sc": "us-east",
  53. "us-tn": "us-east",
  54. "us-va": "us-east",
  55. "us-vt": "us-east",
  56. "us-wv": "us-east",
  57. // # Federal districts of Russia
  58. // Sources list (lowest priority on top)
  59. // - https://en.wikipedia.org/wiki/Federal_districts_of_Russia
  60. // - https://ru.wikipedia.org/wiki/ISO_3166-2:RU
  61. // - http://statoids.com/uru.html with updates https://en.wikipedia.org/wiki/Federal_districts_of_Russia#cite_note-15
  62. // Dal'nevostochnyy (D) Far Eastern
  63. "ru-amu": "ru-dfd", // Amur
  64. "ru-bu": "ru-dfd", // Buryat
  65. "ru-chu": "ru-dfd", // Chukot
  66. "ru-kam": "ru-dfd", // Kamchatka
  67. "ru-kha": "ru-dfd", // Khabarovsk
  68. "ru-mag": "ru-dfd", // Magadan
  69. "ru-pri": "ru-dfd", // Primor'ye
  70. "ru-sa": "ru-dfd", // Sakha
  71. "ru-sak": "ru-dfd", // Sakhalin
  72. "ru-yev": "ru-dfd", // Yevrey
  73. "ru-zab": "ru-dfd", // Zabaykal'ye
  74. // Severo-Kavkazskiy' (K) North Caucasus
  75. "ru-ce": "ru-kfd", // Chechnya
  76. "ru-da": "ru-kfd", // Dagestan
  77. "ru-in": "ru-kfd", // Ingush
  78. "ru-kb": "ru-kfd", // Kabardin-Balkar
  79. "ru-kc": "ru-kfd", // Karachay-Cherkess
  80. "ru-se": "ru-kfd", // North Ossetia
  81. "ru-sta": "ru-kfd", // Stavropol'
  82. // Privolzhskiy (P) Volga
  83. "ru-ba": "ru-pfd", // Bashkortostan
  84. "ru-cu": "ru-pfd", // Chuvash
  85. "ru-kir": "ru-pfd", // Kirov
  86. "ru-me": "ru-pfd", // Mariy-El
  87. "ru-mo": "ru-pfd", // Mordovia
  88. "ru-niz": "ru-pfd", // Nizhegorod
  89. "ru-ore": "ru-pfd", // Orenburg
  90. "ru-pnz": "ru-pfd", // Penza
  91. "ru-per": "ru-pfd", // Perm'
  92. "ru-sam": "ru-pfd", // Samara
  93. "ru-sar": "ru-pfd", // Saratov
  94. "ru-ta": "ru-pfd", // Tatarstan
  95. "ru-ud": "ru-pfd", // Udmurt
  96. "ru-uly": "ru-pfd", // Ul'yanovsk
  97. // Sibirskiy (S) Siberian
  98. "ru-alt": "ru-sfd", // Altay
  99. "ru-al": "ru-sfd", // Gorno-Altay
  100. "ru-irk": "ru-sfd", // Irkutsk
  101. "ru-kem": "ru-sfd", // Kemerovo
  102. "ru-kk": "ru-sfd", // Khakass
  103. "ru-kya": "ru-sfd", // Krasnoyarsk
  104. "ru-nvs": "ru-sfd", // Novosibirsk
  105. "ru-oms": "ru-sfd", // Omsk
  106. "ru-tom": "ru-sfd", // Tomsk
  107. "ru-ty": "ru-sfd", // Tuva
  108. // Tsentral'nyy (T) Central
  109. "ru-bel": "ru-tfd", // Belgorod
  110. "ru-bry": "ru-tfd", // Bryansk
  111. "ru-iva": "ru-tfd", // Ivanovo
  112. "ru-klu": "ru-tfd", // Kaluga
  113. "ru-kos": "ru-tfd", // Kostroma
  114. "ru-krs": "ru-tfd", // Kursk
  115. "ru-lip": "ru-tfd", // Lipetsk
  116. "ru-mow": "ru-tfd", // Moscow City
  117. "ru-mos": "ru-tfd", // Moskva
  118. "ru-orl": "ru-tfd", // Orel
  119. "ru-rya": "ru-tfd", // Ryazan'
  120. "ru-smo": "ru-tfd", // Smolensk
  121. "ru-tam": "ru-tfd", // Tambov
  122. "ru-tul": "ru-tfd", // Tula
  123. "ru-tve": "ru-tfd", // Tver'
  124. "ru-vla": "ru-tfd", // Vladimir
  125. "ru-vor": "ru-tfd", // Voronezh
  126. "ru-yar": "ru-tfd", // Yaroslavl'
  127. // Ural'skiy (U) Ural
  128. "ru-che": "ru-ufd", // Chelyabinsk
  129. "ru-khm": "ru-ufd", // Khanty-Mansiy
  130. "ru-kgn": "ru-ufd", // Kurgan
  131. "ru-sve": "ru-ufd", // Sverdlovsk
  132. "ru-tyu": "ru-ufd", // Tyumen'
  133. "ru-yan": "ru-ufd", // Yamal-Nenets
  134. // Severo-Zapadnyy (V) Northwestern
  135. "ru-ark": "ru-vfd", // Arkhangel'sk
  136. "ru-kgd": "ru-vfd", // Kaliningrad
  137. "ru-kr": "ru-vfd", // Karelia
  138. "ru-ko": "ru-vfd", // Komi
  139. "ru-len": "ru-vfd", // Leningrad
  140. "ru-mur": "ru-vfd", // Murmansk
  141. "ru-nen": "ru-vfd", // Nenets
  142. "ru-ngr": "ru-vfd", // Novgorod
  143. "ru-psk": "ru-vfd", // Pskov
  144. "ru-spe": "ru-vfd", // Saint Petersburg City
  145. "ru-vlg": "ru-vfd", // Vologda
  146. // Yuzhnyy (Y) Southern
  147. "ru-ad": "ru-yfd", // Adygey
  148. "ru-ast": "ru-yfd", // Astrakhan'
  149. "ru-kl": "ru-yfd", // Kalmyk
  150. "ru-kda": "ru-yfd", // Krasnodar
  151. "ru-ros": "ru-yfd", // Rostov
  152. "ru-vgg": "ru-yfd", // Volgograd
  153. }
  154. var RegionGroupRegions = map[string][]string{}
  155. func CountryRegionGroup(country, region string) string {
  156. if country != "us" && country != "ru" {
  157. return ""
  158. }
  159. if group, ok := RegionGroups[region]; ok {
  160. return group
  161. }
  162. log.Printf("Did not find a region group for '%s'/'%s'", country, region)
  163. return ""
  164. }
  165. func init() {
  166. for ccrc, rg := range RegionGroups {
  167. RegionGroupRegions[rg] = append(RegionGroupRegions[rg], ccrc)
  168. }
  169. }