rubyredrick-ri_cal 0.7.4 → 0.7.5
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.
- data/History.txt +51 -45
- data/lib/ri_cal.rb +1 -1
- data/lib/ri_cal/parser.rb +4 -1
- data/ri_cal.gemspec +2 -2
- data/spec/ri_cal/bugreports_spec.rb +41 -0
- data/spec/ri_cal/parser_spec.rb +27 -1
- metadata +4 -3
data/History.txt
CHANGED
|
@@ -1,36 +1,43 @@
|
|
|
1
|
+
=== 0.7.5 - 3 August 2009
|
|
2
|
+
- fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/19
|
|
3
|
+
Microsoft ical exports double quote tzid values in parameters, which caused a failure to find VTIMEZONES
|
|
4
|
+
This exposed an issue with parameter parsing. Did the simplest thing which could work which was to
|
|
5
|
+
strip the quotes. Need to BOLO for other pathological cases showing up in future, which may require
|
|
6
|
+
smarter parameter parsing.
|
|
7
|
+
|
|
1
8
|
=== 0.7.4 - 21 July 2009
|
|
2
|
-
|
|
9
|
+
- fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/17
|
|
3
10
|
Problem with Alarm trigger property value
|
|
4
|
-
|
|
11
|
+
- fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/18
|
|
5
12
|
Problem with exporting components with sub-components
|
|
6
13
|
=== 0.7.3 - 13 July 2009
|
|
7
14
|
Added pointers to rdoc in README
|
|
8
15
|
=== 0.7.2 - 6 July 2009
|
|
9
16
|
updated to use newest versions of newgem and hoe, in order to make run-code-run work again
|
|
10
17
|
=== 0.7.1 - 6 July 2009
|
|
11
|
-
|
|
18
|
+
- fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/15
|
|
12
19
|
duration validation issues
|
|
13
|
-
|
|
20
|
+
- fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/16
|
|
14
21
|
event finish_time loses timezone info when event has a dtstart and duration
|
|
15
22
|
=== 0.7.0 - 29 June 2009
|
|
16
|
-
|
|
23
|
+
- fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/14
|
|
17
24
|
component without recurrence properties should enumerate just itself only if it is within the period between starting and before
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
- added the :overlapping option to OccurrenceEnumerator#occurrences - Allows the enumeration of occurrences which are either partiall or completely within a timespan given by a pair of Dates/Times/DateTimes
|
|
26
|
+
- Fixed some Ruby 1.9 incompatibilities
|
|
27
|
+
- Added some new rake tasks to run specs under multi-ruby
|
|
21
28
|
=== 0.6.3 - 14 June 2009
|
|
22
|
-
|
|
29
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941-ri_cal/tickets/13
|
|
23
30
|
tzinfotimezones-with-no-transitions-fail-on-export
|
|
24
31
|
=== 0.6.2 - 11 June 2009
|
|
25
|
-
|
|
32
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941-ri_cal/tickets/12
|
|
26
33
|
export-failure-for-unbounded-tzinfo-timezone
|
|
27
34
|
=== 0.6.1 - 6 June 2009
|
|
28
|
-
|
|
35
|
+
- Fixed problem with file which loads activesupport for the rake spec:with_activesupport task, it now
|
|
29
36
|
requires >=2.2 instead of <=2.2 - Thanks to Paul Scott-Murphy for finding this.
|
|
30
37
|
=== 0.6.0 - 5 June 2009
|
|
31
38
|
Time for a minor version bump.
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
- Improved overall enumeration performance bypassing most of the effects of the poor performance of Ruby's DateTime class.
|
|
40
|
+
- Added a framework for performance monitoring during development.
|
|
34
41
|
- New performance directory with subdirs for code to be monitored for performance (subjects)
|
|
35
42
|
- New script files:
|
|
36
43
|
script/benchmark_subject runs a ruby benchmark on one performance subject
|
|
@@ -39,61 +46,60 @@
|
|
|
39
46
|
performance:benchmark runs benchmarks against all subjects in the performance directory and produces a consolidated output file in performance_data/benchmarks.out
|
|
40
47
|
performance:profile runs script/profile_subject against all subjects in the performance directory.
|
|
41
48
|
=== 0.5.3 - 1 June, 2009
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
- Improved performance of time zone enumeration, TimeZonePeriod now caches occurrences
|
|
50
|
+
- Added a profiling directory which contains ruby programs which benchmark and/or profile performance
|
|
44
51
|
=== 0.5.2
|
|
45
|
-
|
|
52
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/11
|
|
46
53
|
Export folding is not UTF-8 Safe
|
|
47
54
|
=== 0.5.1
|
|
48
|
-
|
|
55
|
+
- Fixed README to acknowledge release on RubyForge
|
|
49
56
|
=== 0.5.0 rubyforge release candidate Tue May 26 10:26:43 2009 -0400
|
|
50
|
-
|
|
57
|
+
- Added OccurrenceEnumerator#zulu_occurrence_range
|
|
51
58
|
=== 0.0.11 Sat May 23 18:24:57 2009 -0400
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/5
|
|
60
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/9
|
|
54
61
|
=== 0.0.10
|
|
55
|
-
|
|
62
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/8
|
|
56
63
|
=== 0.0.9
|
|
57
|
-
|
|
64
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/4
|
|
58
65
|
Missing comparison methods in PropertyValue::Date
|
|
59
|
-
|
|
66
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/6
|
|
60
67
|
Type of dtstart and dtend (DATE or DATETIME) now preserved on enumeration
|
|
61
68
|
=== 0.0.8
|
|
62
|
-
|
|
69
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941-ri_cal/tickets/1
|
|
63
70
|
EXDATE and RDATE now pick up the timezone from DateTime, Time, and TimeWithZone values
|
|
64
|
-
|
|
71
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/2
|
|
65
72
|
Missing arithmetic methods in PropertyValue::Date
|
|
66
|
-
|
|
73
|
+
- Fixed http://rick_denatale.lighthouseapp.com/projects/30941/tickets/3
|
|
67
74
|
Components with no recurrence rules or rdate properties failed on enumeration, they now
|
|
68
75
|
will enumerate a single occurrence
|
|
69
76
|
=== 0.0.7
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
- Fixed a bug relating to properly recognizing ActiveRecord::TimeWithZone
|
|
78
|
+
- DATETIME propertyvalues will now return an instance of TimeWithZone instead of DateTime when
|
|
72
79
|
activesupport is present, and it is appropriate. See the README for details
|
|
73
80
|
=== 0.0.6
|
|
74
|
-
|
|
75
|
-
|
|
81
|
+
- Added rake tasks to run specs with either the tzinfo gem or activesupport (<=2.2)
|
|
82
|
+
- Default rake task now runs both of these
|
|
76
83
|
=== 0.0.5
|
|
77
|
-
|
|
84
|
+
- Fixed a bug in occurrence enumeration reported by paulsm on github
|
|
78
85
|
=== 0.0.4
|
|
79
|
-
|
|
86
|
+
- Fixed a bug in imported timezones reported by paulsm on github
|
|
80
87
|
=== 0.0.3
|
|
81
|
-
|
|
88
|
+
- Added tzid method to Ruby Time and DateTime instances, and to ActiveRecord::TimeWithZone if it is defined this method is used to determine the desired
|
|
82
89
|
timezone when an instance of one of these classes is given as the value of a datetime property. If the tzid is nil then the default tzid is used,
|
|
83
90
|
if it is set to :floating then the property will be a floating time.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
91
|
+
- Removed the ability to pass an array with a tzid string and a date-time since the above made it unnecessary
|
|
92
|
+
- The ruby datetime property returned from the ruby_value method on the DateTime property will return an instance of ::DateTime with:
|
|
93
|
+
-- The proper utc offset
|
|
94
|
+
-- The tzid set to the right tzid
|
|
95
|
+
- Made exdate/rdate building possible
|
|
96
|
+
- Added a default_tzid attribute to the Calendar component, if this attribute is not set for a particular calendar it will delegate to the default set
|
|
90
97
|
for the DateTime property class.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
98
|
+
- Added fix patches from
|
|
99
|
+
-- http://github.com/kjwierenga/ri_cal
|
|
100
|
+
-- http://github.com/wesmaldonado/ri_cal
|
|
94
101
|
|
|
95
102
|
=== 0.0.2
|
|
96
|
-
|
|
103
|
+
- Fixed gemspec
|
|
97
104
|
== 0.0.1
|
|
98
|
-
|
|
99
|
-
* Initial public release
|
|
105
|
+
- Initial public release
|
data/lib/ri_cal.rb
CHANGED
|
@@ -14,7 +14,7 @@ module RiCal
|
|
|
14
14
|
autoload :OccurrenceEnumerator, "#{my_dir}/ri_cal/occurrence_enumerator.rb"
|
|
15
15
|
|
|
16
16
|
# :stopdoc:
|
|
17
|
-
VERSION = '0.7.
|
|
17
|
+
VERSION = '0.7.5'
|
|
18
18
|
LIBPATH = ::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
|
|
19
19
|
PATH = ::File.dirname(LIBPATH) + ::File::SEPARATOR
|
|
20
20
|
|
data/lib/ri_cal/parser.rb
CHANGED
|
@@ -24,7 +24,10 @@ module RiCal
|
|
|
24
24
|
string.split(";").inject({}) { |result, val|
|
|
25
25
|
m = /^(.+)=(.+)$/.match(val)
|
|
26
26
|
raise "Invalid parameter value #{val.inspect}" unless m
|
|
27
|
-
|
|
27
|
+
#TODO - The gsub below is a simplest fix for http://rick_denatale.lighthouseapp.com/projects/30941/tickets/19
|
|
28
|
+
# it may need further examination if more pathological cases show up.
|
|
29
|
+
param_val = m[2].sub(/^\"(.*)\"$/, '\1')
|
|
30
|
+
result[m[1]] = param_val
|
|
28
31
|
result
|
|
29
32
|
}
|
|
30
33
|
else
|
data/ri_cal.gemspec
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{ri_cal}
|
|
5
|
-
s.version = "0.7.
|
|
5
|
+
s.version = "0.7.5"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["author=Rick DeNatale"]
|
|
9
|
-
s.date = %q{2009-
|
|
9
|
+
s.date = %q{2009-08-03}
|
|
10
10
|
s.default_executable = %q{ri_cal}
|
|
11
11
|
s.description = %q{A new Ruby implementation of RFC2445 iCalendar.
|
|
12
12
|
|
|
@@ -93,4 +93,45 @@ describe "http://rick_denatale.lighthouseapp.com/projects/30941/tickets/18" do
|
|
|
93
93
|
|
|
94
94
|
lambda {event.export}.should_not raise_error
|
|
95
95
|
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
describe "http://rick_denatale.lighthouseapp.com/projects/30941/tickets/19" do
|
|
99
|
+
before(:each) do
|
|
100
|
+
cals = RiCal.parse_string(<<-ENDCAL)
|
|
101
|
+
BEGIN:VCALENDAR
|
|
102
|
+
METHOD:REQUEST
|
|
103
|
+
PRODID:Microsoft CDO for Microsoft Exchange
|
|
104
|
+
VERSION:2.0
|
|
105
|
+
BEGIN:VTIMEZONE
|
|
106
|
+
TZID:(GMT-05.00) Eastern Time (US & Canada)
|
|
107
|
+
X-MICROSOFT-CDO-TZID:10
|
|
108
|
+
BEGIN:STANDARD
|
|
109
|
+
DTSTART:16010101T020000
|
|
110
|
+
TZOFFSETFROM:-0400
|
|
111
|
+
TZOFFSETTO:-0500
|
|
112
|
+
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=11;BYDAY=1SU
|
|
113
|
+
END:STANDARD
|
|
114
|
+
BEGIN:DAYLIGHT
|
|
115
|
+
DTSTART:16010101T020000
|
|
116
|
+
TZOFFSETFROM:-0500
|
|
117
|
+
TZOFFSETTO:-0400
|
|
118
|
+
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=2SU
|
|
119
|
+
END:DAYLIGHT
|
|
120
|
+
END:VTIMEZONE
|
|
121
|
+
BEGIN:VEVENT
|
|
122
|
+
DTSTAMP:20090724T143205Z
|
|
123
|
+
DTSTART;TZID="(GMT-05.00) Eastern Time (US & Canada)":20090804T120000
|
|
124
|
+
SUMMARY:FW: ALL HANDS MEETING
|
|
125
|
+
DTEND;TZID="(GMT-05.00) Eastern Time (US & Canada)":20090804T133000
|
|
126
|
+
DESCRIPTION:Some event
|
|
127
|
+
END:VEVENT
|
|
128
|
+
END:VCALENDAR
|
|
129
|
+
ENDCAL
|
|
130
|
+
|
|
131
|
+
@event = cals.first.events.first
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "not raise an error accessing DTSTART" do
|
|
135
|
+
lambda {@event.dtstart}.should_not raise_error
|
|
136
|
+
end
|
|
96
137
|
end
|
data/spec/ri_cal/parser_spec.rb
CHANGED
|
@@ -4,6 +4,26 @@ require File.join(File.dirname(__FILE__), %w[.. spec_helper])
|
|
|
4
4
|
|
|
5
5
|
describe RiCal::Parser do
|
|
6
6
|
|
|
7
|
+
context ".separate_line" do
|
|
8
|
+
it "should work" do
|
|
9
|
+
RiCal::Parser.new.separate_line("DTSTART;TZID=America/New_York:20090804T120000").should == {
|
|
10
|
+
:name => "DTSTART",
|
|
11
|
+
:params => {"TZID" => "America/New_York"},
|
|
12
|
+
:value => "20090804T120000"
|
|
13
|
+
}
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
context ".params_and_value" do
|
|
18
|
+
it "should separate parameters and values" do
|
|
19
|
+
RiCal::Parser.params_and_value(";TZID=(GMT-05.00) Eastern Time (US & Canada):20090804T120000").should == [{"TZID" => "(GMT-05.00) Eastern Time (US & Canada)"}, "20090804T120000"]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "should strip surrounding quotes" do
|
|
23
|
+
RiCal::Parser.params_and_value(";TZID=\"(GMT-05.00) Eastern Time (US & Canada)\":20090804T120000").should == [{"TZID" => "(GMT-05.00) Eastern Time (US & Canada)"}, "20090804T120000"]
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
7
27
|
def self.describe_property(entity_name, prop_name, params, value, type = RiCal::PropertyValue::Text)
|
|
8
28
|
describe_named_property(entity_name, prop_name, prop_name, params, value, false, type)
|
|
9
29
|
end
|
|
@@ -16,6 +36,12 @@ describe RiCal::Parser do
|
|
|
16
36
|
ruby_value_name = prop_name.tr("-", "_").downcase
|
|
17
37
|
ruby_prop_name = "#{prop_text.tr('-', '_').downcase}_property"
|
|
18
38
|
expected_ruby_value = type.convert(nil, value).ruby_value
|
|
39
|
+
expected_params = {}
|
|
40
|
+
params.each do |key, parm_value|
|
|
41
|
+
# strip surrounding quotes from values
|
|
42
|
+
expected_params[key] = parm_value.sub(/^\"(.*)\"$/, '\1')
|
|
43
|
+
end
|
|
44
|
+
|
|
19
45
|
describe "#{prop_name} with value of #{value.inspect}" do
|
|
20
46
|
parse_input = params.inject("BEGIN:#{entity_name.upcase}\n#{prop_text.upcase}") { |pi, assoc| "#{pi};#{assoc[0]}=#{assoc[1]}"}
|
|
21
47
|
parse_input = "#{parse_input}:#{value.to_rfc2445_string}\nEND:#{entity_name.upcase}"
|
|
@@ -48,7 +74,7 @@ describe RiCal::Parser do
|
|
|
48
74
|
end
|
|
49
75
|
|
|
50
76
|
it "should have the right parameters" do
|
|
51
|
-
|
|
77
|
+
expected_params.each do | key, value |
|
|
52
78
|
@prop.params[key].should == value
|
|
53
79
|
end
|
|
54
80
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubyredrick-ri_cal
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.7.
|
|
4
|
+
version: 0.7.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- author=Rick DeNatale
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-
|
|
12
|
+
date: 2009-08-03 00:00:00 -07:00
|
|
13
13
|
default_executable: ri_cal
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -199,6 +199,7 @@ files:
|
|
|
199
199
|
- tasks/spec.rake
|
|
200
200
|
has_rdoc: false
|
|
201
201
|
homepage: http://ri-cal.rubyforge.org/
|
|
202
|
+
licenses:
|
|
202
203
|
post_install_message:
|
|
203
204
|
rdoc_options:
|
|
204
205
|
- --main
|
|
@@ -220,7 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
220
221
|
requirements: []
|
|
221
222
|
|
|
222
223
|
rubyforge_project: ri-cal
|
|
223
|
-
rubygems_version: 1.
|
|
224
|
+
rubygems_version: 1.3.5
|
|
224
225
|
signing_key:
|
|
225
226
|
specification_version: 3
|
|
226
227
|
summary: A new Ruby implementation of RFC2445 iCalendar
|