icalendar 1.1.1 → 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +3 -0
- data/Manifest.txt +61 -0
- data/PostInstall.txt +5 -0
- data/{README → README.rdoc} +4 -0
- data/Rakefile +28 -133
- data/config/website.yml +2 -0
- data/icalendar.gemspec +55 -0
- data/lib/icalendar/base.rb +2 -0
- data/lib/icalendar/component.rb +9 -7
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/recur1.ics +38 -0
- data/script/tryit.rb +13 -0
- data/script/txt2html +71 -0
- data/test.ical +33 -0
- data/test.ics +33 -0
- data/test.rb +48 -0
- data/test/component/{event_test.rb → test_event.rb} +0 -0
- data/test/component/{timezone_test.rb → test_timezone.rb} +1 -1
- data/test/component/{todo_test.rb → test_todo.rb} +0 -0
- data/test/fixtures/folding.ics +7 -7
- data/test/{calendar_test.rb → test_calendar.rb} +1 -4
- data/test/{component_test.rb → test_component.rb} +0 -0
- data/test/{conversions_test.rb → test_conversions.rb} +8 -8
- data/test/test_helper.rb +3 -0
- data/test/{parameter_test.rb → test_parameter.rb} +4 -0
- data/test/{parser_test.rb → test_parser.rb} +0 -0
- data/test2.rb +28 -0
- data/website/index.html +11 -0
- data/website/index.txt +79 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +159 -0
- data/website/template.html.erb +50 -0
- metadata +135 -135
- data/docs/api/classes/Array.html +0 -155
- data/docs/api/classes/Bignum.html +0 -148
- data/docs/api/classes/Date.html +0 -172
- data/docs/api/classes/DateTime.html +0 -200
- data/docs/api/classes/Fixnum.html +0 -148
- data/docs/api/classes/Float.html +0 -148
- data/docs/api/classes/HashAttrs.html +0 -212
- data/docs/api/classes/Icalendar/Alarm.html +0 -228
- data/docs/api/classes/Icalendar/Base.html +0 -179
- data/docs/api/classes/Icalendar/Calendar.html +0 -504
- data/docs/api/classes/Icalendar/Component.html +0 -853
- data/docs/api/classes/Icalendar/DateProp.html +0 -187
- data/docs/api/classes/Icalendar/DateProp/ClassMethods.html +0 -195
- data/docs/api/classes/Icalendar/Daylight.html +0 -156
- data/docs/api/classes/Icalendar/Event.html +0 -671
- data/docs/api/classes/Icalendar/Freebusy.html +0 -266
- data/docs/api/classes/Icalendar/Geo.html +0 -211
- data/docs/api/classes/Icalendar/InvalidPropertyValue.html +0 -117
- data/docs/api/classes/Icalendar/Journal.html +0 -443
- data/docs/api/classes/Icalendar/Parameter.html +0 -166
- data/docs/api/classes/Icalendar/Parser.html +0 -352
- data/docs/api/classes/Icalendar/RRule.html +0 -428
- data/docs/api/classes/Icalendar/RRule/Weekday.html +0 -199
- data/docs/api/classes/Icalendar/Standard.html +0 -156
- data/docs/api/classes/Icalendar/Timezone.html +0 -450
- data/docs/api/classes/Icalendar/Todo.html +0 -480
- data/docs/api/classes/Icalendar/TzidSupport.html +0 -118
- data/docs/api/classes/Icalendar/UnknownComponentClass.html +0 -117
- data/docs/api/classes/Icalendar/UnknownPropertyMethod.html +0 -117
- data/docs/api/classes/Object.html +0 -272
- data/docs/api/classes/String.html +0 -148
- data/docs/api/classes/TZInfo.html +0 -119
- data/docs/api/classes/TZInfo/Timezone.html +0 -153
- data/docs/api/classes/TZInfo/TimezonePeriod.html +0 -200
- data/docs/api/classes/TZInfo/TimezoneTransitionInfo.html +0 -229
- data/docs/api/classes/Time.html +0 -180
- data/docs/api/classes/URI.html +0 -111
- data/docs/api/classes/URI/Generic.html +0 -148
- data/docs/api/created.rid +0 -1
- data/docs/api/files/COPYING.html +0 -163
- data/docs/api/files/GPL.html +0 -531
- data/docs/api/files/README.html +0 -401
- data/docs/api/files/lib/hash_attrs_rb.html +0 -107
- data/docs/api/files/lib/icalendar/base_rb.html +0 -108
- data/docs/api/files/lib/icalendar/calendar_rb.html +0 -101
- data/docs/api/files/lib/icalendar/component/alarm_rb.html +0 -101
- data/docs/api/files/lib/icalendar/component/event_rb.html +0 -101
- data/docs/api/files/lib/icalendar/component/freebusy_rb.html +0 -101
- data/docs/api/files/lib/icalendar/component/journal_rb.html +0 -101
- data/docs/api/files/lib/icalendar/component/timezone_rb.html +0 -101
- data/docs/api/files/lib/icalendar/component/todo_rb.html +0 -101
- data/docs/api/files/lib/icalendar/component_rb.html +0 -108
- data/docs/api/files/lib/icalendar/conversions_rb.html +0 -109
- data/docs/api/files/lib/icalendar/helpers_rb.html +0 -101
- data/docs/api/files/lib/icalendar/parameter_rb.html +0 -101
- data/docs/api/files/lib/icalendar/parser_rb.html +0 -110
- data/docs/api/files/lib/icalendar/rrule_rb.html +0 -110
- data/docs/api/files/lib/icalendar/tzinfo_rb.html +0 -101
- data/docs/api/files/lib/icalendar_rb.html +0 -121
- data/docs/api/files/lib/meta_rb.html +0 -107
- data/docs/api/fr_class_index.html +0 -64
- data/docs/api/fr_file_index.html +0 -47
- data/docs/api/fr_method_index.html +0 -123
- data/docs/api/index.html +0 -24
- data/docs/api/rdoc-style.css +0 -208
- data/docs/rfcs/itip_notes.txt +0 -69
- data/docs/rfcs/rfc2425.pdf +0 -0
- data/docs/rfcs/rfc2426.pdf +0 -0
- data/docs/rfcs/rfc2445.pdf +0 -0
- data/docs/rfcs/rfc2446.pdf +0 -0
- data/docs/rfcs/rfc2447.pdf +0 -0
- data/docs/rfcs/rfc3283.txt +0 -738
- data/test/coverage/STUB +0 -0
- data/test/coverage/index.html +0 -272
- data/test/coverage/lib-hash_attrs_rb.html +0 -235
- data/test/coverage/lib-icalendar-base_rb.html +0 -249
- data/test/coverage/lib-icalendar-calendar_rb.html +0 -324
- data/test/coverage/lib-icalendar-component-alarm_rb.html +0 -250
- data/test/coverage/lib-icalendar-component-event_rb.html +0 -353
- data/test/coverage/lib-icalendar-component-freebusy_rb.html +0 -245
- data/test/coverage/lib-icalendar-component-journal_rb.html +0 -278
- data/test/coverage/lib-icalendar-component-timezone_rb.html +0 -326
- data/test/coverage/lib-icalendar-component-todo_rb.html +0 -277
- data/test/coverage/lib-icalendar-component_rb.html +0 -733
- data/test/coverage/lib-icalendar-conversions_rb.html +0 -358
- data/test/coverage/lib-icalendar-parser_rb.html +0 -671
- data/test/coverage/lib-icalendar-rrule_rb.html +0 -357
- data/test/coverage/lib-icalendar_rb.html +0 -243
- data/test/coverage/lib-meta_rb.html +0 -234
data/script/tryit.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
2
|
+
|
3
|
+
require 'icalendar'
|
4
|
+
|
5
|
+
require 'date'
|
6
|
+
cal = nil
|
7
|
+
|
8
|
+
File.open(File.expand_path(File.dirname(__FILE__) + '/recur1.ics')) do |file|
|
9
|
+
cal = Icalendar.parse(file).first
|
10
|
+
end
|
11
|
+
event = cal.events.first
|
12
|
+
debugger
|
13
|
+
puts event.to_ical
|
data/script/txt2html
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
load File.dirname(__FILE__) + "/../Rakefile"
|
4
|
+
require 'rubyforge'
|
5
|
+
require 'redcloth'
|
6
|
+
require 'syntax/convertors/html'
|
7
|
+
require 'erb'
|
8
|
+
|
9
|
+
download = "http://rubyforge.org/projects/#{$hoe.rubyforge_name}"
|
10
|
+
version = $hoe.version
|
11
|
+
|
12
|
+
def rubyforge_project_id
|
13
|
+
RubyForge.new.configure.autoconfig["group_ids"][$hoe.rubyforge_name]
|
14
|
+
end
|
15
|
+
|
16
|
+
class Fixnum
|
17
|
+
def ordinal
|
18
|
+
# teens
|
19
|
+
return 'th' if (10..19).include?(self % 100)
|
20
|
+
# others
|
21
|
+
case self % 10
|
22
|
+
when 1: return 'st'
|
23
|
+
when 2: return 'nd'
|
24
|
+
when 3: return 'rd'
|
25
|
+
else return 'th'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class Time
|
31
|
+
def pretty
|
32
|
+
return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def convert_syntax(syntax, source)
|
37
|
+
return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
|
38
|
+
end
|
39
|
+
|
40
|
+
if ARGV.length >= 1
|
41
|
+
src, template = ARGV
|
42
|
+
template ||= File.join(File.dirname(__FILE__), '/../website/template.html.erb')
|
43
|
+
else
|
44
|
+
puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
|
45
|
+
exit!
|
46
|
+
end
|
47
|
+
|
48
|
+
template = ERB.new(File.open(template).read)
|
49
|
+
|
50
|
+
title = nil
|
51
|
+
body = nil
|
52
|
+
File.open(src) do |fsrc|
|
53
|
+
title_text = fsrc.readline
|
54
|
+
body_text_template = fsrc.read
|
55
|
+
body_text = ERB.new(body_text_template).result(binding)
|
56
|
+
syntax_items = []
|
57
|
+
body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
|
58
|
+
ident = syntax_items.length
|
59
|
+
element, syntax, source = $1, $2, $3
|
60
|
+
syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
|
61
|
+
"syntax-temp-#{ident}"
|
62
|
+
}
|
63
|
+
title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
|
64
|
+
body = RedCloth.new(body_text).to_html
|
65
|
+
body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
|
66
|
+
end
|
67
|
+
stat = File.stat(src)
|
68
|
+
created = stat.ctime
|
69
|
+
modified = stat.mtime
|
70
|
+
|
71
|
+
$stdout << template.result(binding)
|
data/test.ical
ADDED
@@ -0,0 +1,33 @@
|
|
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
ADDED
@@ -0,0 +1,33 @@
|
|
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
ADDED
@@ -0,0 +1,48 @@
|
|
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
|
+
|
File without changes
|
@@ -9,7 +9,7 @@ class TestTimezone < Test::Unit::TestCase
|
|
9
9
|
def setup
|
10
10
|
@cal = Icalendar::Calendar.new
|
11
11
|
# Define a test timezone
|
12
|
-
@testTimezone = %Q(BEGIN:VTIMEZONE\r\nTZID:America/Chicago\r\nBEGIN:STANDARD\r\
|
12
|
+
@testTimezone = %Q(BEGIN:VTIMEZONE\r\nTZID:America/Chicago\r\nBEGIN:STANDARD\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY\\;BYMONTH=11\\;BYDAY=1SU\r\nTZNAME:CST\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0600\r\nEND:STANDARD\r\nBEGIN:DAYLIGHT\r\nDTSTART:19700308TO20000\r\nRRULE:FREQ=YEARLY\\;BYMONTH=3\\;BYDAY=2SU\r\nTZNAME:CDT\r\nTZOFFSETFROM:-0600\r\nTZOFFSETTO:-0500\r\nEND:DAYLIGHT\r\nEND:VTIMEZONE\r\n)
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_new
|
File without changes
|
data/test/fixtures/folding.ics
CHANGED
@@ -1,15 +1,9 @@
|
|
1
1
|
BEGIN:VCALENDAR
|
2
|
-
VERSION:2.0
|
3
2
|
CALSCALE:GREGORIAN
|
4
3
|
PRODID:iCalendar-Ruby
|
4
|
+
VERSION:2.0
|
5
5
|
X-WR-CALNAME:Test Long Description
|
6
6
|
BEGIN:VEVENT
|
7
|
-
SEQUENCE:1001
|
8
|
-
DTEND:20061215T180000
|
9
|
-
URL:http://test.com/events/644
|
10
|
-
DTSTART:20061215T160000
|
11
|
-
UID:foobar
|
12
|
-
DTSTAMP:20061215T114034
|
13
7
|
DESCRIPTION:FULL DETAILS:\nhttp://test.com/events/570\n\nCary Brothers walk
|
14
8
|
s the same musical ground as Pete Yorn\, Nick Drake\, Jeff Buckley and othe
|
15
9
|
rs\; crafting emotional melodies\, with strong vocals and thoughtful lyrics
|
@@ -18,6 +12,12 @@ DESCRIPTION:FULL DETAILS:\nhttp://test.com/events/570\n\nCary Brothers walk
|
|
18
12
|
lyrical beauty rare in a young songwriter\,"\; and "\;this soulful
|
19
13
|
blend of everything that feels good."\; Rising up around him is music\;
|
20
14
|
transcending genres\, genders and generations.
|
15
|
+
DTEND:20061215T180000
|
16
|
+
DTSTAMP:20061215T114034
|
17
|
+
DTSTART:20061215T160000
|
18
|
+
SEQUENCE:1001
|
21
19
|
SUMMARY:DigiWorld 2006
|
20
|
+
UID:foobar
|
21
|
+
URL:http://test.com/events/644
|
22
22
|
END:VEVENT
|
23
23
|
END:VCALENDAR
|
File without changes
|
@@ -10,20 +10,20 @@ class TestConversions < Test::Unit::TestCase
|
|
10
10
|
|
11
11
|
RESULT = <<EOS
|
12
12
|
BEGIN:VCALENDAR
|
13
|
-
VERSION:2.0
|
14
13
|
CALSCALE:GREGORIAN
|
15
14
|
PRODID:iCalendar-Ruby
|
15
|
+
VERSION:2.0
|
16
16
|
BEGIN:VEVENT
|
17
|
-
SEQUENCE:2
|
18
|
-
ORGANIZER:mailto:joe@example.com?subject=Ruby
|
19
|
-
DTSTART:20060720
|
20
|
-
UID:foobar
|
21
|
-
X-TIME-OF-DAY:101736
|
22
|
-
GEO:46.01\\;8.57
|
23
|
-
DTSTAMP:20060720T174052
|
24
17
|
CATEGORIES:foo\\,bar\\,baz
|
25
18
|
DESCRIPTION:desc
|
19
|
+
DTSTAMP:20060720T174052
|
20
|
+
DTSTART:20060720
|
21
|
+
GEO:46.01\\;8.57
|
26
22
|
LAST-MODIFIED:19960817T133000
|
23
|
+
ORGANIZER:mailto:joe@example.com?subject=Ruby
|
24
|
+
SEQUENCE:2
|
25
|
+
UID:foobar
|
26
|
+
X-TIME-OF-DAY:101736
|
27
27
|
END:VEVENT
|
28
28
|
END:VCALENDAR
|
29
29
|
EOS
|
data/test/test_helper.rb
ADDED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Test out property parameter functionality
|
2
2
|
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
3
3
|
|
4
|
+
require 'pp'
|
4
5
|
require 'date'
|
5
6
|
require 'test/unit'
|
6
7
|
require 'icalendar'
|
@@ -15,14 +16,17 @@ class TestComponent < Test::Unit::TestCase
|
|
15
16
|
|
16
17
|
def test_property_parameters
|
17
18
|
params = {"ALTREP" =>['"http://my.language.net"'], "LANGUAGE" => ["SPANISH"]}
|
19
|
+
# params = {"ALTREP" =>["foo"], "LANGUAGE" => ["SPANISH"]}
|
18
20
|
@event.summary("This is a test summary.", params)
|
19
21
|
|
20
22
|
assert_equal params, @event.summary.ical_params
|
21
23
|
|
22
24
|
@cal.add_event @event
|
23
25
|
cal_str = @cal.to_ical
|
26
|
+
puts cal_str
|
24
27
|
|
25
28
|
cals = Icalendar::Parser.new(cal_str).parse
|
29
|
+
pp cals
|
26
30
|
event = cals.first.events.first
|
27
31
|
assert_equal params, event.summary.ical_params
|
28
32
|
end
|
File without changes
|
data/test2.rb
ADDED
@@ -0,0 +1,28 @@
|
|
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
|
+
|
data/website/index.html
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
4
|
+
<title>icalendar</title>
|
5
|
+
|
6
|
+
</head>
|
7
|
+
<body id="body">
|
8
|
+
<p>This page has not yet been created for RubyGem <code>icalendar</code></p>
|
9
|
+
<p>To the developer: To generate it, update website/index.txt and run the rake task <code>website</code> to generate this <code>index.html</code> file.</p>
|
10
|
+
</body>
|
11
|
+
</html>
|
data/website/index.txt
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
h1. icalendar
|
2
|
+
|
3
|
+
|
4
|
+
h2. What
|
5
|
+
|
6
|
+
|
7
|
+
h2. Installing
|
8
|
+
|
9
|
+
<pre syntax="ruby">sudo gem install icalendar</pre>
|
10
|
+
|
11
|
+
h2. The basics
|
12
|
+
|
13
|
+
|
14
|
+
h2. Demonstration of usage
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
h2. Forum
|
19
|
+
|
20
|
+
"http://groups.google.com/group/icalendar":http://groups.google.com/group/icalendar
|
21
|
+
|
22
|
+
TODO - create Google Group - icalendar
|
23
|
+
|
24
|
+
h2. How to submit patches
|
25
|
+
|
26
|
+
Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
|
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:
|
35
|
+
|
36
|
+
<% if rubyforge_project_id %>
|
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
|
56
|
+
|
57
|
+
<pre>git clone git://github.com/sdague/icalendar.git</pre>
|
58
|
+
|
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
|
+
h3. Build and test instructions
|
66
|
+
|
67
|
+
<pre>cd icalendar
|
68
|
+
rake test
|
69
|
+
rake install_gem</pre>
|
70
|
+
|
71
|
+
|
72
|
+
h2. License
|
73
|
+
|
74
|
+
This code is free to use under the terms of the MIT license.
|
75
|
+
|
76
|
+
h2. Contact
|
77
|
+
|
78
|
+
Comments are welcome. Send an email to "FIXME full name":mailto:FIXME email via the "forum":http://groups.google.com/group/icalendar
|
79
|
+
|