tzinfo 1.2.6 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +1 -1
  4. data/.yardopts +3 -0
  5. data/CHANGES.md +494 -380
  6. data/LICENSE +13 -13
  7. data/README.md +368 -114
  8. data/lib/tzinfo.rb +59 -29
  9. data/lib/tzinfo/country.rb +141 -129
  10. data/lib/tzinfo/country_timezone.rb +70 -112
  11. data/lib/tzinfo/data_source.rb +389 -144
  12. data/lib/tzinfo/data_sources.rb +8 -0
  13. data/lib/tzinfo/data_sources/constant_offset_data_timezone_info.rb +56 -0
  14. data/lib/tzinfo/data_sources/country_info.rb +42 -0
  15. data/lib/tzinfo/data_sources/data_timezone_info.rb +91 -0
  16. data/lib/tzinfo/data_sources/linked_timezone_info.rb +33 -0
  17. data/lib/tzinfo/data_sources/ruby_data_source.rb +145 -0
  18. data/lib/tzinfo/data_sources/timezone_info.rb +47 -0
  19. data/lib/tzinfo/data_sources/transitions_data_timezone_info.rb +214 -0
  20. data/lib/tzinfo/data_sources/zoneinfo_data_source.rb +577 -0
  21. data/lib/tzinfo/data_sources/zoneinfo_reader.rb +288 -0
  22. data/lib/tzinfo/data_timezone.rb +33 -47
  23. data/lib/tzinfo/datetime_with_offset.rb +153 -0
  24. data/lib/tzinfo/format1.rb +10 -0
  25. data/lib/tzinfo/format1/country_definer.rb +17 -0
  26. data/lib/tzinfo/format1/country_index_definition.rb +64 -0
  27. data/lib/tzinfo/format1/timezone_definer.rb +64 -0
  28. data/lib/tzinfo/format1/timezone_definition.rb +39 -0
  29. data/lib/tzinfo/format1/timezone_index_definition.rb +77 -0
  30. data/lib/tzinfo/format2.rb +10 -0
  31. data/lib/tzinfo/format2/country_definer.rb +68 -0
  32. data/lib/tzinfo/format2/country_index_definer.rb +68 -0
  33. data/lib/tzinfo/format2/country_index_definition.rb +46 -0
  34. data/lib/tzinfo/format2/timezone_definer.rb +94 -0
  35. data/lib/tzinfo/format2/timezone_definition.rb +73 -0
  36. data/lib/tzinfo/format2/timezone_index_definer.rb +45 -0
  37. data/lib/tzinfo/format2/timezone_index_definition.rb +55 -0
  38. data/lib/tzinfo/info_timezone.rb +26 -21
  39. data/lib/tzinfo/linked_timezone.rb +33 -52
  40. data/lib/tzinfo/offset_timezone_period.rb +42 -0
  41. data/lib/tzinfo/string_deduper.rb +118 -0
  42. data/lib/tzinfo/time_with_offset.rb +128 -0
  43. data/lib/tzinfo/timestamp.rb +548 -0
  44. data/lib/tzinfo/timestamp_with_offset.rb +85 -0
  45. data/lib/tzinfo/timezone.rb +989 -502
  46. data/lib/tzinfo/timezone_offset.rb +84 -74
  47. data/lib/tzinfo/timezone_period.rb +151 -217
  48. data/lib/tzinfo/timezone_proxy.rb +70 -79
  49. data/lib/tzinfo/timezone_transition.rb +77 -109
  50. data/lib/tzinfo/transitions_timezone_period.rb +63 -0
  51. data/lib/tzinfo/untaint_ext.rb +18 -0
  52. data/lib/tzinfo/version.rb +7 -0
  53. data/lib/tzinfo/with_offset.rb +61 -0
  54. metadata +44 -100
  55. metadata.gz.sig +0 -0
  56. data/Rakefile +0 -107
  57. data/lib/tzinfo/country_index_definition.rb +0 -31
  58. data/lib/tzinfo/country_info.rb +0 -42
  59. data/lib/tzinfo/data_timezone_info.rb +0 -55
  60. data/lib/tzinfo/linked_timezone_info.rb +0 -26
  61. data/lib/tzinfo/offset_rationals.rb +0 -77
  62. data/lib/tzinfo/ruby_core_support.rb +0 -176
  63. data/lib/tzinfo/ruby_country_info.rb +0 -74
  64. data/lib/tzinfo/ruby_data_source.rb +0 -138
  65. data/lib/tzinfo/time_or_datetime.rb +0 -340
  66. data/lib/tzinfo/timezone_definition.rb +0 -36
  67. data/lib/tzinfo/timezone_index_definition.rb +0 -54
  68. data/lib/tzinfo/timezone_info.rb +0 -30
  69. data/lib/tzinfo/timezone_transition_definition.rb +0 -104
  70. data/lib/tzinfo/transition_data_timezone_info.rb +0 -274
  71. data/lib/tzinfo/zoneinfo_country_info.rb +0 -37
  72. data/lib/tzinfo/zoneinfo_data_source.rb +0 -496
  73. data/lib/tzinfo/zoneinfo_timezone_info.rb +0 -298
  74. data/test/tc_country.rb +0 -236
  75. data/test/tc_country_index_definition.rb +0 -69
  76. data/test/tc_country_info.rb +0 -16
  77. data/test/tc_country_timezone.rb +0 -173
  78. data/test/tc_data_source.rb +0 -218
  79. data/test/tc_data_timezone.rb +0 -99
  80. data/test/tc_data_timezone_info.rb +0 -18
  81. data/test/tc_info_timezone.rb +0 -34
  82. data/test/tc_linked_timezone.rb +0 -155
  83. data/test/tc_linked_timezone_info.rb +0 -23
  84. data/test/tc_offset_rationals.rb +0 -23
  85. data/test/tc_ruby_core_support.rb +0 -168
  86. data/test/tc_ruby_country_info.rb +0 -110
  87. data/test/tc_ruby_data_source.rb +0 -165
  88. data/test/tc_time_or_datetime.rb +0 -660
  89. data/test/tc_timezone.rb +0 -1359
  90. data/test/tc_timezone_definition.rb +0 -113
  91. data/test/tc_timezone_index_definition.rb +0 -73
  92. data/test/tc_timezone_info.rb +0 -11
  93. data/test/tc_timezone_london.rb +0 -143
  94. data/test/tc_timezone_melbourne.rb +0 -142
  95. data/test/tc_timezone_new_york.rb +0 -142
  96. data/test/tc_timezone_offset.rb +0 -126
  97. data/test/tc_timezone_period.rb +0 -555
  98. data/test/tc_timezone_proxy.rb +0 -136
  99. data/test/tc_timezone_transition.rb +0 -366
  100. data/test/tc_timezone_transition_definition.rb +0 -295
  101. data/test/tc_timezone_utc.rb +0 -27
  102. data/test/tc_transition_data_timezone_info.rb +0 -433
  103. data/test/tc_zoneinfo_country_info.rb +0 -78
  104. data/test/tc_zoneinfo_data_source.rb +0 -1204
  105. data/test/tc_zoneinfo_timezone_info.rb +0 -1234
  106. data/test/test_utils.rb +0 -188
  107. data/test/ts_all.rb +0 -7
  108. data/test/ts_all_ruby.rb +0 -5
  109. data/test/ts_all_zoneinfo.rb +0 -9
  110. data/test/tzinfo-data/tzinfo/data.rb +0 -8
  111. data/test/tzinfo-data/tzinfo/data/definitions/America/Argentina/Buenos_Aires.rb +0 -89
  112. data/test/tzinfo-data/tzinfo/data/definitions/America/New_York.rb +0 -315
  113. data/test/tzinfo-data/tzinfo/data/definitions/Australia/Melbourne.rb +0 -218
  114. data/test/tzinfo-data/tzinfo/data/definitions/EST.rb +0 -19
  115. data/test/tzinfo-data/tzinfo/data/definitions/Etc/GMT__m__1.rb +0 -21
  116. data/test/tzinfo-data/tzinfo/data/definitions/Etc/GMT__p__1.rb +0 -21
  117. data/test/tzinfo-data/tzinfo/data/definitions/Etc/UTC.rb +0 -21
  118. data/test/tzinfo-data/tzinfo/data/definitions/Europe/Amsterdam.rb +0 -261
  119. data/test/tzinfo-data/tzinfo/data/definitions/Europe/Andorra.rb +0 -186
  120. data/test/tzinfo-data/tzinfo/data/definitions/Europe/London.rb +0 -321
  121. data/test/tzinfo-data/tzinfo/data/definitions/Europe/Paris.rb +0 -265
  122. data/test/tzinfo-data/tzinfo/data/definitions/Europe/Prague.rb +0 -220
  123. data/test/tzinfo-data/tzinfo/data/definitions/UTC.rb +0 -16
  124. data/test/tzinfo-data/tzinfo/data/indexes/countries.rb +0 -927
  125. data/test/tzinfo-data/tzinfo/data/indexes/timezones.rb +0 -596
  126. data/test/tzinfo-data/tzinfo/data/version.rb +0 -14
  127. data/test/zoneinfo/America/Argentina/Buenos_Aires +0 -0
  128. data/test/zoneinfo/America/New_York +0 -0
  129. data/test/zoneinfo/Australia/Melbourne +0 -0
  130. data/test/zoneinfo/EST +0 -0
  131. data/test/zoneinfo/Etc/UTC +0 -0
  132. data/test/zoneinfo/Europe/Amsterdam +0 -0
  133. data/test/zoneinfo/Europe/Andorra +0 -0
  134. data/test/zoneinfo/Europe/London +0 -0
  135. data/test/zoneinfo/Europe/Paris +0 -0
  136. data/test/zoneinfo/Europe/Prague +0 -0
  137. data/test/zoneinfo/Factory +0 -0
  138. data/test/zoneinfo/iso3166.tab +0 -275
  139. data/test/zoneinfo/leapseconds +0 -61
  140. data/test/zoneinfo/posix/Europe/London +0 -0
  141. data/test/zoneinfo/posixrules +0 -0
  142. data/test/zoneinfo/right/Europe/London +0 -0
  143. data/test/zoneinfo/zone.tab +0 -439
  144. data/test/zoneinfo/zone1970.tab +0 -369
  145. data/tzinfo.gemspec +0 -21
@@ -1,340 +0,0 @@
1
- require 'date'
2
- require 'rational' unless defined?(Rational)
3
- require 'time'
4
-
5
- module TZInfo
6
- # Used by TZInfo internally to represent either a Time, DateTime or
7
- # an Integer timestamp (seconds since 1970-01-01 00:00:00).
8
- class TimeOrDateTime
9
- include Comparable
10
-
11
- # Constructs a new TimeOrDateTime. timeOrDateTime can be a Time, DateTime
12
- # or Integer. If using a Time or DateTime, any time zone information
13
- # is ignored.
14
- #
15
- # Integer timestamps must be within the range supported by Time on the
16
- # platform being used.
17
- def initialize(timeOrDateTime)
18
- @time = nil
19
- @datetime = nil
20
- @timestamp = nil
21
-
22
- if timeOrDateTime.is_a?(Time)
23
- @time = timeOrDateTime
24
-
25
- # Avoid using the slower Rational class unless necessary.
26
- nsec = RubyCoreSupport.time_nsec(@time)
27
- usec = nsec % 1000 == 0 ? nsec / 1000 : Rational(nsec, 1000)
28
-
29
- @time = Time.utc(@time.year, @time.mon, @time.mday, @time.hour, @time.min, @time.sec, usec) unless @time.utc?
30
- @orig = @time
31
- elsif timeOrDateTime.is_a?(DateTime)
32
- @datetime = timeOrDateTime
33
- @datetime = @datetime.new_offset(0) unless @datetime.offset == 0
34
- @orig = @datetime
35
- else
36
- @timestamp = timeOrDateTime.to_i
37
-
38
- if !RubyCoreSupport.time_supports_64bit && (@timestamp > 2147483647 || @timestamp < -2147483648 || (@timestamp < 0 && !RubyCoreSupport.time_supports_negative))
39
- raise RangeError, 'Timestamp is outside the supported range of Time on this platform'
40
- end
41
-
42
- @orig = @timestamp
43
- end
44
- end
45
-
46
- # Returns the time as a Time.
47
- #
48
- # When converting from a DateTime, the result is truncated to microsecond
49
- # precision.
50
- def to_time
51
- # Thread-safety: It is possible that the value of @time may be
52
- # calculated multiple times in concurrently executing threads. It is not
53
- # worth the overhead of locking to ensure that @time is only
54
- # calculated once.
55
-
56
- unless @time
57
- result = if @timestamp
58
- Time.at(@timestamp).utc
59
- else
60
- Time.utc(year, mon, mday, hour, min, sec, usec)
61
- end
62
-
63
- return result if frozen?
64
- @time = result
65
- end
66
-
67
- @time
68
- end
69
-
70
- # Returns the time as a DateTime.
71
- #
72
- # When converting from a Time, the result is truncated to microsecond
73
- # precision.
74
- def to_datetime
75
- # Thread-safety: It is possible that the value of @datetime may be
76
- # calculated multiple times in concurrently executing threads. It is not
77
- # worth the overhead of locking to ensure that @datetime is only
78
- # calculated once.
79
-
80
- unless @datetime
81
- # Avoid using Rational unless necessary.
82
- u = usec
83
- s = u == 0 ? sec : Rational(sec * 1000000 + u, 1000000)
84
- result = RubyCoreSupport.datetime_new(year, mon, mday, hour, min, s)
85
- return result if frozen?
86
- @datetime = result
87
- end
88
-
89
- @datetime
90
- end
91
-
92
- # Returns the time as an integer timestamp.
93
- def to_i
94
- # Thread-safety: It is possible that the value of @timestamp may be
95
- # calculated multiple times in concurrently executing threads. It is not
96
- # worth the overhead of locking to ensure that @timestamp is only
97
- # calculated once.
98
-
99
- unless @timestamp
100
- result = to_time.to_i
101
- return result if frozen?
102
- @timestamp = result
103
- end
104
-
105
- @timestamp
106
- end
107
-
108
- # Returns the time as the original time passed to new.
109
- def to_orig
110
- @orig
111
- end
112
-
113
- # Returns a string representation of the TimeOrDateTime.
114
- def to_s
115
- if @orig.is_a?(Time)
116
- "Time: #{@orig.to_s}"
117
- elsif @orig.is_a?(DateTime)
118
- "DateTime: #{@orig.to_s}"
119
- else
120
- "Timestamp: #{@orig.to_s}"
121
- end
122
- end
123
-
124
- # Returns internal object state as a programmer-readable string.
125
- def inspect
126
- "#<#{self.class}: #{@orig.inspect}>"
127
- end
128
-
129
- # Returns the year.
130
- def year
131
- if @time
132
- @time.year
133
- elsif @datetime
134
- @datetime.year
135
- else
136
- to_time.year
137
- end
138
- end
139
-
140
- # Returns the month of the year (1..12).
141
- def mon
142
- if @time
143
- @time.mon
144
- elsif @datetime
145
- @datetime.mon
146
- else
147
- to_time.mon
148
- end
149
- end
150
- alias :month :mon
151
-
152
- # Returns the day of the month (1..n).
153
- def mday
154
- if @time
155
- @time.mday
156
- elsif @datetime
157
- @datetime.mday
158
- else
159
- to_time.mday
160
- end
161
- end
162
- alias :day :mday
163
-
164
- # Returns the hour of the day (0..23).
165
- def hour
166
- if @time
167
- @time.hour
168
- elsif @datetime
169
- @datetime.hour
170
- else
171
- to_time.hour
172
- end
173
- end
174
-
175
- # Returns the minute of the hour (0..59).
176
- def min
177
- if @time
178
- @time.min
179
- elsif @datetime
180
- @datetime.min
181
- else
182
- to_time.min
183
- end
184
- end
185
-
186
- # Returns the second of the minute (0..60). (60 for a leap second).
187
- def sec
188
- if @time
189
- @time.sec
190
- elsif @datetime
191
- @datetime.sec
192
- else
193
- to_time.sec
194
- end
195
- end
196
-
197
- # Returns the number of microseconds for the time.
198
- def usec
199
- if @time
200
- @time.usec
201
- elsif @datetime
202
- # Ruby 1.8 has sec_fraction (of which the documentation says
203
- # 'I do NOT recommend you to use this method'). sec_fraction no longer
204
- # exists in Ruby 1.9.
205
-
206
- # Calculate the sec_fraction from the day_fraction.
207
- ((@datetime.day_fraction - OffsetRationals.rational_for_offset(@datetime.hour * 3600 + @datetime.min * 60 + @datetime.sec)) * 86400000000).to_i
208
- else
209
- 0
210
- end
211
- end
212
-
213
- # Compares this TimeOrDateTime with another Time, DateTime, timestamp
214
- # (Integer) or TimeOrDateTime. Returns -1, 0 or +1 depending
215
- # whether the receiver is less than, equal to, or greater than
216
- # timeOrDateTime.
217
- #
218
- # Returns nil if the passed in timeOrDateTime is not comparable with
219
- # TimeOrDateTime instances.
220
- #
221
- # Comparisons involving a DateTime will be performed using DateTime#<=>.
222
- # Comparisons that don't involve a DateTime, but include a Time will be
223
- # performed with Time#<=>. Otherwise comparisons will be performed with
224
- # Integer#<=>.
225
- def <=>(timeOrDateTime)
226
- return nil unless timeOrDateTime.is_a?(TimeOrDateTime) ||
227
- timeOrDateTime.is_a?(Time) ||
228
- timeOrDateTime.is_a?(DateTime) ||
229
- timeOrDateTime.respond_to?(:to_i)
230
-
231
- unless timeOrDateTime.is_a?(TimeOrDateTime)
232
- timeOrDateTime = TimeOrDateTime.wrap(timeOrDateTime)
233
- end
234
-
235
- orig = timeOrDateTime.to_orig
236
-
237
- if @orig.is_a?(DateTime) || orig.is_a?(DateTime)
238
- # If either is a DateTime, assume it is there for a reason
239
- # (i.e. for its larger range of acceptable values on 32-bit systems).
240
- to_datetime <=> timeOrDateTime.to_datetime
241
- elsif @orig.is_a?(Time) || orig.is_a?(Time)
242
- to_time <=> timeOrDateTime.to_time
243
- else
244
- to_i <=> timeOrDateTime.to_i
245
- end
246
- end
247
-
248
- # Adds a number of seconds to the TimeOrDateTime. Returns a new
249
- # TimeOrDateTime, preserving what the original constructed type was.
250
- # If the original type is a Time and the resulting calculation goes out of
251
- # range for Times, then an exception will be raised by the Time class.
252
- def +(seconds)
253
- if seconds == 0
254
- self
255
- else
256
- if @orig.is_a?(DateTime)
257
- TimeOrDateTime.new(@orig + OffsetRationals.rational_for_offset(seconds))
258
- else
259
- # + defined for Time and Integer
260
- TimeOrDateTime.new(@orig + seconds)
261
- end
262
- end
263
- end
264
-
265
- # Subtracts a number of seconds from the TimeOrDateTime. Returns a new
266
- # TimeOrDateTime, preserving what the original constructed type was.
267
- # If the original type is a Time and the resulting calculation goes out of
268
- # range for Times, then an exception will be raised by the Time class.
269
- def -(seconds)
270
- self + (-seconds)
271
- end
272
-
273
- # Similar to the + operator, but converts to a DateTime based TimeOrDateTime
274
- # where the Time or Integer timestamp to go out of the allowed range for a
275
- # Time, converts to a DateTime based TimeOrDateTime.
276
- #
277
- # Note that the range of Time varies based on the platform.
278
- def add_with_convert(seconds)
279
- if seconds == 0
280
- self
281
- else
282
- if @orig.is_a?(DateTime)
283
- TimeOrDateTime.new(@orig + OffsetRationals.rational_for_offset(seconds))
284
- else
285
- # A Time or timestamp.
286
- result = to_i + seconds
287
-
288
- if ((result > 2147483647 || result < -2147483648) && !RubyCoreSupport.time_supports_64bit) || (result < 0 && !RubyCoreSupport.time_supports_negative)
289
- result = TimeOrDateTime.new(to_datetime + OffsetRationals.rational_for_offset(seconds))
290
- else
291
- result = TimeOrDateTime.new(@orig + seconds)
292
- end
293
- end
294
- end
295
- end
296
-
297
- # Returns true if todt represents the same time and was originally
298
- # constructed with the same type (DateTime, Time or timestamp) as this
299
- # TimeOrDateTime.
300
- def eql?(todt)
301
- todt.kind_of?(TimeOrDateTime) && to_orig.eql?(todt.to_orig)
302
- end
303
-
304
- # Returns a hash of this TimeOrDateTime.
305
- def hash
306
- @orig.hash
307
- end
308
-
309
- # If no block is given, returns a TimeOrDateTime wrapping the given
310
- # timeOrDateTime. If a block is specified, a TimeOrDateTime is constructed
311
- # and passed to the block. The result of the block must be a TimeOrDateTime.
312
- #
313
- # The result of the block will be converted to the type of the originally
314
- # passed in timeOrDateTime and then returned as the result of wrap.
315
- #
316
- # timeOrDateTime can be a Time, DateTime, timestamp (Integer) or
317
- # TimeOrDateTime. If a TimeOrDateTime is passed in, no new TimeOrDateTime
318
- # will be constructed and the value passed to wrap will be used when
319
- # calling the block.
320
- def self.wrap(timeOrDateTime)
321
- t = timeOrDateTime.is_a?(TimeOrDateTime) ? timeOrDateTime : TimeOrDateTime.new(timeOrDateTime)
322
-
323
- if block_given?
324
- t = yield t
325
-
326
- if timeOrDateTime.is_a?(TimeOrDateTime)
327
- t
328
- elsif timeOrDateTime.is_a?(Time)
329
- t.to_time
330
- elsif timeOrDateTime.is_a?(DateTime)
331
- t.to_datetime
332
- else
333
- t.to_i
334
- end
335
- else
336
- t
337
- end
338
- end
339
- end
340
- end
@@ -1,36 +0,0 @@
1
- module TZInfo
2
-
3
- # TimezoneDefinition is included into Timezone definition modules.
4
- # TimezoneDefinition provides the methods for defining timezones.
5
- #
6
- # @private
7
- module TimezoneDefinition #:nodoc:
8
- # Add class methods to the includee.
9
- def self.append_features(base)
10
- super
11
- base.extend(ClassMethods)
12
- end
13
-
14
- # Class methods for inclusion.
15
- #
16
- # @private
17
- module ClassMethods #:nodoc:
18
- # Returns and yields a TransitionDataTimezoneInfo object to define a
19
- # timezone.
20
- def timezone(identifier)
21
- yield @timezone = TransitionDataTimezoneInfo.new(identifier)
22
- end
23
-
24
- # Defines a linked timezone.
25
- def linked_timezone(identifier, link_to_identifier)
26
- @timezone = LinkedTimezoneInfo.new(identifier, link_to_identifier)
27
- end
28
-
29
- # Returns the last TimezoneInfo to be defined with timezone or
30
- # linked_timezone.
31
- def get
32
- @timezone
33
- end
34
- end
35
- end
36
- end
@@ -1,54 +0,0 @@
1
- module TZInfo
2
- # The timezone index file includes TimezoneIndexDefinition which provides
3
- # methods used to define timezones in the index.
4
- #
5
- # @private
6
- module TimezoneIndexDefinition #:nodoc:
7
- # Add class methods to the includee and initialize class instance variables.
8
- def self.append_features(base)
9
- super
10
- base.extend(ClassMethods)
11
- base.instance_eval do
12
- @timezones = []
13
- @data_timezones = []
14
- @linked_timezones = []
15
- end
16
- end
17
-
18
- # Class methods for inclusion.
19
- #
20
- # @private
21
- module ClassMethods #:nodoc:
22
- # Defines a timezone based on data.
23
- def timezone(identifier)
24
- @timezones << identifier
25
- @data_timezones << identifier
26
- end
27
-
28
- # Defines a timezone which is a link to another timezone.
29
- def linked_timezone(identifier)
30
- @timezones << identifier
31
- @linked_timezones << identifier
32
- end
33
-
34
- # Returns a frozen array containing the identifiers of all the timezones.
35
- # Identifiers appear in the order they were defined in the index.
36
- def timezones
37
- @timezones.freeze
38
- end
39
-
40
- # Returns a frozen array containing the identifiers of all data timezones.
41
- # Identifiers appear in the order they were defined in the index.
42
- def data_timezones
43
- @data_timezones.freeze
44
- end
45
-
46
- # Returns a frozen array containing the identifiers of all linked
47
- # timezones. Identifiers appear in the order they were defined in
48
- # the index.
49
- def linked_timezones
50
- @linked_timezones.freeze
51
- end
52
- end
53
- end
54
- end
@@ -1,30 +0,0 @@
1
- module TZInfo
2
- # Represents a timezone defined by a data source.
3
- class TimezoneInfo
4
-
5
- # The timezone identifier.
6
- attr_reader :identifier
7
-
8
- # Constructs a new TimezoneInfo with an identifier.
9
- def initialize(identifier)
10
- @identifier = identifier
11
- end
12
-
13
- # Returns internal object state as a programmer-readable string.
14
- def inspect
15
- "#<#{self.class}: #@identifier>"
16
- end
17
-
18
- # Constructs a Timezone instance for the timezone represented by this
19
- # TimezoneInfo.
20
- def create_timezone
21
- raise_not_implemented('create_timezone')
22
- end
23
-
24
- private
25
-
26
- def raise_not_implemented(method_name)
27
- raise NotImplementedError, "Subclasses must override #{method_name}"
28
- end
29
- end
30
- end