jruby-rfc2445 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ical_parse_util.rb +14 -0
- data/spec/rfc2445_spec.rb +17 -0
- metadata +1 -1
data/lib/ical_parse_util.rb
CHANGED
@@ -53,6 +53,20 @@ class ICalParseUtil
|
|
53
53
|
result
|
54
54
|
end
|
55
55
|
|
56
|
+
# Parse a RECURRENCE-ID into a JTime. Various formats of this property
|
57
|
+
# are permitted, except for the "range" parameter
|
58
|
+
|
59
|
+
def parse_recurrence_id(s, tzid = 'UTC')
|
60
|
+
raise ArgumentError, 'range parameter not supported' if s =~ /RANGE=/
|
61
|
+
|
62
|
+
s =~ /TZID=([^:;]+)/
|
63
|
+
tzid = $1 || tzid
|
64
|
+
|
65
|
+
# Clean up ISO 8601 format and extra parameters
|
66
|
+
s = s.gsub(/;[^:]+:|[\-:]/, '')
|
67
|
+
parse_jtime(s, tzid)
|
68
|
+
end
|
69
|
+
|
56
70
|
def parse_datetime(s)
|
57
71
|
s =~ /(;TZID=([^\s]+))?:([^\s]+)/
|
58
72
|
parse_jtime($3, $2)
|
data/spec/rfc2445_spec.rb
CHANGED
@@ -432,6 +432,23 @@ describe ICalParseUtil do
|
|
432
432
|
jtime.should be_instance_of(JTime)
|
433
433
|
jtime.hour.should == 0
|
434
434
|
end
|
435
|
+
|
436
|
+
it "should parse recurrence-id into JTime" do
|
437
|
+
jtime = ICalParseUtil.parse_recurrence_id('2010-02-11T02:00:00Z')
|
438
|
+
jtime.should == JTime.utc(2010, 2, 11, 2)
|
439
|
+
|
440
|
+
jtime = ICalParseUtil.parse_recurrence_id(';VALUE=DATE:20100211')
|
441
|
+
jtime.should == JTime.utc(2010, 2, 11)
|
442
|
+
|
443
|
+
jtime = ICalParseUtil.parse_recurrence_id(';VALUE=DATE-TIME:20100211T020000Z')
|
444
|
+
jtime.should == JTime.utc(2010, 2, 11, 2)
|
445
|
+
|
446
|
+
jtime = ICalParseUtil.parse_recurrence_id(';VALUE=DATE-TIME:2010-02-11T02:00:00Z')
|
447
|
+
jtime.should == JTime.utc(2010, 2, 11, 2)
|
448
|
+
|
449
|
+
jtime = ICalParseUtil.parse_recurrence_id(';TZID=America/Los_Angeles;VALUE=DATE:20100211')
|
450
|
+
jtime.should == JTime.utc(2010, 2, 11, 8)
|
451
|
+
end
|
435
452
|
end
|
436
453
|
|
437
454
|
describe RecurrenceTime do
|