icalendar 1.2.2 → 1.2.3
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 +5 -0
- data/Manifest.txt +0 -6
- data/README.rdoc +16 -21
- data/Rakefile +2 -7
- data/icalendar.gemspec +4 -11
- data/lib/icalendar/base.rb +2 -1
- data/lib/icalendar/component.rb +4 -6
- data/lib/icalendar/component/timezone.rb +0 -2
- data/test/test_component.rb +6 -0
- data/website/index.html +9 -24
- data/website/index.txt +9 -54
- data/website/template.html.erb +1 -1
- metadata +21 -20
- data/PostInstall.txt +0 -5
- data/lib/icalendar/conversions.rb.orig +0 -144
- data/test.ical +0 -33
- data/test.ics +0 -33
- data/test.rb +0 -48
- data/test2.rb +0 -28
data/History.txt
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
=== 1.2.3 2013-03-09
|
2
|
+
* Call `super` from Component#method_missing
|
3
|
+
* Clean up warnings in test suite
|
4
|
+
* Add Gemfile for installing development dependencies
|
5
|
+
|
1
6
|
=== 1.2.2 2013-02-16
|
2
7
|
* added TZURL property to Timezone component - spacepixels
|
3
8
|
* correct days in RRule ("[TU,WE]" -> "TU,WE") - Christoph Finkensiep
|
data/Manifest.txt
CHANGED
@@ -2,7 +2,6 @@ COPYING
|
|
2
2
|
GPL
|
3
3
|
History.txt
|
4
4
|
Manifest.txt
|
5
|
-
PostInstall.txt
|
6
5
|
README.rdoc
|
7
6
|
Rakefile
|
8
7
|
config/website.yml
|
@@ -22,7 +21,6 @@ lib/icalendar/component/journal.rb
|
|
22
21
|
lib/icalendar/component/timezone.rb
|
23
22
|
lib/icalendar/component/todo.rb
|
24
23
|
lib/icalendar/conversions.rb
|
25
|
-
lib/icalendar/conversions.rb.orig
|
26
24
|
lib/icalendar/helpers.rb
|
27
25
|
lib/icalendar/parameter.rb
|
28
26
|
lib/icalendar/parser.rb
|
@@ -35,9 +33,6 @@ script/generate
|
|
35
33
|
script/recur1.ics
|
36
34
|
script/tryit.rb
|
37
35
|
script/txt2html
|
38
|
-
test.ical
|
39
|
-
test.ics
|
40
|
-
test.rb
|
41
36
|
test/component/test_event.rb
|
42
37
|
test/component/test_timezone.rb
|
43
38
|
test/component/test_todo.rb
|
@@ -53,7 +48,6 @@ test/test_conversions.rb
|
|
53
48
|
test/test_helper.rb
|
54
49
|
test/test_parameter.rb
|
55
50
|
test/test_parser.rb
|
56
|
-
test2.rb
|
57
51
|
website/index.html
|
58
52
|
website/index.txt
|
59
53
|
website/javascripts/rounded_corners_lite.inc.js
|
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= iCalendar -- Internet calendaring, Ruby style
|
2
2
|
|
3
|
-
* http://github.com/
|
3
|
+
* http://github.com/icalendar/icalendar
|
4
4
|
|
5
5
|
== DESCRIPTION
|
6
6
|
|
@@ -75,8 +75,8 @@ transport such as infrared might also be used.
|
|
75
75
|
dtend Date.new(2005, 04, 28)
|
76
76
|
summary "This is a summary with params.", params
|
77
77
|
end
|
78
|
-
|
79
|
-
# We can output the calendar as a string to write to a file,
|
78
|
+
|
79
|
+
# We can output the calendar as a string to write to a file,
|
80
80
|
# network port, database etc.
|
81
81
|
cal_string = cal.to_ical
|
82
82
|
puts cal_string
|
@@ -97,7 +97,7 @@ transport such as infrared might also be used.
|
|
97
97
|
trigger "-PT15M" # 15 minutes before
|
98
98
|
add_attach "ftp://host.com/novo-procs/felizano.exe", {"FMTTYPE" => "application/binary"} # email attachments (optional)
|
99
99
|
end
|
100
|
-
|
100
|
+
|
101
101
|
alarm do
|
102
102
|
action "DISPLAY" # This line isn't necessary, it's the default
|
103
103
|
summary "Alarm notification"
|
@@ -128,7 +128,7 @@ transport such as infrared might also be used.
|
|
128
128
|
# TRIGGER:-P1DT0H0M0S
|
129
129
|
# SUMMARY:Alarm notification
|
130
130
|
# END:VALARM
|
131
|
-
#
|
131
|
+
#
|
132
132
|
# BEGIN:VALARM
|
133
133
|
# ACTION:AUDIO
|
134
134
|
# ATTACH;VALUE=URI:Basso
|
@@ -136,7 +136,7 @@ transport such as infrared might also be used.
|
|
136
136
|
# END:VALARM
|
137
137
|
|
138
138
|
== Timezones
|
139
|
-
|
139
|
+
|
140
140
|
# Create a timezone definition (previous convention)
|
141
141
|
cal = Calendar.new
|
142
142
|
timezone = Icalendar::Timezone.new
|
@@ -182,9 +182,9 @@ transport such as infrared might also be used.
|
|
182
182
|
add_recurrence_rule "YEARLY;BYMONTH=11;BYDAY=1SU"
|
183
183
|
end
|
184
184
|
end
|
185
|
-
|
185
|
+
|
186
186
|
# Both conventions output
|
187
|
-
|
187
|
+
|
188
188
|
# BEGIN:VTIMEZONE
|
189
189
|
# TZID:America/Chicago
|
190
190
|
# BEGIN:DAYLIGHT
|
@@ -205,20 +205,20 @@ transport such as infrared might also be used.
|
|
205
205
|
|
206
206
|
== Unicode
|
207
207
|
Add `$KCODE = 'u'` to make icalender work correctly with Utf8 texts
|
208
|
-
|
208
|
+
|
209
209
|
== Parsing iCalendars:
|
210
|
-
|
210
|
+
|
211
211
|
# Open a file or pass a string to the parser
|
212
212
|
cal_file = File.open("single_event.ics")
|
213
|
-
|
213
|
+
|
214
214
|
# Parser returns an array of calendars because a single file
|
215
215
|
# can have multiple calendars.
|
216
216
|
cals = Icalendar.parse(cal_file)
|
217
217
|
cal = cals.first
|
218
|
-
|
218
|
+
|
219
219
|
# Now you can access the cal object in just the same way I created it
|
220
220
|
event = cal.events.first
|
221
|
-
|
221
|
+
|
222
222
|
puts "start date-time: " + event.dtstart
|
223
223
|
puts "summary: " + event.summary
|
224
224
|
|
@@ -227,7 +227,7 @@ Add `$KCODE = 'u'` to make icalender work correctly with Utf8 texts
|
|
227
227
|
Often times in web apps and other interactive applications you'll need to
|
228
228
|
lookup items in a calendar to make changes or get details. Now you can find
|
229
229
|
everything by the unique id automatically associated with all components.
|
230
|
-
|
230
|
+
|
231
231
|
cal = Calendar.new
|
232
232
|
10.times { cal.event } # Create 10 events with only default data.
|
233
233
|
some_event = cal.events[5] # Grab it from the array of events
|
@@ -261,18 +261,13 @@ $ sudo gem install icalendar
|
|
261
261
|
|
262
262
|
== Testing
|
263
263
|
|
264
|
-
You cannot use the most recent version of rake (10.x +), so you must install an
|
265
|
-
older version, such as 0.9.2.2:
|
266
|
-
|
267
|
-
gem install rake -v=0.9.2.2
|
268
|
-
|
269
264
|
The gem `hoe` is required as well:
|
270
265
|
|
271
266
|
gem install hoe
|
272
267
|
|
273
268
|
To run the tests:
|
274
269
|
|
275
|
-
rake
|
270
|
+
rake test
|
276
271
|
|
277
272
|
== License
|
278
273
|
|
@@ -280,7 +275,7 @@ This library is released under the same license as Ruby itself.
|
|
280
275
|
|
281
276
|
== Support & Contributions
|
282
277
|
|
283
|
-
The iCalendar library homepage is http://icalendar.rubyforge.org/
|
278
|
+
The iCalendar library homepage is http://icalendar.rubyforge.org/
|
284
279
|
|
285
280
|
There is an icalendar-devel@rubyforge.org mailing list that can be
|
286
281
|
used for asking questions, making comments or submitting patches.
|
data/Rakefile
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
gem 'hoe', '>= 2.1.0'
|
3
1
|
require 'hoe'
|
4
2
|
require 'fileutils'
|
5
3
|
require './lib/icalendar'
|
@@ -10,11 +8,8 @@ Hoe.plugin :website
|
|
10
8
|
# Generate all the Rake tasks
|
11
9
|
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
12
10
|
$hoe = Hoe.spec 'icalendar' do
|
13
|
-
|
14
|
-
self.
|
15
|
-
self.rubyforge_name = self.name # TODO this is default value
|
16
|
-
self.extra_rdoc_files = ["README.rdoc"]
|
17
|
-
self.readme_file = "README.rdoc"
|
11
|
+
developer 'Ryan Ahearn', 'ryan.c.ahearn@gmail.com'
|
12
|
+
self.extra_rdoc_files += %w[COPYING GPL]
|
18
13
|
end
|
19
14
|
|
20
15
|
if ENV['UNDER_HUDSON']
|
data/icalendar.gemspec
CHANGED
@@ -1,21 +1,14 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "icalendar"
|
3
3
|
s.version = "1.2"
|
4
|
+
|
4
5
|
s.homepage = "http://icalendar.rubyforge.org/"
|
5
6
|
s.platform = Gem::Platform::RUBY
|
6
7
|
s.summary = "A ruby implementation of the iCalendar specification (RFC-2445)."
|
7
8
|
s.description = "Implements the iCalendar specification (RFC-2445) in Ruby. This allows for the generation and parsing of .ics files, which are used by a variety of calendaring applications."
|
8
9
|
|
9
|
-
s.
|
10
|
-
s.
|
11
|
-
|
12
|
-
s.require_path = "lib"
|
13
|
-
s.autorequire = "icalendar"
|
14
|
-
s.has_rdoc = true
|
15
|
-
s.extra_rdoc_files = ["README", "COPYING", "GPL"]
|
16
|
-
s.rdoc_options.concat ['--main', 'README']
|
17
|
-
|
18
|
-
s.author = "Sean Dague"
|
19
|
-
s.email = "sean@dague.net"
|
10
|
+
s.add_development_dependency 'hoe', '~> 3.5'
|
11
|
+
s.add_development_dependency 'newgem', '~> 1.5'
|
12
|
+
s.add_development_dependency 'rubyforge', '~> 2.0'
|
20
13
|
end
|
21
14
|
|
data/lib/icalendar/base.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
=begin
|
2
2
|
Copyright (C) 2005 Jeff Rose
|
3
3
|
Copyright (C) 2009-2010 Sean Dague
|
4
|
+
Copyright (C) 2013- Ryan Ahearn
|
4
5
|
|
5
6
|
This library is free software; you can redistribute it and/or modify it
|
6
7
|
under the same terms as the ruby language itself, see the file COPYING for
|
@@ -10,7 +11,7 @@ require 'logger'
|
|
10
11
|
|
11
12
|
module Icalendar #:nodoc:
|
12
13
|
|
13
|
-
VERSION = '1.2.
|
14
|
+
VERSION = '1.2.3'
|
14
15
|
|
15
16
|
# A simple error class to differentiate iCalendar library exceptions
|
16
17
|
# from ruby language exceptions or others.
|
data/lib/icalendar/component.rb
CHANGED
@@ -134,7 +134,7 @@ module Icalendar
|
|
134
134
|
if key =~ /ip_.*/
|
135
135
|
key = key[3..-1]
|
136
136
|
end
|
137
|
-
|
137
|
+
|
138
138
|
# Property name
|
139
139
|
unless multiline_property?(key)
|
140
140
|
prelude = "#{key.gsub(/_/, '-').upcase}" +
|
@@ -412,13 +412,11 @@ module Icalendar
|
|
412
412
|
end
|
413
413
|
end
|
414
414
|
|
415
|
-
def method_missing(
|
415
|
+
def method_missing(method, *args)
|
416
416
|
@@logger.debug("Inside method_missing...")
|
417
|
-
method_name =
|
417
|
+
method_name = method.to_s.downcase
|
418
418
|
|
419
|
-
unless method_name =~ /x_.*/
|
420
|
-
raise NoMethodError, "Method Name: #{method_name}"
|
421
|
-
end
|
419
|
+
super unless method_name =~ /x_.*/
|
422
420
|
|
423
421
|
# x-properties are accessed with underscore but stored with a dash so
|
424
422
|
# they output correctly and we don't have to special case the
|
@@ -20,8 +20,6 @@ module Icalendar
|
|
20
20
|
# New York City starting from 1967. Each line represents a description
|
21
21
|
# or rule for a particular observance.
|
22
22
|
class Timezone < Component
|
23
|
-
ical_component :standard, :daylight
|
24
|
-
|
25
23
|
# Single properties
|
26
24
|
ical_property :dtstart, :start
|
27
25
|
ical_property :tzoffsetto, :timezone_offset_to
|
data/test/test_component.rb
CHANGED
@@ -63,6 +63,12 @@ class TestComponent < Test::Unit::TestCase
|
|
63
63
|
assert_equal("my-custom-property", @event.x_foobar)
|
64
64
|
end
|
65
65
|
|
66
|
+
def test_method_missing_no_x
|
67
|
+
assert_raise NoMethodError do
|
68
|
+
@event.there_is_no_such_method
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
66
72
|
def test_respond_to_missing
|
67
73
|
component = Icalendar::Component.new('name')
|
68
74
|
assert !component.respond_to?(:there_is_no_such_method)
|
data/website/index.html
CHANGED
@@ -34,45 +34,30 @@
|
|
34
34
|
<div class="sidebar">
|
35
35
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/icalendar"; return false'>
|
36
36
|
<p>Get Version</p>
|
37
|
-
<a href="http://rubyforge.org/projects/icalendar" class="numbers">1.2.
|
37
|
+
<a href="http://rubyforge.org/projects/icalendar" class="numbers">1.2.2</a>
|
38
38
|
</div>
|
39
39
|
</div>
|
40
40
|
<h2>What</h2>
|
41
|
+
<p>This gem implements the iCalendar specification (<span class="caps">RFC</span>-2445) in Ruby. This allows for the generation and parsing of .ics files, which are used by a variety of calendaring applications.</p>
|
42
|
+
<h2>How</h2>
|
43
|
+
<p>Please see <a href="https://github.com/icalendar/icalendar/blob/master/README.rdoc">the <span class="caps">README</span></a> for more information.</p>
|
41
44
|
<h2>Installing</h2>
|
42
45
|
<p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">icalendar</span></pre></p>
|
43
|
-
<h2>The basics</h2>
|
44
|
-
<h2>Demonstration of usage</h2>
|
45
|
-
<h2>Forum</h2>
|
46
|
-
<p><a href="http://groups.google.com/group/icalendar">http://groups.google.com/group/icalendar</a></p>
|
47
|
-
<p><span class="caps">TODO</span> – create Google Group – icalendar</p>
|
48
46
|
<h2>How to submit patches</h2>
|
49
|
-
<p>
|
50
|
-
<p><span class="caps">TODO</span> – pick <span class="caps">SVN</span> or Git instructions</p>
|
51
|
-
<p>The trunk repository is <code>svn://rubyforge.org/var/svn/icalendar/trunk</code> for anonymous access.</p>
|
52
|
-
<p><span class="caps">OOOORRRR</span></p>
|
53
|
-
<p>You can fetch the source from either:</p>
|
47
|
+
<p>Please submit pull requests on github from a rebased topic branch</p>
|
54
48
|
<ul>
|
55
|
-
<li
|
56
|
-
</ul>
|
57
|
-
<pre>git clone git://rubyforge.org/icalendar.git</pre>
|
58
|
-
<ul>
|
59
|
-
<li>github: <a href="http://github.com/sdague/icalendar/tree/master">http://github.com/sdague/icalendar/tree/master</a></li>
|
49
|
+
<li><a href="http://github.com/icalendar/icalendar/">http://github.com/icalendar/icalendar/</a></li>
|
60
50
|
</ul>
|
61
51
|
<pre>git clone git://github.com/sdague/icalendar.git</pre>
|
62
|
-
<ul>
|
63
|
-
<li>gitorious: <a href="git://gitorious.org/icalendar/mainline.git">git://gitorious.org/icalendar/mainline.git</a></li>
|
64
|
-
</ul>
|
65
|
-
<pre>git clone git://gitorious.org/icalendar/mainline.git</pre>
|
66
52
|
<h3>Build and test instructions</h3>
|
67
53
|
<pre>cd icalendar
|
68
54
|
rake test
|
69
55
|
rake install_gem</pre>
|
70
56
|
<h2>License</h2>
|
71
|
-
<p>This code is free to use under the terms of the <span class="caps">
|
72
|
-
<
|
73
|
-
<p>Comments are welcome. Send an email to <a href="mailto:FIXME"><span class="caps">FIXME</span> full name</a> email via the <a href="http://groups.google.com/group/icalendar">forum</a></p>
|
57
|
+
<p>This code is free to use under the terms of the <span class="caps">GPL</span> or <span class="caps">BSD</span> licenses.</p>
|
58
|
+
<p>Please see the <a href="https://github.com/icalendar/icalendar/blob/master/COPYING"><span class="caps">COPYING</span></a> file for more information.</p>
|
74
59
|
<p class="coda">
|
75
|
-
<a href="
|
60
|
+
<a href="mailto:ryan@coshx.com">Ryan Ahearn</a>, 9th March 2013<br>
|
76
61
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
77
62
|
</p>
|
78
63
|
</div>
|
data/website/index.txt
CHANGED
@@ -1,79 +1,34 @@
|
|
1
1
|
h1. icalendar
|
2
2
|
|
3
|
-
|
4
3
|
h2. What
|
5
4
|
|
5
|
+
This gem implements the iCalendar specification (RFC-2445) in Ruby. This allows for the generation and parsing of .ics files, which are used by a variety of calendaring applications.
|
6
6
|
|
7
|
-
h2.
|
8
|
-
|
9
|
-
<pre syntax="ruby">sudo gem install icalendar</pre>
|
10
|
-
|
11
|
-
h2. The basics
|
12
|
-
|
13
|
-
|
14
|
-
h2. Demonstration of usage
|
15
|
-
|
7
|
+
h2. How
|
16
8
|
|
9
|
+
Please see "the README":https://github.com/icalendar/icalendar/blob/master/README.rdoc for more information.
|
17
10
|
|
18
|
-
h2.
|
19
|
-
|
20
|
-
"http://groups.google.com/group/icalendar":http://groups.google.com/group/icalendar
|
11
|
+
h2. Installing
|
21
12
|
|
22
|
-
|
13
|
+
<pre syntax="ruby">sudo gem install icalendar</pre>
|
23
14
|
|
24
15
|
h2. How to submit patches
|
25
16
|
|
26
|
-
|
27
|
-
|
28
|
-
TODO - pick SVN or Git instructions
|
29
|
-
|
30
|
-
The trunk repository is <code>svn://rubyforge.org/var/svn/icalendar/trunk</code> for anonymous access.
|
31
|
-
|
32
|
-
OOOORRRR
|
33
|
-
|
34
|
-
You can fetch the source from either:
|
17
|
+
Please submit pull requests on github from a rebased topic branch
|
35
18
|
|
36
|
-
|
37
|
-
|
38
|
-
* rubyforge: "http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>":http://rubyforge.org/scm/?group_id=<%= rubyforge_project_id %>
|
39
|
-
|
40
|
-
<pre>git clone git://rubyforge.org/icalendar.git</pre>
|
41
|
-
|
42
|
-
<% else %>
|
43
|
-
|
44
|
-
* rubyforge: MISSING IN ACTION
|
45
|
-
|
46
|
-
TODO - You can not created a RubyForge project, OR have not run <code>rubyforge config</code>
|
47
|
-
yet to refresh your local rubyforge data with this projects' id information.
|
48
|
-
|
49
|
-
When you do this, this message will magically disappear!
|
50
|
-
|
51
|
-
Or you can hack website/index.txt and make it all go away!!
|
52
|
-
|
53
|
-
<% end %>
|
54
|
-
|
55
|
-
* github: "http://github.com/sdague/icalendar/tree/master":http://github.com/sdague/icalendar/tree/master
|
19
|
+
* "http://github.com/icalendar/icalendar/":http://github.com/icalendar/icalendar/
|
56
20
|
|
57
21
|
<pre>git clone git://github.com/sdague/icalendar.git</pre>
|
58
22
|
|
59
|
-
|
60
|
-
|
61
|
-
* gitorious: "git://gitorious.org/icalendar/mainline.git":git://gitorious.org/icalendar/mainline.git
|
62
|
-
|
63
|
-
<pre>git clone git://gitorious.org/icalendar/mainline.git</pre>
|
64
|
-
|
65
23
|
h3. Build and test instructions
|
66
24
|
|
67
25
|
<pre>cd icalendar
|
68
26
|
rake test
|
69
27
|
rake install_gem</pre>
|
70
28
|
|
71
|
-
|
72
29
|
h2. License
|
73
30
|
|
74
|
-
This code is free to use under the terms of the
|
75
|
-
|
76
|
-
h2. Contact
|
31
|
+
This code is free to use under the terms of the GPL or BSD licenses.
|
77
32
|
|
78
|
-
|
33
|
+
Please see the "COPYING":https://github.com/icalendar/icalendar/blob/master/COPYING file for more information.
|
79
34
|
|
data/website/template.html.erb
CHANGED
@@ -39,7 +39,7 @@
|
|
39
39
|
</div>
|
40
40
|
<%= body %>
|
41
41
|
<p class="coda">
|
42
|
-
<a href="
|
42
|
+
<a href="mailto:ryan@coshx.com">Ryan Ahearn</a>, <%= modified.pretty %><br>
|
43
43
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
44
44
|
</p>
|
45
45
|
</div>
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: icalendar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
-
|
8
|
+
- Ryan Ahearn
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-03-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdoc
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '3.
|
53
|
+
version: '3.5'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,7 +58,7 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
61
|
+
version: '3.5'
|
62
62
|
description: ! "This is a Ruby library for dealing with iCalendar files. Rather than\nexplaining
|
63
63
|
myself, here is the introduction from RFC-2445, which\ndefines the format:\n\nThe
|
64
64
|
use of calendaring and scheduling has grown considerably in the\nlast decade. Enterprise
|
@@ -80,21 +80,21 @@ description: ! "This is a Ruby library for dealing with iCalendar files. Rather
|
|
80
80
|
wired-network transport, or some form of unwired\ntransport such as infrared might
|
81
81
|
also be used."
|
82
82
|
email:
|
83
|
-
-
|
83
|
+
- ryan.c.ahearn@gmail.com
|
84
84
|
executables: []
|
85
85
|
extensions: []
|
86
86
|
extra_rdoc_files:
|
87
87
|
- History.txt
|
88
88
|
- Manifest.txt
|
89
|
-
- PostInstall.txt
|
90
89
|
- README.rdoc
|
91
90
|
- website/index.txt
|
91
|
+
- COPYING
|
92
|
+
- GPL
|
92
93
|
files:
|
93
94
|
- COPYING
|
94
95
|
- GPL
|
95
96
|
- History.txt
|
96
97
|
- Manifest.txt
|
97
|
-
- PostInstall.txt
|
98
98
|
- README.rdoc
|
99
99
|
- Rakefile
|
100
100
|
- config/website.yml
|
@@ -114,7 +114,6 @@ files:
|
|
114
114
|
- lib/icalendar/component/timezone.rb
|
115
115
|
- lib/icalendar/component/todo.rb
|
116
116
|
- lib/icalendar/conversions.rb
|
117
|
-
- lib/icalendar/conversions.rb.orig
|
118
117
|
- lib/icalendar/helpers.rb
|
119
118
|
- lib/icalendar/parameter.rb
|
120
119
|
- lib/icalendar/parser.rb
|
@@ -127,9 +126,6 @@ files:
|
|
127
126
|
- script/recur1.ics
|
128
127
|
- script/tryit.rb
|
129
128
|
- script/txt2html
|
130
|
-
- test.ical
|
131
|
-
- test.ics
|
132
|
-
- test.rb
|
133
129
|
- test/component/test_event.rb
|
134
130
|
- test/component/test_timezone.rb
|
135
131
|
- test/component/test_todo.rb
|
@@ -145,16 +141,15 @@ files:
|
|
145
141
|
- test/test_helper.rb
|
146
142
|
- test/test_parameter.rb
|
147
143
|
- test/test_parser.rb
|
148
|
-
- test2.rb
|
149
144
|
- website/index.html
|
150
145
|
- website/index.txt
|
151
146
|
- website/javascripts/rounded_corners_lite.inc.js
|
152
147
|
- website/stylesheets/screen.css
|
153
148
|
- website/template.html.erb
|
154
149
|
- .gemtest
|
155
|
-
homepage: http://github.com/
|
150
|
+
homepage: http://github.com/icalendar/icalendar
|
156
151
|
licenses: []
|
157
|
-
post_install_message:
|
152
|
+
post_install_message:
|
158
153
|
rdoc_options:
|
159
154
|
- --main
|
160
155
|
- README.rdoc
|
@@ -166,25 +161,31 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
166
161
|
- - ! '>='
|
167
162
|
- !ruby/object:Gem::Version
|
168
163
|
version: '0'
|
164
|
+
segments:
|
165
|
+
- 0
|
166
|
+
hash: -3884597809888146880
|
169
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
168
|
none: false
|
171
169
|
requirements:
|
172
170
|
- - ! '>='
|
173
171
|
- !ruby/object:Gem::Version
|
174
172
|
version: '0'
|
173
|
+
segments:
|
174
|
+
- 0
|
175
|
+
hash: -3884597809888146880
|
175
176
|
requirements: []
|
176
177
|
rubyforge_project: icalendar
|
177
|
-
rubygems_version: 1.8.
|
178
|
+
rubygems_version: 1.8.25
|
178
179
|
signing_key:
|
179
180
|
specification_version: 3
|
180
181
|
summary: This is a Ruby library for dealing with iCalendar files
|
181
182
|
test_files:
|
183
|
+
- test/component/test_event.rb
|
184
|
+
- test/component/test_timezone.rb
|
185
|
+
- test/component/test_todo.rb
|
182
186
|
- test/test_calendar.rb
|
183
|
-
- test/test_conversions.rb
|
184
187
|
- test/test_component.rb
|
188
|
+
- test/test_conversions.rb
|
185
189
|
- test/test_helper.rb
|
186
|
-
- test/component/test_todo.rb
|
187
|
-
- test/component/test_timezone.rb
|
188
|
-
- test/component/test_event.rb
|
189
190
|
- test/test_parameter.rb
|
190
191
|
- test/test_parser.rb
|
data/PostInstall.txt
DELETED
@@ -1,144 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
Copyright (C) 2005 Jeff Rose
|
3
|
-
|
4
|
-
This library is free software; you can redistribute it and/or modify it
|
5
|
-
under the same terms as the ruby language itself, see the file COPYING for
|
6
|
-
details.
|
7
|
-
=end
|
8
|
-
|
9
|
-
require 'date'
|
10
|
-
|
11
|
-
### Add some to_ical methods to classes
|
12
|
-
|
13
|
-
# class Object
|
14
|
-
# def to_ical
|
15
|
-
# raise(NotImplementedError, "This object does not implement the to_ical method!")
|
16
|
-
# end
|
17
|
-
# end
|
18
|
-
|
19
|
-
module Icalendar
|
20
|
-
module TzidSupport
|
21
|
-
attr_accessor :icalendar_tzid
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
require 'uri/generic'
|
26
|
-
|
27
|
-
class String
|
28
|
-
def to_ical
|
29
|
-
self
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
class Fixnum
|
34
|
-
def to_ical
|
35
|
-
"#{self}"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
class Float
|
40
|
-
def to_ical
|
41
|
-
"#{self}"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# From the spec: "Values in a list of values MUST be separated by a COMMA
|
46
|
-
# character (US-ASCII decimal 44)."
|
47
|
-
class Array
|
48
|
-
def to_ical
|
49
|
-
map{|elem| elem.to_ical}.join ','
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
module URI
|
54
|
-
class Generic
|
55
|
-
def to_ical
|
56
|
-
"#{self}"
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
class DateTime < Date
|
62
|
-
attr_accessor :ical_params
|
63
|
-
include Icalendar::TzidSupport
|
64
|
-
|
65
|
-
def to_ical
|
66
|
-
s = ""
|
67
|
-
|
68
|
-
# 4 digit year
|
69
|
-
s << self.year.to_s
|
70
|
-
|
71
|
-
# Double digit month
|
72
|
-
s << "0" unless self.month > 9
|
73
|
-
s << self.month.to_s
|
74
|
-
|
75
|
-
# Double digit day
|
76
|
-
s << "0" unless self.day > 9
|
77
|
-
s << self.day.to_s
|
78
|
-
|
79
|
-
s << "T"
|
80
|
-
|
81
|
-
# Double digit hour
|
82
|
-
s << "0" unless self.hour > 9
|
83
|
-
s << self.hour.to_s
|
84
|
-
|
85
|
-
# Double digit minute
|
86
|
-
s << "0" unless self.min > 9
|
87
|
-
s << self.min.to_s
|
88
|
-
|
89
|
-
# Double digit second
|
90
|
-
s << "0" unless self.sec > 9
|
91
|
-
s << self.sec.to_s
|
92
|
-
|
93
|
-
# UTC time gets a Z suffix
|
94
|
-
if icalendar_tzid == "UTC"
|
95
|
-
s << "Z"
|
96
|
-
end
|
97
|
-
|
98
|
-
s
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
class Date
|
103
|
-
attr_accessor :ical_params
|
104
|
-
def to_ical(utc = false)
|
105
|
-
s = ""
|
106
|
-
|
107
|
-
# 4 digit year
|
108
|
-
s << self.year.to_s
|
109
|
-
|
110
|
-
# Double digit month
|
111
|
-
s << "0" unless self.month > 9
|
112
|
-
s << self.month.to_s
|
113
|
-
|
114
|
-
# Double digit day
|
115
|
-
s << "0" unless self.day > 9
|
116
|
-
s << self.day.to_s
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
class Time
|
121
|
-
attr_accessor :ical_params
|
122
|
-
def to_ical(utc = false)
|
123
|
-
s = ""
|
124
|
-
|
125
|
-
# Double digit hour
|
126
|
-
s << "0" unless self.hour > 9
|
127
|
-
s << self.hour.to_s
|
128
|
-
|
129
|
-
# Double digit minute
|
130
|
-
s << "0" unless self.min > 9
|
131
|
-
s << self.min.to_s
|
132
|
-
|
133
|
-
# Double digit second
|
134
|
-
s << "0" unless self.sec > 9
|
135
|
-
s << self.sec.to_s
|
136
|
-
|
137
|
-
# UTC time gets a Z suffix
|
138
|
-
if utc
|
139
|
-
s << "Z"
|
140
|
-
end
|
141
|
-
|
142
|
-
s
|
143
|
-
end
|
144
|
-
end
|
data/test.ical
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
BEGIN:VCALENDAR
|
2
|
-
VERSION:2.0
|
3
|
-
CALSCALE:GREGORIAN
|
4
|
-
PRODID:iCalendar-Ruby
|
5
|
-
BEGIN:VTIMEZONE
|
6
|
-
TZID:America/Chicago
|
7
|
-
BEGIN:DAYLIGHT
|
8
|
-
TZOFFSETTO:-0500
|
9
|
-
RRULE:FREQ=YEARLY\;BYMONTH=3\;BYDAY=2SU
|
10
|
-
DTSTART:19700308TO20000
|
11
|
-
TZOFFSETFROM:-0600
|
12
|
-
TZNAME:CDT
|
13
|
-
END:DAYLIGHT
|
14
|
-
BEGIN:STANDARD
|
15
|
-
TZOFFSETTO:-0600
|
16
|
-
RRULE:YEARLY\;BYMONTH=11\;BYDAY=1SU
|
17
|
-
DTSTART:19701101T020000
|
18
|
-
TZOFFSETFROM:-0500
|
19
|
-
TZNAME:CST
|
20
|
-
END:STANDARD
|
21
|
-
END:VTIMEZONE
|
22
|
-
BEGIN:VEVENT
|
23
|
-
SEQUENCE:0
|
24
|
-
TZID:America/Chicago
|
25
|
-
CLASS:PRIVATE
|
26
|
-
DTEND:20081229T110000
|
27
|
-
DTSTART:20081229T080000
|
28
|
-
UID:2008-12-27T18:18:15-05:00_885675612@orac
|
29
|
-
DTSTAMP:20081227T181815
|
30
|
-
DESCRIPTION:Have a long lunch meeting and decide nothing...
|
31
|
-
SUMMARY:Meeting with the man.
|
32
|
-
END:VEVENT
|
33
|
-
END:VCALENDAR
|
data/test.ics
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
BEGIN:VCALENDAR
|
2
|
-
VERSION:2.0
|
3
|
-
CALSCALE:GREGORIAN
|
4
|
-
PRODID:iCalendar-Ruby
|
5
|
-
BEGIN:VTIMEZONE
|
6
|
-
TZID:America/Chicago
|
7
|
-
BEGIN:DAYLIGHT
|
8
|
-
TZOFFSETTO:-0500
|
9
|
-
RRULE:FREQ=YEARLY\;BYMONTH=3\;BYDAY=2SU
|
10
|
-
DTSTART:19700308TO20000
|
11
|
-
TZOFFSETFROM:-0600
|
12
|
-
TZNAME:CDT
|
13
|
-
END:DAYLIGHT
|
14
|
-
BEGIN:STANDARD
|
15
|
-
TZOFFSETTO:-0600
|
16
|
-
RRULE:YEARLY\;BYMONTH=11\;BYDAY=1SU
|
17
|
-
DTSTART:19701101T020000
|
18
|
-
TZOFFSETFROM:-0500
|
19
|
-
TZNAME:CST
|
20
|
-
END:STANDARD
|
21
|
-
END:VTIMEZONE
|
22
|
-
BEGIN:VEVENT
|
23
|
-
SEQUENCE:0
|
24
|
-
TZID:America/Chicago
|
25
|
-
CLASS:PRIVATE
|
26
|
-
DTEND;TZID=America/Chicago:20081229T110000
|
27
|
-
DTSTART;TZID=America/Chicago:20081229T080000
|
28
|
-
UID:2008-12-27T19:01:31-05:00_71550387@orac
|
29
|
-
DTSTAMP:20081227T190131
|
30
|
-
DESCRIPTION:Have a long lunch meeting and decide nothing...
|
31
|
-
SUMMARY:Meeting with the man.
|
32
|
-
END:VEVENT
|
33
|
-
END:VCALENDAR
|
data/test.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
require "rubygems"
|
3
|
-
require "icalendar"
|
4
|
-
include Icalendar
|
5
|
-
|
6
|
-
|
7
|
-
# Now, you can make timezones like this
|
8
|
-
cal = Calendar.new
|
9
|
-
cal.timezone do
|
10
|
-
timezone_id "America/Chicago"
|
11
|
-
x_lic_location "America/Chicago"
|
12
|
-
|
13
|
-
daylight do
|
14
|
-
timezone_offset_from "-0600"
|
15
|
-
timezone_offset_to "-0500"
|
16
|
-
timezone_name "CDT"
|
17
|
-
dtstart "19700308TO20000"
|
18
|
-
add_recurrence_rule "FREQ=YEARLY;BYMONTH=3;BYDAY=2SU"
|
19
|
-
end
|
20
|
-
|
21
|
-
standard do
|
22
|
-
timezone_offset_from "-0500"
|
23
|
-
timezone_offset_to "-0600"
|
24
|
-
timezone_name "CST"
|
25
|
-
dtstart "19701101T020000"
|
26
|
-
add_recurrence_rule "YEARLY;BYMONTH=11;BYDAY=1SU"
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
e = cal.event do
|
31
|
-
dtstart DateTime.new(2008, 12, 29, 8, 0, 0)
|
32
|
-
dtend DateTime.new(2008, 12, 29, 11, 0, 0)
|
33
|
-
summary "Meeting with the man."
|
34
|
-
description "Have a long lunch meeting and decide nothing..."
|
35
|
-
klass "PRIVATE"
|
36
|
-
end
|
37
|
-
|
38
|
-
|
39
|
-
e.dtstart = DateTime.new(2008, 12, 29, 8, 30)
|
40
|
-
e.dtend = DateTime.new(2008, 12, 29, 9, 30)
|
41
|
-
cal.events << e
|
42
|
-
|
43
|
-
|
44
|
-
#e.dtstart.ical_params = {"TZID" => "America/Chicago"}
|
45
|
-
#e.dtend.ical_params = {"TZID" => "America/Chicago"}
|
46
|
-
|
47
|
-
puts cal.to_ical
|
48
|
-
|
data/test2.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
#!/usr/bin/ruby
|
2
|
-
require "rubygems"
|
3
|
-
require "icalendar"
|
4
|
-
require "tzinfo"
|
5
|
-
require "icalendar/tzinfo"
|
6
|
-
include Icalendar
|
7
|
-
|
8
|
-
|
9
|
-
# Now, you can make timezones like this
|
10
|
-
tz = TZInfo::Timezone.get("America/Chicago")
|
11
|
-
|
12
|
-
cal = Calendar.new
|
13
|
-
|
14
|
-
cal.add(tz.ical_timezone(DateTime.now))
|
15
|
-
|
16
|
-
e = cal.event do
|
17
|
-
dtstart DateTime.new(2008, 12, 29, 8, 0, 0)
|
18
|
-
dtend DateTime.new(2008, 12, 29, 11, 0, 0)
|
19
|
-
summary "Meeting with the man."
|
20
|
-
description "Have a long lunch meeting and decide nothing..."
|
21
|
-
klass "PRIVATE"
|
22
|
-
end
|
23
|
-
|
24
|
-
#e.dtstart.ical_params = {"TZID" => "America/Chicago"}
|
25
|
-
#e.dtend.ical_params = {"TZID" => "America/Chicago"}
|
26
|
-
|
27
|
-
puts cal.to_ical
|
28
|
-
|