icalendar 2.1.1 → 2.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2962f7c7001cbc2bdcda2edce835db80b7987be9
4
- data.tar.gz: 443602bd7933214e17ef4a083bce5004952b099a
3
+ metadata.gz: 961c1bb54f8d041206166d436da335415ffa8373
4
+ data.tar.gz: 559c04b6e5456b74649baf53db4c60d2dd2f2485
5
5
  SHA512:
6
- metadata.gz: 9233eda8abd935a3f515c46125a89b489bbff45e3fd5571abb6b01102f019f6f80d5cc1b8189d18e522f89337cb248be7b88d50d6bfb3b0f1029d5d462da32af
7
- data.tar.gz: d3cc60211692b14e71edd51dc0cd220a240a4615f50b9b371f8064bf809f33f501dc4fa9da5e0380555295bab3b161555bb2a9ef705896a13973fb4934f7221c
6
+ metadata.gz: e0e4f2ee01e35b88c0d8916f7a17bd441338b6eda24aba19ab4e78c6cbf25b4bf2614fa94e82c1e085b9cf4bd006a863d690e17234c05aad0a670bc883f97534
7
+ data.tar.gz: db81643632c9054fcc1595d344949cd36848b7c3c5dea2fccced3322069320dde48c7ece037f6087025df04719b86b62fe369a1f34fbfb7a1c59107b2bbeac9a
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.1.2 2014-09-10
2
+ * Fix timezone abbreviation generation - Jan Vlnas
3
+ * Fix timezone repeat rules for end of month
4
+
1
5
  === 2.1.1 2014-07-23
2
6
  * Quiet TimeWithZone support logging
3
7
  * Use SecureRandom.uuid - antoinelyset
@@ -56,13 +56,21 @@ module Icalendar
56
56
  offset.ical_offset
57
57
  end
58
58
 
59
+ def offset_abbreviation
60
+ offset.abbreviation.to_s
61
+ end
62
+
59
63
  def rrule
60
64
  start = local_start.to_datetime
61
65
  # this is somewhat of a hack, but seems to work ok
66
+ # assumes that no timezone transition is in law as "4th X of the month"
67
+ # but only as 1st X, 2nd X, 3rd X, or Last X
68
+ start_week = ((start.day - 1) / 7).to_i + 1
69
+ start_week = (start_week > 3) ? -1 : start_week
62
70
  [sprintf(
63
71
  'FREQ=YEARLY;BYMONTH=%d;BYDAY=%d%s',
64
72
  start.month,
65
- ((start.day - 1)/ 7).to_i + 1,
73
+ start_week,
66
74
  start.strftime('%a').upcase[0,2]
67
75
  )]
68
76
  end
@@ -129,7 +137,7 @@ module TZInfo
129
137
  day.dtstart = start_transition.dtstart
130
138
  day.rrule = start_transition.rrule unless end_transition.nil?
131
139
  else
132
- day.tzname = abbreviation.to_s.sub("ST","DT")
140
+ day.tzname = end_transition.offset_abbreviation
133
141
  day.tzoffsetfrom = end_transition.offset_from
134
142
  day.tzoffsetto = end_transition.offset_to
135
143
  day.dtstart = end_transition.dtstart
@@ -141,7 +149,7 @@ module TZInfo
141
149
  def standard
142
150
  Icalendar::Timezone::Standard.new.tap do |std|
143
151
  if dst?
144
- std.tzname = abbreviation.to_s.sub('DT', 'ST')
152
+ std.tzname = end_transition.offset_abbreviation
145
153
  std.tzoffsetfrom = end_transition.offset_from
146
154
  std.tzoffsetto = end_transition.offset_to
147
155
  std.dtstart = end_transition.dtstart
@@ -1,5 +1,5 @@
1
1
  module Icalendar
2
2
 
3
- VERSION = '2.1.1'
3
+ VERSION = '2.1.2'
4
4
 
5
5
  end
data/spec/tzinfo_spec.rb CHANGED
@@ -4,7 +4,7 @@ require_relative '../lib/icalendar/tzinfo'
4
4
  describe 'TZInfo::Timezone' do
5
5
 
6
6
  let(:tz) { TZInfo::Timezone.get 'Europe/Copenhagen' }
7
- let(:date) { DateTime.new 1970 }
7
+ let(:date) { DateTime.new 2014 }
8
8
  subject { tz.ical_timezone date }
9
9
 
10
10
  describe 'daylight offset' do
@@ -17,6 +17,14 @@ describe 'TZInfo::Timezone' do
17
17
  specify { expect(subject.standards.first.tzoffsetfrom.value_ical).to eq "+0200" }
18
18
  end
19
19
 
20
+ describe 'daylight recurrence rule' do
21
+ specify { expect(subject.daylights.first.rrule.first.value_ical).to eq "FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3" }
22
+ end
23
+
24
+ describe 'standard recurrence rule' do
25
+ specify { expect(subject.standards.first.rrule.first.value_ical).to eq "FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10" }
26
+ end
27
+
20
28
  describe 'no end transition' do
21
29
  let(:tz) { TZInfo::Timezone.get 'America/Cayman' }
22
30
  let(:date) { DateTime.now }
@@ -82,4 +90,21 @@ END:VTIMEZONE
82
90
  end
83
91
  end
84
92
 
93
+ describe 'tzname for offset' do
94
+ # Check for CET/CEST correctness, which doesn't follow
95
+ # the more common *ST/*DT style abbreviations.
96
+ let(:tz) { TZInfo::Timezone.get 'Europe/Prague' }
97
+ let(:ical_tz) { tz.ical_timezone date }
98
+
99
+ describe '#daylight' do
100
+ subject(:tzname) { ical_tz.daylights.first.tzname.first }
101
+ it { should eql 'CEST' }
102
+ end
103
+
104
+ describe '#standard' do
105
+ subject(:tzname) { ical_tz.standards.first.tzname.first }
106
+ it { should eql 'CET' }
107
+ end
108
+ end
109
+
85
110
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icalendar
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Ahearn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-24 00:00:00.000000000 Z
11
+ date: 2014-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake