tzinfo 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of tzinfo might be problematic. Click here for more details.

Files changed (831) hide show
  1. data/CHANGES +222 -172
  2. data/README +21 -4
  3. data/Rakefile +27 -12
  4. data/lib/tzinfo.rb +5 -2
  5. data/lib/tzinfo/country.rb +100 -90
  6. data/lib/tzinfo/country_index_definition.rb +50 -0
  7. data/lib/tzinfo/country_info.rb +82 -0
  8. data/lib/tzinfo/country_timezone.rb +103 -0
  9. data/lib/tzinfo/data_timezone.rb +47 -0
  10. data/lib/tzinfo/data_timezone_info.rb +226 -0
  11. data/lib/tzinfo/definitions/Africa/Abidjan.rb +16 -11
  12. data/lib/tzinfo/definitions/Africa/Accra.rb +31 -25
  13. data/lib/tzinfo/definitions/Africa/Addis_Ababa.rb +18 -12
  14. data/lib/tzinfo/definitions/Africa/Algiers.rb +53 -44
  15. data/lib/tzinfo/definitions/Africa/Asmera.rb +20 -13
  16. data/lib/tzinfo/definitions/Africa/Bamako.rb +19 -13
  17. data/lib/tzinfo/definitions/Africa/Bangui.rb +16 -11
  18. data/lib/tzinfo/definitions/Africa/Banjul.rb +20 -13
  19. data/lib/tzinfo/definitions/Africa/Bissau.rb +18 -12
  20. data/lib/tzinfo/definitions/Africa/Blantyre.rb +16 -11
  21. data/lib/tzinfo/definitions/Africa/Brazzaville.rb +16 -11
  22. data/lib/tzinfo/definitions/Africa/Bujumbura.rb +16 -11
  23. data/lib/tzinfo/definitions/Africa/Cairo.rb +217 -211
  24. data/lib/tzinfo/definitions/Africa/Casablanca.rb +36 -29
  25. data/lib/tzinfo/definitions/Africa/Ceuta.rb +170 -162
  26. data/lib/tzinfo/definitions/Africa/Conakry.rb +19 -13
  27. data/lib/tzinfo/definitions/Africa/Dakar.rb +18 -12
  28. data/lib/tzinfo/definitions/Africa/Dar_es_Salaam.rb +19 -13
  29. data/lib/tzinfo/definitions/Africa/Djibouti.rb +16 -11
  30. data/lib/tzinfo/definitions/Africa/Douala.rb +16 -11
  31. data/lib/tzinfo/definitions/Africa/El_Aaiun.rb +18 -12
  32. data/lib/tzinfo/definitions/Africa/Freetown.rb +51 -41
  33. data/lib/tzinfo/definitions/Africa/Gaborone.rb +19 -13
  34. data/lib/tzinfo/definitions/Africa/Harare.rb +16 -11
  35. data/lib/tzinfo/definitions/Africa/Johannesburg.rb +23 -16
  36. data/lib/tzinfo/definitions/Africa/Kampala.rb +21 -14
  37. data/lib/tzinfo/definitions/Africa/Khartoum.rb +51 -44
  38. data/lib/tzinfo/definitions/Africa/Kigali.rb +16 -11
  39. data/lib/tzinfo/definitions/Africa/Kinshasa.rb +16 -11
  40. data/lib/tzinfo/definitions/Africa/Lagos.rb +16 -11
  41. data/lib/tzinfo/definitions/Africa/Libreville.rb +16 -11
  42. data/lib/tzinfo/definitions/Africa/Lome.rb +16 -11
  43. data/lib/tzinfo/definitions/Africa/Luanda.rb +18 -12
  44. data/lib/tzinfo/definitions/Africa/Lubumbashi.rb +16 -11
  45. data/lib/tzinfo/definitions/Africa/Lusaka.rb +16 -11
  46. data/lib/tzinfo/definitions/Africa/Malabo.rb +18 -12
  47. data/lib/tzinfo/definitions/Africa/Maputo.rb +16 -11
  48. data/lib/tzinfo/definitions/Africa/Maseru.rb +19 -13
  49. data/lib/tzinfo/definitions/Africa/Mbabane.rb +16 -11
  50. data/lib/tzinfo/definitions/Africa/Mogadishu.rb +19 -13
  51. data/lib/tzinfo/definitions/Africa/Monrovia.rb +20 -13
  52. data/lib/tzinfo/definitions/Africa/Nairobi.rb +21 -14
  53. data/lib/tzinfo/definitions/Africa/Ndjamena.rb +19 -13
  54. data/lib/tzinfo/definitions/Africa/Niamey.rb +20 -13
  55. data/lib/tzinfo/definitions/Africa/Nouakchott.rb +19 -13
  56. data/lib/tzinfo/definitions/Africa/Ouagadougou.rb +16 -11
  57. data/lib/tzinfo/definitions/Africa/Porto__m__Novo.rb +18 -12
  58. data/lib/tzinfo/definitions/Africa/Sao_Tome.rb +18 -12
  59. data/lib/tzinfo/definitions/Africa/Timbuktu.rb +11 -10
  60. data/lib/tzinfo/definitions/Africa/Tripoli.rb +46 -39
  61. data/lib/tzinfo/definitions/Africa/Tunis.rb +135 -128
  62. data/lib/tzinfo/definitions/Africa/Windhoek.rb +138 -128
  63. data/lib/tzinfo/definitions/America/Adak.rb +194 -181
  64. data/lib/tzinfo/definitions/America/Anchorage.rb +194 -181
  65. data/lib/tzinfo/definitions/America/Anguilla.rb +16 -11
  66. data/lib/tzinfo/definitions/America/Antigua.rb +18 -12
  67. data/lib/tzinfo/definitions/America/Araguaina.rb +65 -59
  68. data/lib/tzinfo/definitions/America/Argentina/Buenos_Aires.rb +78 -69
  69. data/lib/tzinfo/definitions/America/Argentina/Catamarca.rb +81 -71
  70. data/lib/tzinfo/definitions/America/Argentina/ComodRivadavia.rb +13 -12
  71. data/lib/tzinfo/definitions/America/Argentina/Cordoba.rb +79 -69
  72. data/lib/tzinfo/definitions/America/Argentina/Jujuy.rb +80 -69
  73. data/lib/tzinfo/definitions/America/Argentina/La_Rioja.rb +82 -72
  74. data/lib/tzinfo/definitions/America/Argentina/Mendoza.rb +82 -71
  75. data/lib/tzinfo/definitions/America/Argentina/Rio_Gallegos.rb +81 -71
  76. data/lib/tzinfo/definitions/America/Argentina/San_Juan.rb +82 -72
  77. data/lib/tzinfo/definitions/America/Argentina/Tucuman.rb +81 -71
  78. data/lib/tzinfo/definitions/America/Argentina/Ushuaia.rb +81 -71
  79. data/lib/tzinfo/definitions/America/Aruba.rb +18 -12
  80. data/lib/tzinfo/definitions/America/Asuncion.rb +172 -164
  81. data/lib/tzinfo/definitions/America/Atka.rb +11 -10
  82. data/lib/tzinfo/definitions/America/Bahia.rb +75 -69
  83. data/lib/tzinfo/definitions/America/Barbados.rb +27 -20
  84. data/lib/tzinfo/definitions/America/Belem.rb +45 -39
  85. data/lib/tzinfo/definitions/America/Belize.rb +72 -65
  86. data/lib/tzinfo/definitions/America/Boa_Vista.rb +49 -43
  87. data/lib/tzinfo/definitions/America/Bogota.rb +21 -14
  88. data/lib/tzinfo/definitions/America/Boise.rb +197 -187
  89. data/lib/tzinfo/definitions/America/Buenos_Aires.rb +11 -10
  90. data/lib/tzinfo/definitions/America/Cambridge_Bay.rb +175 -163
  91. data/lib/tzinfo/definitions/America/Campo_Grande.rb +169 -163
  92. data/lib/tzinfo/definitions/America/Cancun.rb +131 -123
  93. data/lib/tzinfo/definitions/America/Caracas.rb +20 -13
  94. data/lib/tzinfo/definitions/America/Catamarca.rb +11 -10
  95. data/lib/tzinfo/definitions/America/Cayenne.rb +18 -12
  96. data/lib/tzinfo/definitions/America/Cayman.rb +18 -12
  97. data/lib/tzinfo/definitions/America/Chicago.rb +281 -272
  98. data/lib/tzinfo/definitions/America/Chihuahua.rb +134 -126
  99. data/lib/tzinfo/definitions/America/Coral_Harbour.rb +26 -18
  100. data/lib/tzinfo/definitions/America/Cordoba.rb +11 -10
  101. data/lib/tzinfo/definitions/America/Costa_Rica.rb +27 -20
  102. data/lib/tzinfo/definitions/America/Cuiaba.rb +167 -161
  103. data/lib/tzinfo/definitions/America/Curacao.rb +18 -12
  104. data/lib/tzinfo/definitions/America/Danmarkshavn.rb +51 -44
  105. data/lib/tzinfo/definitions/America/Dawson.rb +174 -163
  106. data/lib/tzinfo/definitions/America/Dawson_Creek.rb +77 -68
  107. data/lib/tzinfo/definitions/America/Denver.rb +202 -194
  108. data/lib/tzinfo/definitions/America/Detroit.rb +184 -175
  109. data/lib/tzinfo/definitions/America/Dominica.rb +16 -11
  110. data/lib/tzinfo/definitions/America/Edmonton.rb +198 -190
  111. data/lib/tzinfo/definitions/America/Eirunepe.rb +47 -41
  112. data/lib/tzinfo/definitions/America/El_Salvador.rb +21 -15
  113. data/lib/tzinfo/definitions/America/Ensenada.rb +11 -10
  114. data/lib/tzinfo/definitions/America/Fort_Wayne.rb +11 -10
  115. data/lib/tzinfo/definitions/America/Fortaleza.rb +55 -49
  116. data/lib/tzinfo/definitions/America/Glace_Bay.rb +184 -176
  117. data/lib/tzinfo/definitions/America/Godthab.rb +159 -153
  118. data/lib/tzinfo/definitions/America/Goose_Bay.rb +253 -240
  119. data/lib/tzinfo/definitions/America/Grand_Turk.rb +163 -156
  120. data/lib/tzinfo/definitions/America/Grenada.rb +16 -11
  121. data/lib/tzinfo/definitions/America/Guadeloupe.rb +16 -11
  122. data/lib/tzinfo/definitions/America/Guatemala.rb +25 -19
  123. data/lib/tzinfo/definitions/America/Guayaquil.rb +18 -12
  124. data/lib/tzinfo/definitions/America/Guyana.rb +22 -14
  125. data/lib/tzinfo/definitions/America/Halifax.rb +272 -264
  126. data/lib/tzinfo/definitions/America/Havana.rb +199 -192
  127. data/lib/tzinfo/definitions/America/Hermosillo.rb +33 -25
  128. data/lib/tzinfo/definitions/America/Indiana/Indianapolis.rb +147 -137
  129. data/lib/tzinfo/definitions/America/Indiana/Knox.rb +201 -192
  130. data/lib/tzinfo/definitions/America/Indiana/Marengo.rb +151 -141
  131. data/lib/tzinfo/definitions/America/Indiana/Petersburg.rb +163 -154
  132. data/lib/tzinfo/definitions/America/Indiana/Vevay.rb +129 -119
  133. data/lib/tzinfo/definitions/America/Indiana/Vincennes.rb +149 -139
  134. data/lib/tzinfo/definitions/America/Indianapolis.rb +11 -10
  135. data/lib/tzinfo/definitions/America/Inuvik.rb +174 -163
  136. data/lib/tzinfo/definitions/America/Iqaluit.rb +173 -162
  137. data/lib/tzinfo/definitions/America/Jamaica.rb +39 -32
  138. data/lib/tzinfo/definitions/America/Jujuy.rb +11 -10
  139. data/lib/tzinfo/definitions/America/Juneau.rb +192 -180
  140. data/lib/tzinfo/definitions/America/Kentucky/Louisville.rb +226 -216
  141. data/lib/tzinfo/definitions/America/Kentucky/Monticello.rb +196 -186
  142. data/lib/tzinfo/definitions/America/Knox_IN.rb +11 -10
  143. data/lib/tzinfo/definitions/America/La_Paz.rb +20 -13
  144. data/lib/tzinfo/definitions/America/Lima.rb +33 -26
  145. data/lib/tzinfo/definitions/America/Los_Angeles.rb +230 -222
  146. data/lib/tzinfo/definitions/America/Louisville.rb +11 -10
  147. data/lib/tzinfo/definitions/America/Maceio.rb +57 -51
  148. data/lib/tzinfo/definitions/America/Managua.rb +34 -26
  149. data/lib/tzinfo/definitions/America/Manaus.rb +47 -41
  150. data/lib/tzinfo/definitions/America/Martinique.rb +21 -14
  151. data/lib/tzinfo/definitions/America/Mazatlan.rb +137 -129
  152. data/lib/tzinfo/definitions/America/Mendoza.rb +11 -10
  153. data/lib/tzinfo/definitions/America/Menominee.rb +188 -179
  154. data/lib/tzinfo/definitions/America/Merida.rb +130 -123
  155. data/lib/tzinfo/definitions/America/Mexico_City.rb +142 -134
  156. data/lib/tzinfo/definitions/America/Miquelon.rb +147 -140
  157. data/lib/tzinfo/definitions/America/Moncton.rb +252 -243
  158. data/lib/tzinfo/definitions/America/Monterrey.rb +129 -123
  159. data/lib/tzinfo/definitions/America/Montevideo.rb +89 -79
  160. data/lib/tzinfo/definitions/America/Montreal.rb +277 -269
  161. data/lib/tzinfo/definitions/America/Montserrat.rb +16 -11
  162. data/lib/tzinfo/definitions/America/Nassau.rb +191 -185
  163. data/lib/tzinfo/definitions/America/New_York.rb +280 -272
  164. data/lib/tzinfo/definitions/America/Nipigon.rb +179 -171
  165. data/lib/tzinfo/definitions/America/Nome.rb +194 -181
  166. data/lib/tzinfo/definitions/America/Noronha.rb +55 -49
  167. data/lib/tzinfo/definitions/America/North_Dakota/Center.rb +198 -188
  168. data/lib/tzinfo/definitions/America/North_Dakota/New_Salem.rb +198 -188
  169. data/lib/tzinfo/definitions/America/Panama.rb +18 -12
  170. data/lib/tzinfo/definitions/America/Pangnirtung.rb +175 -162
  171. data/lib/tzinfo/definitions/America/Paramaribo.rb +24 -15
  172. data/lib/tzinfo/definitions/America/Phoenix.rb +28 -21
  173. data/lib/tzinfo/definitions/America/Port__m__au__m__Prince.rb +141 -134
  174. data/lib/tzinfo/definitions/America/Port_of_Spain.rb +16 -11
  175. data/lib/tzinfo/definitions/America/Porto_Acre.rb +11 -10
  176. data/lib/tzinfo/definitions/America/Porto_Velho.rb +45 -39
  177. data/lib/tzinfo/definitions/America/Puerto_Rico.rb +21 -14
  178. data/lib/tzinfo/definitions/America/Rainy_River.rb +179 -171
  179. data/lib/tzinfo/definitions/America/Rankin_Inlet.rb +172 -162
  180. data/lib/tzinfo/definitions/America/Recife.rb +55 -49
  181. data/lib/tzinfo/definitions/America/Regina.rb +72 -63
  182. data/lib/tzinfo/definitions/America/Rio_Branco.rb +45 -39
  183. data/lib/tzinfo/definitions/America/Rosario.rb +11 -10
  184. data/lib/tzinfo/definitions/America/Santiago.rb +202 -193
  185. data/lib/tzinfo/definitions/America/Santo_Domingo.rb +36 -27
  186. data/lib/tzinfo/definitions/America/Sao_Paulo.rb +169 -163
  187. data/lib/tzinfo/definitions/America/Scoresbysund.rb +161 -153
  188. data/lib/tzinfo/definitions/America/Shiprock.rb +11 -10
  189. data/lib/tzinfo/definitions/America/St_Johns.rb +286 -275
  190. data/lib/tzinfo/definitions/America/St_Kitts.rb +16 -11
  191. data/lib/tzinfo/definitions/America/St_Lucia.rb +18 -12
  192. data/lib/tzinfo/definitions/America/St_Thomas.rb +16 -11
  193. data/lib/tzinfo/definitions/America/St_Vincent.rb +18 -12
  194. data/lib/tzinfo/definitions/America/Swift_Current.rb +42 -33
  195. data/lib/tzinfo/definitions/America/Tegucigalpa.rb +23 -17
  196. data/lib/tzinfo/definitions/America/Thule.rb +137 -131
  197. data/lib/tzinfo/definitions/America/Thunder_Bay.rb +184 -175
  198. data/lib/tzinfo/definitions/America/Tijuana.rb +194 -185
  199. data/lib/tzinfo/definitions/America/Toronto.rb +277 -269
  200. data/lib/tzinfo/definitions/America/Tortola.rb +16 -11
  201. data/lib/tzinfo/definitions/America/Vancouver.rb +234 -226
  202. data/lib/tzinfo/definitions/America/Virgin.rb +11 -10
  203. data/lib/tzinfo/definitions/America/Whitehorse.rb +174 -163
  204. data/lib/tzinfo/definitions/America/Winnipeg.rb +230 -222
  205. data/lib/tzinfo/definitions/America/Yakutat.rb +191 -180
  206. data/lib/tzinfo/definitions/America/Yellowknife.rb +171 -162
  207. data/lib/tzinfo/definitions/Antarctica/Casey.rb +16 -11
  208. data/lib/tzinfo/definitions/Antarctica/Davis.rb +18 -13
  209. data/lib/tzinfo/definitions/Antarctica/DumontDUrville.rb +19 -13
  210. data/lib/tzinfo/definitions/Antarctica/Mawson.rb +16 -11
  211. data/lib/tzinfo/definitions/Antarctica/McMurdo.rb +169 -163
  212. data/lib/tzinfo/definitions/Antarctica/Palmer.rb +176 -166
  213. data/lib/tzinfo/definitions/Antarctica/Rothera.rb +16 -11
  214. data/lib/tzinfo/definitions/Antarctica/South_Pole.rb +11 -10
  215. data/lib/tzinfo/definitions/Antarctica/Syowa.rb +16 -11
  216. data/lib/tzinfo/definitions/Antarctica/Vostok.rb +16 -11
  217. data/lib/tzinfo/definitions/Arctic/Longyearbyen.rb +11 -10
  218. data/lib/tzinfo/definitions/Asia/Aden.rb +16 -11
  219. data/lib/tzinfo/definitions/Asia/Almaty.rb +65 -58
  220. data/lib/tzinfo/definitions/Asia/Amman.rb +161 -155
  221. data/lib/tzinfo/definitions/Asia/Anadyr.rb +163 -153
  222. data/lib/tzinfo/definitions/Asia/Aqtau.rb +73 -60
  223. data/lib/tzinfo/definitions/Asia/Aqtobe.rb +69 -59
  224. data/lib/tzinfo/definitions/Asia/Ashgabat.rb +46 -36
  225. data/lib/tzinfo/definitions/Asia/Ashkhabad.rb +11 -10
  226. data/lib/tzinfo/definitions/Asia/Baghdad.rb +157 -150
  227. data/lib/tzinfo/definitions/Asia/Bahrain.rb +18 -12
  228. data/lib/tzinfo/definitions/Asia/Baku.rb +159 -147
  229. data/lib/tzinfo/definitions/Asia/Bangkok.rb +18 -12
  230. data/lib/tzinfo/definitions/Asia/Beirut.rb +183 -177
  231. data/lib/tzinfo/definitions/Asia/Bishkek.rb +73 -62
  232. data/lib/tzinfo/definitions/Asia/Brunei.rb +18 -12
  233. data/lib/tzinfo/definitions/Asia/Calcutta.rb +23 -15
  234. data/lib/tzinfo/definitions/Asia/Choibalsan.rb +152 -144
  235. data/lib/tzinfo/definitions/Asia/Chongqing.rb +31 -24
  236. data/lib/tzinfo/definitions/Asia/Chungking.rb +11 -10
  237. data/lib/tzinfo/definitions/Asia/Colombo.rb +28 -18
  238. data/lib/tzinfo/definitions/Asia/Dacca.rb +11 -10
  239. data/lib/tzinfo/definitions/Asia/Damascus.rb +193 -187
  240. data/lib/tzinfo/definitions/Asia/Dhaka.rb +25 -16
  241. data/lib/tzinfo/definitions/Asia/Dili.rb +23 -15
  242. data/lib/tzinfo/definitions/Asia/Dubai.rb +16 -11
  243. data/lib/tzinfo/definitions/Asia/Dushanbe.rb +43 -34
  244. data/lib/tzinfo/definitions/Asia/Gaza.rb +189 -180
  245. data/lib/tzinfo/definitions/Asia/Harbin.rb +35 -27
  246. data/lib/tzinfo/definitions/Asia/Hong_Kong.rb +85 -79
  247. data/lib/tzinfo/definitions/Asia/Hovd.rb +151 -144
  248. data/lib/tzinfo/definitions/Asia/Irkutsk.rb +163 -154
  249. data/lib/tzinfo/definitions/Asia/Istanbul.rb +11 -10
  250. data/lib/tzinfo/definitions/Asia/Jakarta.rb +28 -18
  251. data/lib/tzinfo/definitions/Asia/Jayapura.rb +19 -13
  252. data/lib/tzinfo/definitions/Asia/Jerusalem.rb +161 -153
  253. data/lib/tzinfo/definitions/Asia/Kabul.rb +18 -12
  254. data/lib/tzinfo/definitions/Asia/Kamchatka.rb +161 -153
  255. data/lib/tzinfo/definitions/Asia/Karachi.rb +26 -17
  256. data/lib/tzinfo/definitions/Asia/Kashgar.rb +33 -25
  257. data/lib/tzinfo/definitions/Asia/Katmandu.rb +18 -12
  258. data/lib/tzinfo/definitions/Asia/Krasnoyarsk.rb +161 -153
  259. data/lib/tzinfo/definitions/Asia/Kuala_Lumpur.rb +29 -18
  260. data/lib/tzinfo/definitions/Asia/Kuching.rb +38 -29
  261. data/lib/tzinfo/definitions/Asia/Kuwait.rb +16 -11
  262. data/lib/tzinfo/definitions/Asia/Macao.rb +11 -10
  263. data/lib/tzinfo/definitions/Asia/Macau.rb +59 -52
  264. data/lib/tzinfo/definitions/Asia/Magadan.rb +161 -153
  265. data/lib/tzinfo/definitions/Asia/Makassar.rb +21 -14
  266. data/lib/tzinfo/definitions/Asia/Manila.rb +28 -20
  267. data/lib/tzinfo/definitions/Asia/Muscat.rb +16 -11
  268. data/lib/tzinfo/definitions/Asia/Nicosia.rb +169 -163
  269. data/lib/tzinfo/definitions/Asia/Novosibirsk.rb +162 -154
  270. data/lib/tzinfo/definitions/Asia/Omsk.rb +161 -153
  271. data/lib/tzinfo/definitions/Asia/Oral.rb +72 -60
  272. data/lib/tzinfo/definitions/Asia/Phnom_Penh.rb +21 -14
  273. data/lib/tzinfo/definitions/Asia/Pontianak.rb +28 -18
  274. data/lib/tzinfo/definitions/Asia/Pyongyang.rb +23 -16
  275. data/lib/tzinfo/definitions/Asia/Qatar.rb +18 -12
  276. data/lib/tzinfo/definitions/Asia/Qyzylorda.rb +71 -60
  277. data/lib/tzinfo/definitions/Asia/Rangoon.rb +22 -14
  278. data/lib/tzinfo/definitions/Asia/Riyadh.rb +16 -11
  279. data/lib/tzinfo/definitions/Asia/Riyadh87.rb +590 -346
  280. data/lib/tzinfo/definitions/Asia/Riyadh88.rb +580 -347
  281. data/lib/tzinfo/definitions/Asia/Riyadh89.rb +580 -347
  282. data/lib/tzinfo/definitions/Asia/Saigon.rb +21 -14
  283. data/lib/tzinfo/definitions/Asia/Sakhalin.rb +164 -154
  284. data/lib/tzinfo/definitions/Asia/Samarkand.rb +45 -35
  285. data/lib/tzinfo/definitions/Asia/Seoul.rb +32 -23
  286. data/lib/tzinfo/definitions/Asia/Shanghai.rb +33 -27
  287. data/lib/tzinfo/definitions/Asia/Singapore.rb +31 -19
  288. data/lib/tzinfo/definitions/Asia/Taipei.rb +57 -51
  289. data/lib/tzinfo/definitions/Asia/Tashkent.rb +45 -35
  290. data/lib/tzinfo/definitions/Asia/Tbilisi.rb +76 -63
  291. data/lib/tzinfo/definitions/Asia/Tehran.rb +59 -50
  292. data/lib/tzinfo/definitions/Asia/Tel_Aviv.rb +11 -10
  293. data/lib/tzinfo/definitions/Asia/Thimbu.rb +11 -10
  294. data/lib/tzinfo/definitions/Asia/Thimphu.rb +18 -12
  295. data/lib/tzinfo/definitions/Asia/Tokyo.rb +28 -21
  296. data/lib/tzinfo/definitions/Asia/Ujung_Pandang.rb +11 -10
  297. data/lib/tzinfo/definitions/Asia/Ulaanbaatar.rb +151 -144
  298. data/lib/tzinfo/definitions/Asia/Ulan_Bator.rb +11 -10
  299. data/lib/tzinfo/definitions/Asia/Urumqi.rb +31 -24
  300. data/lib/tzinfo/definitions/Asia/Vientiane.rb +21 -14
  301. data/lib/tzinfo/definitions/Asia/Vladivostok.rb +162 -153
  302. data/lib/tzinfo/definitions/Asia/Yakutsk.rb +161 -153
  303. data/lib/tzinfo/definitions/Asia/Yekaterinburg.rb +163 -153
  304. data/lib/tzinfo/definitions/Asia/Yerevan.rb +163 -151
  305. data/lib/tzinfo/definitions/Atlantic/Azores.rb +268 -257
  306. data/lib/tzinfo/definitions/Atlantic/Bermuda.rb +171 -165
  307. data/lib/tzinfo/definitions/Atlantic/Canary.rb +161 -154
  308. data/lib/tzinfo/definitions/Atlantic/Cape_Verde.rb +21 -14
  309. data/lib/tzinfo/definitions/Atlantic/Faeroe.rb +157 -151
  310. data/lib/tzinfo/definitions/Atlantic/Jan_Mayen.rb +11 -10
  311. data/lib/tzinfo/definitions/Atlantic/Madeira.rb +267 -257
  312. data/lib/tzinfo/definitions/Atlantic/Reykjavik.rb +83 -75
  313. data/lib/tzinfo/definitions/Atlantic/South_Georgia.rb +16 -11
  314. data/lib/tzinfo/definitions/Atlantic/St_Helena.rb +18 -12
  315. data/lib/tzinfo/definitions/Atlantic/Stanley.rb +168 -159
  316. data/lib/tzinfo/definitions/Australia/ACT.rb +11 -10
  317. data/lib/tzinfo/definitions/Australia/Adelaide.rb +185 -178
  318. data/lib/tzinfo/definitions/Australia/Brisbane.rb +33 -27
  319. data/lib/tzinfo/definitions/Australia/Broken_Hill.rb +187 -179
  320. data/lib/tzinfo/definitions/Australia/Canberra.rb +11 -10
  321. data/lib/tzinfo/definitions/Australia/Currie.rb +183 -177
  322. data/lib/tzinfo/definitions/Australia/Darwin.rb +27 -20
  323. data/lib/tzinfo/definitions/Australia/Hobart.rb +191 -185
  324. data/lib/tzinfo/definitions/Australia/LHI.rb +11 -10
  325. data/lib/tzinfo/definitions/Australia/Lindeman.rb +37 -31
  326. data/lib/tzinfo/definitions/Australia/Lord_Howe.rb +158 -150
  327. data/lib/tzinfo/definitions/Australia/Melbourne.rb +183 -177
  328. data/lib/tzinfo/definitions/Australia/NSW.rb +11 -10
  329. data/lib/tzinfo/definitions/Australia/North.rb +11 -10
  330. data/lib/tzinfo/definitions/Australia/Perth.rb +29 -23
  331. data/lib/tzinfo/definitions/Australia/Queensland.rb +11 -10
  332. data/lib/tzinfo/definitions/Australia/South.rb +11 -10
  333. data/lib/tzinfo/definitions/Australia/Sydney.rb +183 -177
  334. data/lib/tzinfo/definitions/Australia/Tasmania.rb +11 -10
  335. data/lib/tzinfo/definitions/Australia/Victoria.rb +11 -10
  336. data/lib/tzinfo/definitions/Australia/West.rb +11 -10
  337. data/lib/tzinfo/definitions/Australia/Yancowinna.rb +11 -10
  338. data/lib/tzinfo/definitions/Brazil/Acre.rb +11 -10
  339. data/lib/tzinfo/definitions/Brazil/DeNoronha.rb +11 -10
  340. data/lib/tzinfo/definitions/Brazil/East.rb +11 -10
  341. data/lib/tzinfo/definitions/Brazil/West.rb +11 -10
  342. data/lib/tzinfo/definitions/CET.rb +173 -168
  343. data/lib/tzinfo/definitions/CST6CDT.rb +190 -183
  344. data/lib/tzinfo/definitions/Canada/Atlantic.rb +11 -10
  345. data/lib/tzinfo/definitions/Canada/Central.rb +11 -10
  346. data/lib/tzinfo/definitions/Canada/East__m__Saskatchewan.rb +11 -10
  347. data/lib/tzinfo/definitions/Canada/Eastern.rb +11 -10
  348. data/lib/tzinfo/definitions/Canada/Mountain.rb +11 -10
  349. data/lib/tzinfo/definitions/Canada/Newfoundland.rb +11 -10
  350. data/lib/tzinfo/definitions/Canada/Pacific.rb +11 -10
  351. data/lib/tzinfo/definitions/Canada/Saskatchewan.rb +11 -10
  352. data/lib/tzinfo/definitions/Canada/Yukon.rb +11 -10
  353. data/lib/tzinfo/definitions/Chile/Continental.rb +11 -10
  354. data/lib/tzinfo/definitions/Chile/EasterIsland.rb +11 -10
  355. data/lib/tzinfo/definitions/Cuba.rb +9 -8
  356. data/lib/tzinfo/definitions/EET.rb +161 -156
  357. data/lib/tzinfo/definitions/EST.rb +12 -8
  358. data/lib/tzinfo/definitions/EST5EDT.rb +190 -183
  359. data/lib/tzinfo/definitions/Egypt.rb +9 -8
  360. data/lib/tzinfo/definitions/Eire.rb +9 -8
  361. data/lib/tzinfo/definitions/Etc/GMT.rb +14 -10
  362. data/lib/tzinfo/definitions/Etc/GMT0.rb +11 -10
  363. data/lib/tzinfo/definitions/Etc/GMT__m__0.rb +11 -10
  364. data/lib/tzinfo/definitions/Etc/GMT__m__1.rb +14 -10
  365. data/lib/tzinfo/definitions/Etc/GMT__m__10.rb +14 -10
  366. data/lib/tzinfo/definitions/Etc/GMT__m__11.rb +14 -10
  367. data/lib/tzinfo/definitions/Etc/GMT__m__12.rb +14 -10
  368. data/lib/tzinfo/definitions/Etc/GMT__m__13.rb +14 -10
  369. data/lib/tzinfo/definitions/Etc/GMT__m__14.rb +14 -10
  370. data/lib/tzinfo/definitions/Etc/GMT__m__2.rb +14 -10
  371. data/lib/tzinfo/definitions/Etc/GMT__m__3.rb +14 -10
  372. data/lib/tzinfo/definitions/Etc/GMT__m__4.rb +14 -10
  373. data/lib/tzinfo/definitions/Etc/GMT__m__5.rb +14 -10
  374. data/lib/tzinfo/definitions/Etc/GMT__m__6.rb +14 -10
  375. data/lib/tzinfo/definitions/Etc/GMT__m__7.rb +14 -10
  376. data/lib/tzinfo/definitions/Etc/GMT__m__8.rb +14 -10
  377. data/lib/tzinfo/definitions/Etc/GMT__m__9.rb +14 -10
  378. data/lib/tzinfo/definitions/Etc/GMT__p__0.rb +11 -10
  379. data/lib/tzinfo/definitions/Etc/GMT__p__1.rb +14 -10
  380. data/lib/tzinfo/definitions/Etc/GMT__p__10.rb +14 -10
  381. data/lib/tzinfo/definitions/Etc/GMT__p__11.rb +14 -10
  382. data/lib/tzinfo/definitions/Etc/GMT__p__12.rb +14 -10
  383. data/lib/tzinfo/definitions/Etc/GMT__p__2.rb +14 -10
  384. data/lib/tzinfo/definitions/Etc/GMT__p__3.rb +14 -10
  385. data/lib/tzinfo/definitions/Etc/GMT__p__4.rb +14 -10
  386. data/lib/tzinfo/definitions/Etc/GMT__p__5.rb +14 -10
  387. data/lib/tzinfo/definitions/Etc/GMT__p__6.rb +14 -10
  388. data/lib/tzinfo/definitions/Etc/GMT__p__7.rb +14 -10
  389. data/lib/tzinfo/definitions/Etc/GMT__p__8.rb +14 -10
  390. data/lib/tzinfo/definitions/Etc/GMT__p__9.rb +14 -10
  391. data/lib/tzinfo/definitions/Etc/Greenwich.rb +11 -10
  392. data/lib/tzinfo/definitions/Etc/UCT.rb +14 -10
  393. data/lib/tzinfo/definitions/Etc/UTC.rb +14 -10
  394. data/lib/tzinfo/definitions/Etc/Universal.rb +11 -10
  395. data/lib/tzinfo/definitions/Etc/Zulu.rb +11 -10
  396. data/lib/tzinfo/definitions/Europe/Amsterdam.rb +226 -216
  397. data/lib/tzinfo/definitions/Europe/Andorra.rb +151 -144
  398. data/lib/tzinfo/definitions/Europe/Athens.rb +183 -174
  399. data/lib/tzinfo/definitions/Europe/Belfast.rb +11 -10
  400. data/lib/tzinfo/definitions/Europe/Belgrade.rb +161 -155
  401. data/lib/tzinfo/definitions/Europe/Berlin.rb +186 -179
  402. data/lib/tzinfo/definitions/Europe/Bratislava.rb +11 -10
  403. data/lib/tzinfo/definitions/Europe/Brussels.rb +230 -221
  404. data/lib/tzinfo/definitions/Europe/Bucharest.rb +179 -172
  405. data/lib/tzinfo/definitions/Europe/Budapest.rb +195 -189
  406. data/lib/tzinfo/definitions/Europe/Chisinau.rb +187 -175
  407. data/lib/tzinfo/definitions/Europe/Copenhagen.rb +177 -170
  408. data/lib/tzinfo/definitions/Europe/Dublin.rb +274 -263
  409. data/lib/tzinfo/definitions/Europe/Gibraltar.rb +243 -234
  410. data/lib/tzinfo/definitions/Europe/Helsinki.rb +161 -154
  411. data/lib/tzinfo/definitions/Europe/Istanbul.rb +216 -207
  412. data/lib/tzinfo/definitions/Europe/Kaliningrad.rb +179 -167
  413. data/lib/tzinfo/definitions/Europe/Kiev.rb +166 -155
  414. data/lib/tzinfo/definitions/Europe/Lisbon.rb +266 -257
  415. data/lib/tzinfo/definitions/Europe/Ljubljana.rb +11 -10
  416. data/lib/tzinfo/definitions/Europe/London.rb +286 -277
  417. data/lib/tzinfo/definitions/Europe/Luxembourg.rb +229 -219
  418. data/lib/tzinfo/definitions/Europe/Madrid.rb +209 -200
  419. data/lib/tzinfo/definitions/Europe/Malta.rb +211 -205
  420. data/lib/tzinfo/definitions/Europe/Mariehamn.rb +11 -10
  421. data/lib/tzinfo/definitions/Europe/Minsk.rb +168 -157
  422. data/lib/tzinfo/definitions/Europe/Monaco.rb +231 -221
  423. data/lib/tzinfo/definitions/Europe/Moscow.rb +179 -166
  424. data/lib/tzinfo/definitions/Europe/Nicosia.rb +11 -10
  425. data/lib/tzinfo/definitions/Europe/Oslo.rb +183 -177
  426. data/lib/tzinfo/definitions/Europe/Paris.rb +230 -220
  427. data/lib/tzinfo/definitions/Europe/Prague.rb +185 -178
  428. data/lib/tzinfo/definitions/Europe/Riga.rb +174 -162
  429. data/lib/tzinfo/definitions/Europe/Rome.rb +213 -206
  430. data/lib/tzinfo/definitions/Europe/Samara.rb +164 -153
  431. data/lib/tzinfo/definitions/Europe/San_Marino.rb +11 -10
  432. data/lib/tzinfo/definitions/Europe/Sarajevo.rb +11 -10
  433. data/lib/tzinfo/definitions/Europe/Simferopol.rb +168 -157
  434. data/lib/tzinfo/definitions/Europe/Skopje.rb +11 -10
  435. data/lib/tzinfo/definitions/Europe/Sofia.rb +171 -162
  436. data/lib/tzinfo/definitions/Europe/Stockholm.rb +163 -156
  437. data/lib/tzinfo/definitions/Europe/Tallinn.rb +170 -159
  438. data/lib/tzinfo/definitions/Europe/Tirane.rb +175 -169
  439. data/lib/tzinfo/definitions/Europe/Tiraspol.rb +11 -10
  440. data/lib/tzinfo/definitions/Europe/Uzhgorod.rb +166 -156
  441. data/lib/tzinfo/definitions/Europe/Vaduz.rb +157 -151
  442. data/lib/tzinfo/definitions/Europe/Vatican.rb +11 -10
  443. data/lib/tzinfo/definitions/Europe/Vienna.rb +181 -175
  444. data/lib/tzinfo/definitions/Europe/Vilnius.rb +168 -156
  445. data/lib/tzinfo/definitions/Europe/Warsaw.rb +210 -201
  446. data/lib/tzinfo/definitions/Europe/Zagreb.rb +11 -10
  447. data/lib/tzinfo/definitions/Europe/Zaporozhye.rb +169 -158
  448. data/lib/tzinfo/definitions/Europe/Zurich.rb +165 -158
  449. data/lib/tzinfo/definitions/GB.rb +9 -8
  450. data/lib/tzinfo/definitions/GB__m__Eire.rb +9 -8
  451. data/lib/tzinfo/definitions/GMT.rb +9 -8
  452. data/lib/tzinfo/definitions/GMT0.rb +9 -8
  453. data/lib/tzinfo/definitions/GMT__m__0.rb +9 -8
  454. data/lib/tzinfo/definitions/GMT__p__0.rb +9 -8
  455. data/lib/tzinfo/definitions/Greenwich.rb +9 -8
  456. data/lib/tzinfo/definitions/HST.rb +12 -8
  457. data/lib/tzinfo/definitions/Hongkong.rb +9 -8
  458. data/lib/tzinfo/definitions/Iceland.rb +9 -8
  459. data/lib/tzinfo/definitions/Indian/Antananarivo.rb +19 -13
  460. data/lib/tzinfo/definitions/Indian/Chagos.rb +18 -12
  461. data/lib/tzinfo/definitions/Indian/Christmas.rb +16 -11
  462. data/lib/tzinfo/definitions/Indian/Cocos.rb +16 -11
  463. data/lib/tzinfo/definitions/Indian/Comoro.rb +16 -11
  464. data/lib/tzinfo/definitions/Indian/Kerguelen.rb +16 -11
  465. data/lib/tzinfo/definitions/Indian/Mahe.rb +16 -11
  466. data/lib/tzinfo/definitions/Indian/Maldives.rb +18 -12
  467. data/lib/tzinfo/definitions/Indian/Mauritius.rb +16 -11
  468. data/lib/tzinfo/definitions/Indian/Mayotte.rb +16 -11
  469. data/lib/tzinfo/definitions/Indian/Reunion.rb +16 -11
  470. data/lib/tzinfo/definitions/Iran.rb +9 -8
  471. data/lib/tzinfo/definitions/Israel.rb +9 -8
  472. data/lib/tzinfo/definitions/Jamaica.rb +9 -8
  473. data/lib/tzinfo/definitions/Japan.rb +9 -8
  474. data/lib/tzinfo/definitions/Kwajalein.rb +9 -8
  475. data/lib/tzinfo/definitions/Libya.rb +9 -8
  476. data/lib/tzinfo/definitions/MET.rb +173 -168
  477. data/lib/tzinfo/definitions/MST.rb +12 -8
  478. data/lib/tzinfo/definitions/MST7MDT.rb +190 -183
  479. data/lib/tzinfo/definitions/Mexico/BajaNorte.rb +11 -10
  480. data/lib/tzinfo/definitions/Mexico/BajaSur.rb +11 -10
  481. data/lib/tzinfo/definitions/Mexico/General.rb +11 -10
  482. data/lib/tzinfo/definitions/Mideast/Riyadh87.rb +11 -10
  483. data/lib/tzinfo/definitions/Mideast/Riyadh88.rb +11 -10
  484. data/lib/tzinfo/definitions/Mideast/Riyadh89.rb +11 -10
  485. data/lib/tzinfo/definitions/NZ.rb +9 -8
  486. data/lib/tzinfo/definitions/NZ__m__CHAT.rb +9 -8
  487. data/lib/tzinfo/definitions/Navajo.rb +9 -8
  488. data/lib/tzinfo/definitions/PRC.rb +9 -8
  489. data/lib/tzinfo/definitions/PST8PDT.rb +190 -183
  490. data/lib/tzinfo/definitions/Pacific/Apia.rb +20 -13
  491. data/lib/tzinfo/definitions/Pacific/Auckland.rb +200 -190
  492. data/lib/tzinfo/definitions/Pacific/Chatham.rb +169 -163
  493. data/lib/tzinfo/definitions/Pacific/Easter.rb +189 -180
  494. data/lib/tzinfo/definitions/Pacific/Efate.rb +37 -31
  495. data/lib/tzinfo/definitions/Pacific/Enderbury.rb +20 -13
  496. data/lib/tzinfo/definitions/Pacific/Fakaofo.rb +16 -11
  497. data/lib/tzinfo/definitions/Pacific/Fiji.rb +21 -15
  498. data/lib/tzinfo/definitions/Pacific/Funafuti.rb +16 -11
  499. data/lib/tzinfo/definitions/Pacific/Galapagos.rb +18 -12
  500. data/lib/tzinfo/definitions/Pacific/Gambier.rb +16 -11
  501. data/lib/tzinfo/definitions/Pacific/Guadalcanal.rb +16 -11
  502. data/lib/tzinfo/definitions/Pacific/Guam.rb +20 -13
  503. data/lib/tzinfo/definitions/Pacific/Honolulu.rb +26 -17
  504. data/lib/tzinfo/definitions/Pacific/Johnston.rb +14 -10
  505. data/lib/tzinfo/definitions/Pacific/Kiritimati.rb +20 -13
  506. data/lib/tzinfo/definitions/Pacific/Kosrae.rb +19 -13
  507. data/lib/tzinfo/definitions/Pacific/Kwajalein.rb +20 -13
  508. data/lib/tzinfo/definitions/Pacific/Majuro.rb +18 -12
  509. data/lib/tzinfo/definitions/Pacific/Marquesas.rb +16 -11
  510. data/lib/tzinfo/definitions/Pacific/Midway.rb +23 -15
  511. data/lib/tzinfo/definitions/Pacific/Nauru.rb +21 -14
  512. data/lib/tzinfo/definitions/Pacific/Niue.rb +20 -13
  513. data/lib/tzinfo/definitions/Pacific/Norfolk.rb +18 -12
  514. data/lib/tzinfo/definitions/Pacific/Noumea.rb +23 -17
  515. data/lib/tzinfo/definitions/Pacific/Pago_Pago.rb +24 -15
  516. data/lib/tzinfo/definitions/Pacific/Palau.rb +16 -11
  517. data/lib/tzinfo/definitions/Pacific/Pitcairn.rb +18 -12
  518. data/lib/tzinfo/definitions/Pacific/Ponape.rb +16 -11
  519. data/lib/tzinfo/definitions/Pacific/Port_Moresby.rb +18 -12
  520. data/lib/tzinfo/definitions/Pacific/Rarotonga.rb +44 -37
  521. data/lib/tzinfo/definitions/Pacific/Saipan.rb +22 -14
  522. data/lib/tzinfo/definitions/Pacific/Samoa.rb +11 -10
  523. data/lib/tzinfo/definitions/Pacific/Tahiti.rb +16 -11
  524. data/lib/tzinfo/definitions/Pacific/Tarawa.rb +16 -11
  525. data/lib/tzinfo/definitions/Pacific/Tongatapu.rb +25 -18
  526. data/lib/tzinfo/definitions/Pacific/Truk.rb +16 -11
  527. data/lib/tzinfo/definitions/Pacific/Wake.rb +16 -11
  528. data/lib/tzinfo/definitions/Pacific/Wallis.rb +16 -11
  529. data/lib/tzinfo/definitions/Pacific/Yap.rb +11 -10
  530. data/lib/tzinfo/definitions/Poland.rb +9 -8
  531. data/lib/tzinfo/definitions/Portugal.rb +9 -8
  532. data/lib/tzinfo/definitions/ROC.rb +9 -8
  533. data/lib/tzinfo/definitions/ROK.rb +9 -8
  534. data/lib/tzinfo/definitions/Singapore.rb +9 -8
  535. data/lib/tzinfo/definitions/Turkey.rb +9 -8
  536. data/lib/tzinfo/definitions/UCT.rb +9 -8
  537. data/lib/tzinfo/definitions/US/Alaska.rb +11 -10
  538. data/lib/tzinfo/definitions/US/Aleutian.rb +11 -10
  539. data/lib/tzinfo/definitions/US/Arizona.rb +11 -10
  540. data/lib/tzinfo/definitions/US/Central.rb +11 -10
  541. data/lib/tzinfo/definitions/US/East__m__Indiana.rb +11 -10
  542. data/lib/tzinfo/definitions/US/Eastern.rb +11 -10
  543. data/lib/tzinfo/definitions/US/Hawaii.rb +11 -10
  544. data/lib/tzinfo/definitions/US/Indiana__m__Starke.rb +11 -10
  545. data/lib/tzinfo/definitions/US/Michigan.rb +11 -10
  546. data/lib/tzinfo/definitions/US/Mountain.rb +11 -10
  547. data/lib/tzinfo/definitions/US/Pacific.rb +11 -10
  548. data/lib/tzinfo/definitions/US/Pacific__m__New.rb +11 -10
  549. data/lib/tzinfo/definitions/US/Samoa.rb +11 -10
  550. data/lib/tzinfo/definitions/UTC.rb +9 -8
  551. data/lib/tzinfo/definitions/Universal.rb +9 -8
  552. data/lib/tzinfo/definitions/WET.rb +161 -156
  553. data/lib/tzinfo/definitions/W__m__SU.rb +9 -8
  554. data/lib/tzinfo/definitions/Zulu.rb +9 -8
  555. data/lib/tzinfo/indexes/countries.rb +875 -0
  556. data/lib/tzinfo/indexes/timezones.rb +554 -0
  557. data/lib/tzinfo/info_timezone.rb +52 -0
  558. data/lib/tzinfo/linked_timezone.rb +51 -0
  559. data/lib/tzinfo/linked_timezone_info.rb +44 -0
  560. data/lib/tzinfo/time_or_datetime.rb +33 -22
  561. data/lib/tzinfo/timezone.rb +162 -112
  562. data/lib/tzinfo/timezone_definition.rb +56 -0
  563. data/lib/tzinfo/timezone_index_definition.rb +72 -0
  564. data/lib/tzinfo/timezone_info.rb +40 -0
  565. data/lib/tzinfo/timezone_offset_info.rb +94 -0
  566. data/lib/tzinfo/timezone_period.rb +110 -53
  567. data/lib/tzinfo/timezone_proxy.rb +85 -0
  568. data/lib/tzinfo/timezone_transition_info.rb +127 -0
  569. data/lib/tzinfo/tzdataparser.rb +261 -203
  570. data/test/tc_country.rb +63 -38
  571. data/test/tc_country_index_definition.rb +71 -0
  572. data/test/tc_country_info.rb +72 -0
  573. data/test/tc_country_timezone.rb +121 -0
  574. data/test/tc_data_timezone.rb +69 -0
  575. data/test/tc_data_timezone_info.rb +282 -0
  576. data/test/tc_info_timezone.rb +37 -0
  577. data/test/tc_linked_timezone.rb +97 -0
  578. data/test/tc_linked_timezone_info.rb +18 -0
  579. data/test/tc_time_or_datetime.rb +30 -0
  580. data/test/tc_timezone.rb +536 -319
  581. data/test/tc_timezone_definition.rb +115 -0
  582. data/test/tc_timezone_index_definition.rb +75 -0
  583. data/test/tc_timezone_info.rb +13 -0
  584. data/test/tc_timezone_offset_info.rb +116 -0
  585. data/test/tc_timezone_period.rb +298 -78
  586. data/test/tc_timezone_proxy.rb +23 -13
  587. data/test/tc_timezone_transition_info.rb +194 -0
  588. metadata +38 -249
  589. data/lib/tzinfo/countries/AD.rb +0 -12
  590. data/lib/tzinfo/countries/AE.rb +0 -12
  591. data/lib/tzinfo/countries/AF.rb +0 -12
  592. data/lib/tzinfo/countries/AG.rb +0 -12
  593. data/lib/tzinfo/countries/AI.rb +0 -12
  594. data/lib/tzinfo/countries/AL.rb +0 -12
  595. data/lib/tzinfo/countries/AM.rb +0 -12
  596. data/lib/tzinfo/countries/AN.rb +0 -12
  597. data/lib/tzinfo/countries/AO.rb +0 -12
  598. data/lib/tzinfo/countries/AQ.rb +0 -21
  599. data/lib/tzinfo/countries/AR.rb +0 -21
  600. data/lib/tzinfo/countries/AS.rb +0 -12
  601. data/lib/tzinfo/countries/AT.rb +0 -12
  602. data/lib/tzinfo/countries/AU.rb +0 -22
  603. data/lib/tzinfo/countries/AW.rb +0 -12
  604. data/lib/tzinfo/countries/AX.rb +0 -12
  605. data/lib/tzinfo/countries/AZ.rb +0 -12
  606. data/lib/tzinfo/countries/BA.rb +0 -12
  607. data/lib/tzinfo/countries/BB.rb +0 -12
  608. data/lib/tzinfo/countries/BD.rb +0 -12
  609. data/lib/tzinfo/countries/BE.rb +0 -12
  610. data/lib/tzinfo/countries/BF.rb +0 -12
  611. data/lib/tzinfo/countries/BG.rb +0 -12
  612. data/lib/tzinfo/countries/BH.rb +0 -12
  613. data/lib/tzinfo/countries/BI.rb +0 -12
  614. data/lib/tzinfo/countries/BJ.rb +0 -12
  615. data/lib/tzinfo/countries/BM.rb +0 -12
  616. data/lib/tzinfo/countries/BN.rb +0 -12
  617. data/lib/tzinfo/countries/BO.rb +0 -12
  618. data/lib/tzinfo/countries/BR.rb +0 -26
  619. data/lib/tzinfo/countries/BS.rb +0 -12
  620. data/lib/tzinfo/countries/BT.rb +0 -12
  621. data/lib/tzinfo/countries/BV.rb +0 -11
  622. data/lib/tzinfo/countries/BW.rb +0 -12
  623. data/lib/tzinfo/countries/BY.rb +0 -12
  624. data/lib/tzinfo/countries/BZ.rb +0 -12
  625. data/lib/tzinfo/countries/CA.rb +0 -36
  626. data/lib/tzinfo/countries/CC.rb +0 -12
  627. data/lib/tzinfo/countries/CD.rb +0 -13
  628. data/lib/tzinfo/countries/CF.rb +0 -12
  629. data/lib/tzinfo/countries/CG.rb +0 -12
  630. data/lib/tzinfo/countries/CH.rb +0 -12
  631. data/lib/tzinfo/countries/CI.rb +0 -12
  632. data/lib/tzinfo/countries/CK.rb +0 -12
  633. data/lib/tzinfo/countries/CL.rb +0 -13
  634. data/lib/tzinfo/countries/CM.rb +0 -12
  635. data/lib/tzinfo/countries/CN.rb +0 -16
  636. data/lib/tzinfo/countries/CO.rb +0 -12
  637. data/lib/tzinfo/countries/CR.rb +0 -12
  638. data/lib/tzinfo/countries/CS.rb +0 -12
  639. data/lib/tzinfo/countries/CU.rb +0 -12
  640. data/lib/tzinfo/countries/CV.rb +0 -12
  641. data/lib/tzinfo/countries/CX.rb +0 -12
  642. data/lib/tzinfo/countries/CY.rb +0 -12
  643. data/lib/tzinfo/countries/CZ.rb +0 -12
  644. data/lib/tzinfo/countries/DE.rb +0 -12
  645. data/lib/tzinfo/countries/DJ.rb +0 -12
  646. data/lib/tzinfo/countries/DK.rb +0 -12
  647. data/lib/tzinfo/countries/DM.rb +0 -12
  648. data/lib/tzinfo/countries/DO.rb +0 -12
  649. data/lib/tzinfo/countries/DZ.rb +0 -12
  650. data/lib/tzinfo/countries/EC.rb +0 -13
  651. data/lib/tzinfo/countries/EE.rb +0 -12
  652. data/lib/tzinfo/countries/EG.rb +0 -12
  653. data/lib/tzinfo/countries/EH.rb +0 -12
  654. data/lib/tzinfo/countries/ER.rb +0 -12
  655. data/lib/tzinfo/countries/ES.rb +0 -14
  656. data/lib/tzinfo/countries/ET.rb +0 -12
  657. data/lib/tzinfo/countries/FI.rb +0 -12
  658. data/lib/tzinfo/countries/FJ.rb +0 -12
  659. data/lib/tzinfo/countries/FK.rb +0 -12
  660. data/lib/tzinfo/countries/FM.rb +0 -14
  661. data/lib/tzinfo/countries/FO.rb +0 -12
  662. data/lib/tzinfo/countries/FR.rb +0 -12
  663. data/lib/tzinfo/countries/GA.rb +0 -12
  664. data/lib/tzinfo/countries/GB.rb +0 -12
  665. data/lib/tzinfo/countries/GD.rb +0 -12
  666. data/lib/tzinfo/countries/GE.rb +0 -12
  667. data/lib/tzinfo/countries/GF.rb +0 -12
  668. data/lib/tzinfo/countries/GH.rb +0 -12
  669. data/lib/tzinfo/countries/GI.rb +0 -12
  670. data/lib/tzinfo/countries/GL.rb +0 -15
  671. data/lib/tzinfo/countries/GM.rb +0 -12
  672. data/lib/tzinfo/countries/GN.rb +0 -12
  673. data/lib/tzinfo/countries/GP.rb +0 -12
  674. data/lib/tzinfo/countries/GQ.rb +0 -12
  675. data/lib/tzinfo/countries/GR.rb +0 -12
  676. data/lib/tzinfo/countries/GS.rb +0 -12
  677. data/lib/tzinfo/countries/GT.rb +0 -12
  678. data/lib/tzinfo/countries/GU.rb +0 -12
  679. data/lib/tzinfo/countries/GW.rb +0 -12
  680. data/lib/tzinfo/countries/GY.rb +0 -12
  681. data/lib/tzinfo/countries/HK.rb +0 -12
  682. data/lib/tzinfo/countries/HM.rb +0 -11
  683. data/lib/tzinfo/countries/HN.rb +0 -12
  684. data/lib/tzinfo/countries/HR.rb +0 -12
  685. data/lib/tzinfo/countries/HT.rb +0 -12
  686. data/lib/tzinfo/countries/HU.rb +0 -12
  687. data/lib/tzinfo/countries/ID.rb +0 -15
  688. data/lib/tzinfo/countries/IE.rb +0 -12
  689. data/lib/tzinfo/countries/IL.rb +0 -12
  690. data/lib/tzinfo/countries/IN.rb +0 -12
  691. data/lib/tzinfo/countries/IO.rb +0 -12
  692. data/lib/tzinfo/countries/IQ.rb +0 -12
  693. data/lib/tzinfo/countries/IR.rb +0 -12
  694. data/lib/tzinfo/countries/IS.rb +0 -12
  695. data/lib/tzinfo/countries/IT.rb +0 -12
  696. data/lib/tzinfo/countries/Index.rb +0 -253
  697. data/lib/tzinfo/countries/JM.rb +0 -12
  698. data/lib/tzinfo/countries/JO.rb +0 -12
  699. data/lib/tzinfo/countries/JP.rb +0 -12
  700. data/lib/tzinfo/countries/KE.rb +0 -12
  701. data/lib/tzinfo/countries/KG.rb +0 -12
  702. data/lib/tzinfo/countries/KH.rb +0 -12
  703. data/lib/tzinfo/countries/KI.rb +0 -14
  704. data/lib/tzinfo/countries/KM.rb +0 -12
  705. data/lib/tzinfo/countries/KN.rb +0 -12
  706. data/lib/tzinfo/countries/KP.rb +0 -12
  707. data/lib/tzinfo/countries/KR.rb +0 -12
  708. data/lib/tzinfo/countries/KW.rb +0 -12
  709. data/lib/tzinfo/countries/KY.rb +0 -12
  710. data/lib/tzinfo/countries/KZ.rb +0 -16
  711. data/lib/tzinfo/countries/LA.rb +0 -12
  712. data/lib/tzinfo/countries/LB.rb +0 -12
  713. data/lib/tzinfo/countries/LC.rb +0 -12
  714. data/lib/tzinfo/countries/LI.rb +0 -12
  715. data/lib/tzinfo/countries/LK.rb +0 -12
  716. data/lib/tzinfo/countries/LR.rb +0 -12
  717. data/lib/tzinfo/countries/LS.rb +0 -12
  718. data/lib/tzinfo/countries/LT.rb +0 -12
  719. data/lib/tzinfo/countries/LU.rb +0 -12
  720. data/lib/tzinfo/countries/LV.rb +0 -12
  721. data/lib/tzinfo/countries/LY.rb +0 -12
  722. data/lib/tzinfo/countries/MA.rb +0 -12
  723. data/lib/tzinfo/countries/MC.rb +0 -12
  724. data/lib/tzinfo/countries/MD.rb +0 -12
  725. data/lib/tzinfo/countries/MG.rb +0 -12
  726. data/lib/tzinfo/countries/MH.rb +0 -13
  727. data/lib/tzinfo/countries/MK.rb +0 -12
  728. data/lib/tzinfo/countries/ML.rb +0 -12
  729. data/lib/tzinfo/countries/MM.rb +0 -12
  730. data/lib/tzinfo/countries/MN.rb +0 -14
  731. data/lib/tzinfo/countries/MO.rb +0 -12
  732. data/lib/tzinfo/countries/MP.rb +0 -12
  733. data/lib/tzinfo/countries/MQ.rb +0 -12
  734. data/lib/tzinfo/countries/MR.rb +0 -12
  735. data/lib/tzinfo/countries/MS.rb +0 -12
  736. data/lib/tzinfo/countries/MT.rb +0 -12
  737. data/lib/tzinfo/countries/MU.rb +0 -12
  738. data/lib/tzinfo/countries/MV.rb +0 -12
  739. data/lib/tzinfo/countries/MW.rb +0 -12
  740. data/lib/tzinfo/countries/MX.rb +0 -19
  741. data/lib/tzinfo/countries/MY.rb +0 -13
  742. data/lib/tzinfo/countries/MZ.rb +0 -12
  743. data/lib/tzinfo/countries/NA.rb +0 -12
  744. data/lib/tzinfo/countries/NC.rb +0 -12
  745. data/lib/tzinfo/countries/NE.rb +0 -12
  746. data/lib/tzinfo/countries/NF.rb +0 -12
  747. data/lib/tzinfo/countries/NG.rb +0 -12
  748. data/lib/tzinfo/countries/NI.rb +0 -12
  749. data/lib/tzinfo/countries/NL.rb +0 -12
  750. data/lib/tzinfo/countries/NO.rb +0 -12
  751. data/lib/tzinfo/countries/NP.rb +0 -12
  752. data/lib/tzinfo/countries/NR.rb +0 -12
  753. data/lib/tzinfo/countries/NU.rb +0 -12
  754. data/lib/tzinfo/countries/NZ.rb +0 -13
  755. data/lib/tzinfo/countries/OM.rb +0 -12
  756. data/lib/tzinfo/countries/PA.rb +0 -12
  757. data/lib/tzinfo/countries/PE.rb +0 -12
  758. data/lib/tzinfo/countries/PF.rb +0 -14
  759. data/lib/tzinfo/countries/PG.rb +0 -12
  760. data/lib/tzinfo/countries/PH.rb +0 -12
  761. data/lib/tzinfo/countries/PK.rb +0 -12
  762. data/lib/tzinfo/countries/PL.rb +0 -12
  763. data/lib/tzinfo/countries/PM.rb +0 -12
  764. data/lib/tzinfo/countries/PN.rb +0 -12
  765. data/lib/tzinfo/countries/PR.rb +0 -12
  766. data/lib/tzinfo/countries/PS.rb +0 -12
  767. data/lib/tzinfo/countries/PT.rb +0 -14
  768. data/lib/tzinfo/countries/PW.rb +0 -12
  769. data/lib/tzinfo/countries/PY.rb +0 -12
  770. data/lib/tzinfo/countries/QA.rb +0 -12
  771. data/lib/tzinfo/countries/RE.rb +0 -12
  772. data/lib/tzinfo/countries/RO.rb +0 -12
  773. data/lib/tzinfo/countries/RU.rb +0 -25
  774. data/lib/tzinfo/countries/RW.rb +0 -12
  775. data/lib/tzinfo/countries/SA.rb +0 -12
  776. data/lib/tzinfo/countries/SB.rb +0 -12
  777. data/lib/tzinfo/countries/SC.rb +0 -12
  778. data/lib/tzinfo/countries/SD.rb +0 -12
  779. data/lib/tzinfo/countries/SE.rb +0 -12
  780. data/lib/tzinfo/countries/SG.rb +0 -12
  781. data/lib/tzinfo/countries/SH.rb +0 -12
  782. data/lib/tzinfo/countries/SI.rb +0 -12
  783. data/lib/tzinfo/countries/SJ.rb +0 -13
  784. data/lib/tzinfo/countries/SK.rb +0 -12
  785. data/lib/tzinfo/countries/SL.rb +0 -12
  786. data/lib/tzinfo/countries/SM.rb +0 -12
  787. data/lib/tzinfo/countries/SN.rb +0 -12
  788. data/lib/tzinfo/countries/SO.rb +0 -12
  789. data/lib/tzinfo/countries/SR.rb +0 -12
  790. data/lib/tzinfo/countries/ST.rb +0 -12
  791. data/lib/tzinfo/countries/SV.rb +0 -12
  792. data/lib/tzinfo/countries/SY.rb +0 -12
  793. data/lib/tzinfo/countries/SZ.rb +0 -12
  794. data/lib/tzinfo/countries/TC.rb +0 -12
  795. data/lib/tzinfo/countries/TD.rb +0 -12
  796. data/lib/tzinfo/countries/TF.rb +0 -12
  797. data/lib/tzinfo/countries/TG.rb +0 -12
  798. data/lib/tzinfo/countries/TH.rb +0 -12
  799. data/lib/tzinfo/countries/TJ.rb +0 -12
  800. data/lib/tzinfo/countries/TK.rb +0 -12
  801. data/lib/tzinfo/countries/TL.rb +0 -12
  802. data/lib/tzinfo/countries/TM.rb +0 -12
  803. data/lib/tzinfo/countries/TN.rb +0 -12
  804. data/lib/tzinfo/countries/TO.rb +0 -12
  805. data/lib/tzinfo/countries/TR.rb +0 -12
  806. data/lib/tzinfo/countries/TT.rb +0 -12
  807. data/lib/tzinfo/countries/TV.rb +0 -12
  808. data/lib/tzinfo/countries/TW.rb +0 -12
  809. data/lib/tzinfo/countries/TZ.rb +0 -12
  810. data/lib/tzinfo/countries/UA.rb +0 -15
  811. data/lib/tzinfo/countries/UG.rb +0 -12
  812. data/lib/tzinfo/countries/UM.rb +0 -14
  813. data/lib/tzinfo/countries/US.rb +0 -36
  814. data/lib/tzinfo/countries/UY.rb +0 -12
  815. data/lib/tzinfo/countries/UZ.rb +0 -13
  816. data/lib/tzinfo/countries/VA.rb +0 -12
  817. data/lib/tzinfo/countries/VC.rb +0 -12
  818. data/lib/tzinfo/countries/VE.rb +0 -12
  819. data/lib/tzinfo/countries/VG.rb +0 -12
  820. data/lib/tzinfo/countries/VI.rb +0 -12
  821. data/lib/tzinfo/countries/VN.rb +0 -12
  822. data/lib/tzinfo/countries/VU.rb +0 -12
  823. data/lib/tzinfo/countries/WF.rb +0 -12
  824. data/lib/tzinfo/countries/WS.rb +0 -12
  825. data/lib/tzinfo/countries/YE.rb +0 -12
  826. data/lib/tzinfo/countries/YT.rb +0 -12
  827. data/lib/tzinfo/countries/ZA.rb +0 -12
  828. data/lib/tzinfo/countries/ZM.rb +0 -12
  829. data/lib/tzinfo/countries/ZW.rb +0 -12
  830. data/lib/tzinfo/timezone_period_list.rb +0 -234
  831. data/test/tc_timezone_period_list.rb +0 -310
@@ -0,0 +1,56 @@
1
+ #--
2
+ # Copyright (c) 2006 Philip Ross
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+ #++
22
+
23
+ require 'tzinfo/data_timezone_info'
24
+ require 'tzinfo/linked_timezone_info'
25
+
26
+ module TZInfo
27
+
28
+ # TimezoneDefinition is included into Timezone definition modules.
29
+ # TimezoneDefinition provides the methods for defining timezones.
30
+ module TimezoneDefinition #:nodoc:
31
+ # Add class methods to the includee.
32
+ def self.append_features(base)
33
+ super
34
+ base.extend(ClassMethods)
35
+ end
36
+
37
+ # Class methods for inclusion.
38
+ module ClassMethods #:nodoc:
39
+ # Returns and yields a DataTimezoneInfo object to define a timezone.
40
+ def timezone(identifier)
41
+ yield @timezone = DataTimezoneInfo.new(identifier)
42
+ end
43
+
44
+ # Defines a linked timezone.
45
+ def linked_timezone(identifier, link_to_identifier)
46
+ @timezone = LinkedTimezoneInfo.new(identifier, link_to_identifier)
47
+ end
48
+
49
+ # Returns the last TimezoneInfo to be defined with timezone or
50
+ # linked_timezone.
51
+ def get
52
+ @timezone
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,72 @@
1
+ #--
2
+ # Copyright (c) 2006 Philip Ross
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+ #++
22
+
23
+ module TZInfo
24
+ # The timezone index file includes TimezoneIndexDefinition which provides
25
+ # methods used to define timezones in the index.
26
+ module TimezoneIndexDefinition #:nodoc:
27
+ def self.append_features(base)
28
+ super
29
+ base.extend(ClassMethods)
30
+ end
31
+
32
+ module ClassMethods #:nodoc:
33
+ # Defines a timezone based on data.
34
+ def timezone(identifier)
35
+ @timezones = [] unless @timezones
36
+ @data_timezones = [] unless @data_timezones
37
+ @timezones << identifier
38
+ @data_timezones << identifier
39
+ end
40
+
41
+ # Defines a timezone which is a link to another timezone.
42
+ def linked_timezone(identifier)
43
+ @timezones = [] unless @timezones
44
+ @linked_timezones = [] unless @linked_timezones
45
+ @timezones << identifier
46
+ @linked_timezones << identifier
47
+ end
48
+
49
+ # Returns a frozen array containing the identifiers of all the timezones.
50
+ # Identifiers appear in the order they were defined in the index.
51
+ def timezones
52
+ @timezones = [] unless @timezones
53
+ @timezones.freeze
54
+ end
55
+
56
+ # Returns a frozen array containing the identifiers of all data timezones.
57
+ # Identifiers appear in the order they were defined in the index.
58
+ def data_timezones
59
+ @data_timezones = [] unless @data_timezones
60
+ @data_timezones.freeze
61
+ end
62
+
63
+ # Returns a frozen array containing the identifiers of all linked
64
+ # timezones. Identifiers appear in the order they were defined in
65
+ # the index.
66
+ def linked_timezones
67
+ @linked_timezones = [] unless @linked_timezones
68
+ @linked_timezones.freeze
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,40 @@
1
+ #--
2
+ # Copyright (c) 2006 Philip Ross
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+ #++
22
+
23
+ module TZInfo
24
+ # Represents a timezone defined in a data module.
25
+ class TimezoneInfo #:nodoc:
26
+
27
+ # The timezone identifier.
28
+ attr_reader :identifier
29
+
30
+ # Constructs a new TimezoneInfo with an identifier.
31
+ def initialize(identifier)
32
+ @identifier = identifier
33
+ end
34
+
35
+ # Returns internal object state as a programmer-readable string.
36
+ def inspect
37
+ "#<#{self.class}: #@identifier>"
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,94 @@
1
+ #--
2
+ # Copyright (c) 2006 Philip Ross
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+ #++
22
+
23
+ module TZInfo
24
+ # Represents an offset defined in a Timezone data file.
25
+ class TimezoneOffsetInfo #:nodoc:
26
+ # The base offset of the timezone from UTC in seconds.
27
+ attr_reader :utc_offset
28
+
29
+ # The offset from standard time for the zone in seconds (i.e. non-zero if
30
+ # daylight savings is being observed).
31
+ attr_reader :std_offset
32
+
33
+ # The total offset of this observance from UTC in seconds
34
+ # (utc_offset + std_offset).
35
+ attr_reader :utc_total_offset
36
+
37
+ # The abbreviation that identifies this observance, e.g. "GMT"
38
+ # (Greenwich Mean Time) or "BST" (British Summer Time) for "Europe/London". The returned identifier is a
39
+ # symbol.
40
+ attr_reader :abbreviation
41
+
42
+ # Constructs a new TimezoneOffsetInfo. utc_offset and std_offset are
43
+ # specified in seconds.
44
+ def initialize(utc_offset, std_offset, abbreviation)
45
+ @utc_offset = utc_offset
46
+ @std_offset = std_offset
47
+ @abbreviation = abbreviation
48
+
49
+ @utc_total_offset = @utc_offset + @std_offset
50
+ end
51
+
52
+ # True if std_offset is non-zero.
53
+ def dst?
54
+ @std_offset != 0
55
+ end
56
+
57
+ # Converts a UTC DateTime to local time based on the offset of this period.
58
+ def to_local(utc)
59
+ TimeOrDateTime.wrap(utc) {|utc|
60
+ utc + @utc_total_offset
61
+ }
62
+ end
63
+
64
+ # Converts a local DateTime to UTC based on the offset of this period.
65
+ def to_utc(local)
66
+ TimeOrDateTime.wrap(local) {|local|
67
+ local - @utc_total_offset
68
+ }
69
+ end
70
+
71
+ # Returns true if and only if toi has the same utc_offset, std_offset
72
+ # and abbreviation as this TimezoneOffsetInfo.
73
+ def ==(toi)
74
+ toi.respond_to?(:utc_offset) && toi.respond_to?(:std_offset) && toi.respond_to?(:abbreviation) &&
75
+ utc_offset == toi.utc_offset && std_offset == toi.std_offset && abbreviation == toi.abbreviation
76
+ end
77
+
78
+ # Returns true if and only if toi has the same utc_offset, std_offset
79
+ # and abbreviation as this TimezoneOffsetInfo.
80
+ def eql?(toi)
81
+ self == toi
82
+ end
83
+
84
+ # Returns a hash of this TimezoneOffsetInfo.
85
+ def hash
86
+ utc_offset.hash ^ std_offset.hash ^ abbreviation.hash
87
+ end
88
+
89
+ # Returns internal object state as a programmer-readable string.
90
+ def inspect
91
+ "#<#{self.class}: #@utc_offset,#@std_offset,#@abbreviation>"
92
+ end
93
+ end
94
+ end
@@ -20,6 +20,8 @@
20
20
  # THE SOFTWARE.
21
21
  #++
22
22
 
23
+ # TODO: Turn this into the real TimezonePeriod.
24
+
23
25
  require 'tzinfo/offset_rationals'
24
26
  require 'tzinfo/time_or_datetime'
25
27
 
@@ -29,86 +31,113 @@ module TZInfo
29
31
  # All the methods that take times accept instances of Time, DateTime or
30
32
  # integer timestamps.
31
33
  class TimezonePeriod
32
-
34
+ # The TimezoneTransitionInfo that defines the start of this TimezonePeriod
35
+ # (may be nil if unbounded).
36
+ attr_reader :start_transition
37
+
38
+ # The TimezoneTransitionInfo that defines the end of this TimezonePeriod
39
+ # (may be nil if unbounded).
40
+ attr_reader :end_transition
41
+
42
+ # The TimezoneOffsetInfo for this period.
43
+ attr_reader :offset
44
+
45
+ # Initializes a new TimezonePeriod.
46
+ def initialize(start_transition, end_transition, offset = nil)
47
+ @start_transition = start_transition
48
+ @end_transition = end_transition
49
+
50
+ if offset
51
+ raise ArgumentError, 'Offset specified with transitions' if @start_transition || @end_transition
52
+ @offset = offset
53
+ else
54
+ if @start_transition
55
+ @offset = @start_transition.offset
56
+ elsif @end_transition
57
+ @offset = @end_transition.previous_offset
58
+ else
59
+ raise ArgumentError, 'No offset specified and no transitions to determine it from'
60
+ end
61
+ end
62
+
63
+ @utc_total_offset_rational = nil
64
+ end
65
+
33
66
  # Base offset of the timezone from UTC (seconds).
34
- attr_reader :utc_offset
67
+ def utc_offset
68
+ @offset.utc_offset
69
+ end
35
70
 
36
71
  # Offset from the local time where daylight savings is in effect (seconds).
37
72
  # E.g.: utc_offset could be -5 hours. Normally, std_offset would be 0.
38
- # During daylight savings, std_offset would become +1 hours.
39
- attr_reader :std_offset
73
+ # During daylight savings, std_offset would typically become +1 hours.
74
+ def std_offset
75
+ @offset.std_offset
76
+ end
40
77
 
41
78
  # The identifier of this period, e.g. "GMT" (Greenwich Mean Time) or "BST"
42
79
  # (British Summer Time) for "Europe/London". The returned identifier is a
43
80
  # symbol.
44
- attr_reader :zone_identifier
45
- alias :abbreviation :zone_identifier
81
+ def abbreviation
82
+ @offset.abbreviation
83
+ end
84
+ alias :zone_identifier :abbreviation
46
85
 
47
86
  # Total offset from UTC (seconds). Equal to utc_offset + std_offset.
48
- attr_reader :utc_total_offset
49
-
50
- # Initializes a new TimezonePeriod.
51
- def initialize(utc_start, utc_end, utc_offset, std_offset, zone_identifier)
52
- @utc_start = utc_start.nil? ? nil : TimeOrDateTime.wrap(utc_start)
53
- @utc_end = utc_end.nil? ? nil : TimeOrDateTime.wrap(utc_end)
54
- @utc_offset = utc_offset
55
- @std_offset = std_offset
56
- @zone_identifier = zone_identifier
57
- @utc_total_offset = utc_offset + std_offset
58
- @utc_total_offset_rational = nil
59
-
60
- # Use add_with_convert to use DateTime based TimeOrDateTimes if we run
61
- # off the range of Time.
62
- @local_start = @utc_start.nil? ? nil : @utc_start.add_with_convert(@utc_total_offset)
63
- @local_end = @utc_end.nil? ? nil : @utc_end.add_with_convert(@utc_total_offset)
87
+ def utc_total_offset
88
+ @offset.utc_total_offset
64
89
  end
65
-
90
+
66
91
  # Total offset from UTC (days). Result is a Rational.
67
92
  def utc_total_offset_rational
68
- if @utc_total_offset_rational.nil?
69
- @utc_total_offset_rational = OffsetRationals.rational_for_offset(@utc_total_offset)
93
+ unless @utc_total_offset_rational
94
+ @utc_total_offset_rational = OffsetRationals.rational_for_offset(utc_total_offset)
70
95
  end
71
96
  @utc_total_offset_rational
72
97
  end
73
98
 
74
- # Start time of the period (UTC). May be nil if unbounded.
99
+ # The start time of the period in UTC as a DateTime. May be nil if unbounded.
75
100
  def utc_start
76
- @utc_start.nil? ? nil : @utc_start.to_datetime
101
+ @start_transition ? @start_transition.at.to_datetime : nil
77
102
  end
78
103
 
79
- # End time of the period (UTC). May be nil if unbounded.
104
+ # The end time of the period in UTC as a DateTime. May be nil if unbounded.
80
105
  def utc_end
81
- @utc_end.nil? ? nil : @utc_end.to_datetime
106
+ @end_transition ? @end_transition.at.to_datetime : nil
82
107
  end
83
108
 
84
- # Start time of the period (local time). May be nil if unbounded.
109
+ # The start time of the period in local time as a DateTime. May be nil if
110
+ # unbounded.
85
111
  def local_start
86
- @local_start.nil? ? nil : @local_start.to_datetime
112
+ @start_transition ? @start_transition.local_start.to_datetime : nil
87
113
  end
88
114
 
89
- # End time of the period (local time). May be nil if unbounded.
115
+ # The end time of the period in local time as a DateTime. May be nil if
116
+ # unbounded.
90
117
  def local_end
91
- @local_end.nil? ? nil : @local_end.to_datetime
118
+ @end_transition ? @end_transition.local_end.to_datetime : nil
92
119
  end
93
120
 
94
121
  # true if daylight savings is in effect for this period; otherwise false.
95
122
  def dst?
96
- std_offset != 0
123
+ @offset.dst?
97
124
  end
98
125
 
99
- # true if this period is valid for the given utc DateTime; otherwise false.
126
+ # true if this period is valid for the given UTC DateTime; otherwise false.
100
127
  def valid_for_utc?(utc)
101
128
  utc_after_start?(utc) && utc_before_end?(utc)
102
129
  end
103
130
 
104
- # true if the given utc DateTime is after the start of the period (inclusive); otherwise false.
105
- def utc_after_start?(utc)
106
- @utc_start.nil? || @utc_start <= utc
131
+ # true if the given UTC DateTime is after the start of the period
132
+ # (inclusive); otherwise false.
133
+ def utc_after_start?(utc)
134
+ !@start_transition || @start_transition.at <= utc
107
135
  end
108
136
 
109
- # true if the given utc DateTime is before the end of the period (exclusive); otherwise false.
110
- def utc_before_end?(utc)
111
- @utc_end.nil? || @utc_end > utc
137
+ # true if the given UTC DateTime is before the end of the period
138
+ # (exclusive); otherwise false.
139
+ def utc_before_end?(utc)
140
+ !@end_transition || @end_transition.at > utc
112
141
  end
113
142
 
114
143
  # true if this period is valid for the given local DateTime; otherwise false.
@@ -116,28 +145,56 @@ module TZInfo
116
145
  local_after_start?(local) && local_before_end?(local)
117
146
  end
118
147
 
119
- # true if the given local DateTime is after the start of the period (inclusive); otherwise false.
120
- def local_after_start?(local)
121
- @local_start.nil? || @local_start <= local
148
+ # true if the given local DateTime is after the start of the period
149
+ # (inclusive); otherwise false.
150
+ def local_after_start?(local)
151
+ !@start_transition || @start_transition.local_start <= local
122
152
  end
123
153
 
124
- # true if the given local DateTime is before the end of the period (exclusive); otherwise false.
125
- def local_before_end?(local)
126
- @local_end.nil? || @local_end > local
154
+ # true if the given local DateTime is before the end of the period
155
+ # (exclusive); otherwise false.
156
+ def local_before_end?(local)
157
+ !@end_transition || @end_transition.local_end > local
127
158
  end
128
159
 
129
160
  # Converts a UTC DateTime to local time based on the offset of this period.
130
161
  def to_local(utc)
131
- TimeOrDateTime.wrap(utc) {|utc|
132
- utc + utc_total_offset
133
- }
162
+ @offset.to_local(utc)
134
163
  end
135
164
 
136
165
  # Converts a local DateTime to UTC based on the offset of this period.
137
166
  def to_utc(local)
138
- TimeOrDateTime.wrap(local) {|local|
139
- local - utc_total_offset
140
- }
167
+ @offset.to_utc(local)
168
+ end
169
+
170
+ # Returns true if this TimezonePeriod is equal to p. This compares the
171
+ # start_transition, end_transition and offset using ==.
172
+ def ==(p)
173
+ p.respond_to?(:start_transition) && p.respond_to?(:end_transition) &&
174
+ p.respond_to?(:offset) && start_transition == p.start_transition &&
175
+ end_transition == p.end_transition && offset == p.offset
176
+ end
177
+
178
+ # Returns true if this TimezonePeriods is equal to p. This compares the
179
+ # start_transition, end_transition and offset using eql?
180
+ def eql?(p)
181
+ p.respond_to?(:start_transition) && p.respond_to?(:end_transition) &&
182
+ p.respond_to?(:offset) && start_transition.eql?(p.start_transition) &&
183
+ end_transition.eql?(p.end_transition) && offset.eql?(p.offset)
184
+ end
185
+
186
+ # Returns a hash of this TimezonePeriod.
187
+ def hash
188
+ result = @start_transition.hash ^ @end_transition.hash
189
+ result ^= @offset.hash unless @start_transition || @end_transition
190
+ result
191
+ end
192
+
193
+ # Returns internal object state as a programmer-readable string.
194
+ def inspect
195
+ result = "#<#{self.class}: #{@start_transition.inspect},#{@end_transition.inspect}"
196
+ result << ",#{@offset.inspect}>" unless @start_transition || @end_transition
197
+ result + '>'
141
198
  end
142
199
  end
143
200
  end