twitter_cldr 6.8.0 → 6.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/twitter_cldr/timezones/generic_location.rb +15 -15
- data/lib/twitter_cldr/timezones/gmt_location.rb +2 -2
- data/lib/twitter_cldr/timezones/iso8601_location.rb +2 -2
- data/lib/twitter_cldr/timezones/timezone.rb +11 -7
- data/lib/twitter_cldr/version.rb +1 -1
- data/spec/timezones/timezone_spec.rb +41 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8aceda15c987295a62672bd4f7a78546b34eed2a83eb9178b58bd5a5efa49be
|
4
|
+
data.tar.gz: b179d63e855785bdd871b12dda0f7c0ecd67b91106510972d89f74ab93b8ec5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92f18ec12c13f8ed66b23a9453c9b932e502738266957b326a62493ef1062878ae29932d16f4963658f0b30591528de8415293f1e1c90e394a3e2b4fba2b1244
|
7
|
+
data.tar.gz: b34f99bbb5e5e37d3c95d63ce56d47c097d2aac14730ed56d72fc2f5e3c5a0db26b1ff0d20ea599a200d4e75bb3c38cd22ecf5321ece0a606967f0f49290738d
|
@@ -21,18 +21,18 @@ module TwitterCldr
|
|
21
21
|
Territories = TwitterCldr::Shared::Territories
|
22
22
|
Utils = TwitterCldr::Utils
|
23
23
|
|
24
|
-
def display_name_for(date, fmt = :generic_location)
|
24
|
+
def display_name_for(date, fmt = :generic_location, dst = TZInfo::Timezone.default_dst, &block)
|
25
25
|
case fmt
|
26
26
|
when :generic_location
|
27
27
|
generic_location_display_name
|
28
28
|
when :generic_short
|
29
|
-
generic_short_display_name(date) || generic_location_display_name
|
29
|
+
generic_short_display_name(date, dst, &block) || generic_location_display_name
|
30
30
|
when :generic_long
|
31
|
-
generic_long_display_name(date) || generic_location_display_name
|
31
|
+
generic_long_display_name(date, dst, &block) || generic_location_display_name
|
32
32
|
when :specific_short
|
33
|
-
specific_short_display_name(date)
|
33
|
+
specific_short_display_name(date, dst, &block)
|
34
34
|
when :specific_long
|
35
|
-
specific_long_display_name(date)
|
35
|
+
specific_long_display_name(date, dst, &block)
|
36
36
|
when :exemplar_location
|
37
37
|
exemplar_city
|
38
38
|
else
|
@@ -58,20 +58,20 @@ module TwitterCldr
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
def generic_short_display_name(date)
|
62
|
-
format_display_name(date, :generic, :short)
|
61
|
+
def generic_short_display_name(date, dst = TZInfo::Timezone.default_dst, &block)
|
62
|
+
format_display_name(date, :generic, :short, dst, &block)
|
63
63
|
end
|
64
64
|
|
65
|
-
def generic_long_display_name(date)
|
66
|
-
format_display_name(date, :generic, :long)
|
65
|
+
def generic_long_display_name(date, dst = TZInfo::Timezone.default_dst, &block)
|
66
|
+
format_display_name(date, :generic, :long, dst, &block)
|
67
67
|
end
|
68
68
|
|
69
|
-
def specific_short_display_name(date)
|
70
|
-
format_display_name(date, :specific, :short)
|
69
|
+
def specific_short_display_name(date, dst = TZInfo::Timezone.default_dst, &block)
|
70
|
+
format_display_name(date, :specific, :short, dst, &block)
|
71
71
|
end
|
72
72
|
|
73
|
-
def specific_long_display_name(date)
|
74
|
-
format_display_name(date, :specific, :long)
|
73
|
+
def specific_long_display_name(date, dst = TZInfo::Timezone.default_dst, &block)
|
74
|
+
format_display_name(date, :specific, :long, dst, &block)
|
75
75
|
end
|
76
76
|
|
77
77
|
# From ICU source, TimeZoneGenericNames.java, formatGenericNonLocationName():
|
@@ -86,9 +86,9 @@ module TwitterCldr
|
|
86
86
|
# 4. If a generic non-location string is not available, use generic location
|
87
87
|
# string.
|
88
88
|
#
|
89
|
-
def format_display_name(date, type, fmt)
|
89
|
+
def format_display_name(date, type, fmt, dst = TZInfo::Timezone.default_dst, &block)
|
90
90
|
date_int = date.strftime('%s').to_i
|
91
|
-
period = tz.period_for_local(date)
|
91
|
+
period = tz.period_for_local(date, dst, &block)
|
92
92
|
|
93
93
|
flavor = if type == :generic
|
94
94
|
:generic
|
@@ -10,8 +10,8 @@ module TwitterCldr
|
|
10
10
|
DEFAULT_FORMAT = :long_gmt
|
11
11
|
DEFAULT_GMT_ZERO_FORMAT = 'GMT'.freeze
|
12
12
|
|
13
|
-
def display_name_for(date, format = DEFAULT_FORMAT)
|
14
|
-
offset = tz.period_for_local(date).offset
|
13
|
+
def display_name_for(date, format = DEFAULT_FORMAT, dst = TZInfo::Timezone.default_dst, &block)
|
14
|
+
offset = tz.period_for_local(date, dst, &block).offset
|
15
15
|
offset_secs = offset.utc_offset + offset.std_offset
|
16
16
|
return gmt_zero_format if offset_secs == 0
|
17
17
|
|
@@ -27,8 +27,8 @@ module TwitterCldr
|
|
27
27
|
:iso_extended_local_full
|
28
28
|
].freeze
|
29
29
|
|
30
|
-
def display_name_for(date, fmt)
|
31
|
-
offset = tz.period_for_local(date).offset
|
30
|
+
def display_name_for(date, fmt, dst = TZInfo::Timezone.default_dst, &block)
|
31
|
+
offset = tz.period_for_local(date, dst, &block).offset
|
32
32
|
offset_secs = offset.utc_offset + offset.std_offset
|
33
33
|
|
34
34
|
case fmt
|
@@ -47,17 +47,17 @@ module TwitterCldr
|
|
47
47
|
@locale = locale
|
48
48
|
end
|
49
49
|
|
50
|
-
def display_name_for(date, format = :generic_location)
|
50
|
+
def display_name_for(date, format = :generic_location, dst = TZInfo::Timezone.default_dst, &block)
|
51
51
|
case format
|
52
52
|
when *GenericLocation::FORMATS
|
53
|
-
generic_location.display_name_for(date, format) ||
|
54
|
-
gmt_location.display_name_for(date, GENERIC_TO_GMT_MAP[format])
|
53
|
+
generic_location.display_name_for(date, format, dst, &block) ||
|
54
|
+
gmt_location.display_name_for(date, GENERIC_TO_GMT_MAP[format], dst, &block)
|
55
55
|
|
56
56
|
when *GmtLocation::FORMATS
|
57
|
-
gmt_location.display_name_for(date, format)
|
57
|
+
gmt_location.display_name_for(date, format, dst, &block)
|
58
58
|
|
59
59
|
when *Iso8601Location::FORMATS
|
60
|
-
iso_location.display_name_for(date, format)
|
60
|
+
iso_location.display_name_for(date, format, dst, &block)
|
61
61
|
|
62
62
|
when :zone_id
|
63
63
|
identifier
|
@@ -75,8 +75,12 @@ module TwitterCldr
|
|
75
75
|
tz.identifier
|
76
76
|
end
|
77
77
|
|
78
|
-
def period_for_local(
|
79
|
-
tz.period_for_local(
|
78
|
+
def period_for_local(*args, &block)
|
79
|
+
tz.period_for_local(*args, &block)
|
80
|
+
end
|
81
|
+
|
82
|
+
def period_for_utc(time)
|
83
|
+
tz.period_for_utc(time)
|
80
84
|
end
|
81
85
|
|
82
86
|
def transitions_up_to(date)
|
data/lib/twitter_cldr/version.rb
CHANGED
@@ -266,4 +266,45 @@ describe 'Timezones' do
|
|
266
266
|
end
|
267
267
|
end
|
268
268
|
end
|
269
|
+
|
270
|
+
describe '#display_name_for' do
|
271
|
+
let(:tz) { TwitterCldr::Timezones::Timezone.instance('America/New_York', :en) }
|
272
|
+
|
273
|
+
it 'accepts a dst argument', :aggregate_failures do
|
274
|
+
zoned_date = Time.new(2021, 11, 7, 1, 1, 23, -4 * 3600)
|
275
|
+
dst_date = Time.new(2021, 11, 7, 1, 1, 23, 0)
|
276
|
+
non_dst_date = Time.new(2021, 11, 7, 12, 1, 23, 0)
|
277
|
+
|
278
|
+
expect(tz.display_name_for(zoned_date, :specific_long, true)).to eq 'Eastern Daylight Time'
|
279
|
+
expect(tz.display_name_for(dst_date, :specific_long, true)).to eq 'Eastern Daylight Time'
|
280
|
+
expect(tz.display_name_for(non_dst_date, :specific_long, false)).to eq 'Eastern Standard Time'
|
281
|
+
expect(tz.display_name_for(zoned_date, :iso_extended_local_full, true)).to eq '-04:00'
|
282
|
+
expect(tz.display_name_for(dst_date, :iso_extended_local_full, true)).to eq '-04:00'
|
283
|
+
expect(tz.display_name_for(non_dst_date, :iso_extended_local_full, false)).to eq '-05:00'
|
284
|
+
end
|
285
|
+
|
286
|
+
it 'accepts a block to handle ambiguous times' do
|
287
|
+
# Known ambiguous time
|
288
|
+
time = Time.new(2021, 11, 7, 1, 1, 23, 0)
|
289
|
+
|
290
|
+
expect { tz.display_name_for(time, :generic_short) }.to raise_error(TZInfo::AmbiguousTime)
|
291
|
+
expect { tz.display_name_for(time, :generic_short, &:first) }.to_not raise_error
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
describe '#period_for_local' do
|
296
|
+
let(:tz) { TwitterCldr::Timezones::Timezone.instance('America/New_York', :en) }
|
297
|
+
# Known ambiguous time
|
298
|
+
let(:time) { Time.new(2021, 11, 7, 1, 1, 23, 0) }
|
299
|
+
|
300
|
+
it 'accepts a block to handle ambiguous times' do
|
301
|
+
expect { tz.period_for_local(time) }.to raise_error(TZInfo::AmbiguousTime)
|
302
|
+
expect { tz.period_for_local(time, &:first) }.to_not raise_error
|
303
|
+
end
|
304
|
+
|
305
|
+
it 'accepts a dst argument', :aggregate_failures do
|
306
|
+
expect(tz.period_for_local(time, false).dst?).to be false
|
307
|
+
expect(tz.period_for_local(time, true).dst?).to be true
|
308
|
+
end
|
309
|
+
end
|
269
310
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: twitter_cldr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Dutro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: camertron-eprun
|