icalendar 1.1.1 → 1.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.
- 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/History.txt
ADDED
data/Manifest.txt
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
COPYING
|
|
2
|
+
GPL
|
|
3
|
+
History.txt
|
|
4
|
+
Manifest.txt
|
|
5
|
+
PostInstall.txt
|
|
6
|
+
README.rdoc
|
|
7
|
+
Rakefile
|
|
8
|
+
config/website.yml
|
|
9
|
+
examples/create_cal.rb
|
|
10
|
+
examples/parse_cal.rb
|
|
11
|
+
examples/single_event.ics
|
|
12
|
+
icalendar.gemspec
|
|
13
|
+
lib/hash_attrs.rb
|
|
14
|
+
lib/icalendar.rb
|
|
15
|
+
lib/icalendar/base.rb
|
|
16
|
+
lib/icalendar/calendar.rb
|
|
17
|
+
lib/icalendar/component.rb
|
|
18
|
+
lib/icalendar/component/alarm.rb
|
|
19
|
+
lib/icalendar/component/event.rb
|
|
20
|
+
lib/icalendar/component/freebusy.rb
|
|
21
|
+
lib/icalendar/component/journal.rb
|
|
22
|
+
lib/icalendar/component/timezone.rb
|
|
23
|
+
lib/icalendar/component/todo.rb
|
|
24
|
+
lib/icalendar/conversions.rb
|
|
25
|
+
lib/icalendar/conversions.rb.orig
|
|
26
|
+
lib/icalendar/helpers.rb
|
|
27
|
+
lib/icalendar/parameter.rb
|
|
28
|
+
lib/icalendar/parser.rb
|
|
29
|
+
lib/icalendar/rrule.rb
|
|
30
|
+
lib/icalendar/tzinfo.rb
|
|
31
|
+
lib/meta.rb
|
|
32
|
+
script/console
|
|
33
|
+
script/destroy
|
|
34
|
+
script/generate
|
|
35
|
+
script/recur1.ics
|
|
36
|
+
script/tryit.rb
|
|
37
|
+
script/txt2html
|
|
38
|
+
test.ical
|
|
39
|
+
test.ics
|
|
40
|
+
test.rb
|
|
41
|
+
test/component/test_event.rb
|
|
42
|
+
test/component/test_timezone.rb
|
|
43
|
+
test/component/test_todo.rb
|
|
44
|
+
test/fixtures/folding.ics
|
|
45
|
+
test/fixtures/life.ics
|
|
46
|
+
test/fixtures/simplecal.ics
|
|
47
|
+
test/fixtures/single_event.ics
|
|
48
|
+
test/interactive.rb
|
|
49
|
+
test/read_write.rb
|
|
50
|
+
test/test_calendar.rb
|
|
51
|
+
test/test_component.rb
|
|
52
|
+
test/test_conversions.rb
|
|
53
|
+
test/test_helper.rb
|
|
54
|
+
test/test_parameter.rb
|
|
55
|
+
test/test_parser.rb
|
|
56
|
+
test2.rb
|
|
57
|
+
website/index.html
|
|
58
|
+
website/index.txt
|
|
59
|
+
website/javascripts/rounded_corners_lite.inc.js
|
|
60
|
+
website/stylesheets/screen.css
|
|
61
|
+
website/template.html.erb
|
data/PostInstall.txt
ADDED
data/{README → README.rdoc}
RENAMED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
= iCalendar -- Internet calendaring, Ruby style
|
|
2
2
|
|
|
3
|
+
* http://github.com/sdague/icalendar
|
|
4
|
+
|
|
5
|
+
== DESCRIPTION
|
|
6
|
+
|
|
3
7
|
This is a Ruby library for dealing with iCalendar files. Rather than
|
|
4
8
|
explaining myself, here is the introduction from RFC-2445, which
|
|
5
9
|
defines the format:
|
data/Rakefile
CHANGED
|
@@ -1,133 +1,28 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
|
|
3
|
-
require '
|
|
4
|
-
require '
|
|
5
|
-
require '
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
# Add our created paths to the 'rake clobber' list
|
|
30
|
-
CLOBBER.include(rcov_test_output)
|
|
31
|
-
|
|
32
|
-
desc 'Removes all previous unit test coverage information'
|
|
33
|
-
task (:reset_unit_test_coverage) do |t|
|
|
34
|
-
rm_rf rcov_unit_test_output
|
|
35
|
-
mkdir rcov_unit_test_output
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
desc 'Run all unit tests with Rcov to measure coverage'
|
|
39
|
-
Rake::TestTask.new(:rcov) do |t|
|
|
40
|
-
t.libs << "test"
|
|
41
|
-
t.pattern = 'test/**/*_test.rb'
|
|
42
|
-
t.ruby_opts << rcov_path
|
|
43
|
-
t.ruby_opts << "-o #{rcov_test_output}"
|
|
44
|
-
t.ruby_opts << "-x #{rcov_exclude}"
|
|
45
|
-
t.verbose = true
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Generate the RDoc documentation
|
|
49
|
-
Rake::RDocTask.new(:doc) { |rdoc|
|
|
50
|
-
rdoc.main = 'README'
|
|
51
|
-
rdoc.rdoc_files.include('lib/**/*.rb', 'README')
|
|
52
|
-
rdoc.rdoc_files.include('GPL', 'COPYING')
|
|
53
|
-
rdoc.rdoc_dir = 'docs/api'
|
|
54
|
-
rdoc.title = "iCalendar -- Internet Calendaring for Ruby"
|
|
55
|
-
rdoc.options << "--include=examples --line-numbers --inline-source"
|
|
56
|
-
rdoc.options << "--accessor=ical_component,ical_property,ical_multi_property"
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
require 'rubygems'
|
|
60
|
-
require 'rubygems/gem_runner'
|
|
61
|
-
require 'rake/gempackagetask'
|
|
62
|
-
|
|
63
|
-
spec = Gem::Specification.new do |s|
|
|
64
|
-
s.name = "icalendar"
|
|
65
|
-
s.version = PKG_VERSION
|
|
66
|
-
s.homepage = "http://icalendar.rubyforge.org/"
|
|
67
|
-
s.platform = Gem::Platform::RUBY
|
|
68
|
-
s.summary = "A ruby implementation of the iCalendar specification (RFC-2445)."
|
|
69
|
-
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."
|
|
70
|
-
|
|
71
|
-
s.files = FileList["{test,lib,docs,examples}/**/*"].to_a
|
|
72
|
-
s.files += ["Rakefile", "README", "COPYING", "GPL" ]
|
|
73
|
-
s.require_path = "lib"
|
|
74
|
-
s.autorequire = "icalendar"
|
|
75
|
-
s.has_rdoc = true
|
|
76
|
-
s.extra_rdoc_files = ["README", "COPYING", "GPL"]
|
|
77
|
-
s.rdoc_options.concat ['--main', 'README']
|
|
78
|
-
|
|
79
|
-
s.author = "Sean Dague"
|
|
80
|
-
s.email = "sean@dague.net"
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
Rake::GemPackageTask.new(spec) do |pkg|
|
|
84
|
-
pkg.gem_spec = spec
|
|
85
|
-
pkg.need_tar = true
|
|
86
|
-
pkg.need_zip = true
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
desc "Upload Docs to RubyForge"
|
|
90
|
-
task :publish_docs => [:doc] do
|
|
91
|
-
publisher = Rake::SshDirPublisher.new(
|
|
92
|
-
"sdague@rubyforge.org",
|
|
93
|
-
"/var/www/gforge-projects/icalendar",
|
|
94
|
-
"docs/api"
|
|
95
|
-
)
|
|
96
|
-
publisher.upload
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
desc "Publish the release files to RubyForge."
|
|
100
|
-
task :release => [ :package, :publish_docs ] do
|
|
101
|
-
require 'rubyforge'
|
|
102
|
-
packages = %w( gem tgz zip ).collect{ |ext| "pkg/#{PKG_NAME}-#{PKG_VERSION}.#{ext}" }
|
|
103
|
-
rubyforge = RubyForge.new
|
|
104
|
-
rubyforge.configure
|
|
105
|
-
rubyforge.scrape_config
|
|
106
|
-
rubyforge.scrape_project(PKG_NAME)
|
|
107
|
-
rubyforge.add_release(540, PKG_NAME, "v#{PKG_VERSION}", *packages)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
desc 'Install the gem globally (requires sudo)'
|
|
111
|
-
task :install => :package do |t|
|
|
112
|
-
`sudo gem install pkg/icalendar-#{PKG_VERSION}.gem`
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
task :lines do
|
|
116
|
-
lines = 0
|
|
117
|
-
codelines = 0
|
|
118
|
-
Dir.foreach("lib/icalendar") { |file_name|
|
|
119
|
-
next unless file_name =~ /.*rb/
|
|
120
|
-
|
|
121
|
-
f = File.open("lib/icalendar/" + file_name)
|
|
122
|
-
|
|
123
|
-
while line = f.gets
|
|
124
|
-
lines += 1
|
|
125
|
-
next if line =~ /^\s*$/
|
|
126
|
-
next if line =~ /^\s*#/
|
|
127
|
-
codelines += 1
|
|
128
|
-
end
|
|
129
|
-
}
|
|
130
|
-
puts "\n------------------------------\n"
|
|
131
|
-
puts "Total Lines: #{lines}"
|
|
132
|
-
puts "Lines of Code: #{codelines}"
|
|
133
|
-
end
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
gem 'hoe', '>= 2.1.0'
|
|
3
|
+
require 'hoe'
|
|
4
|
+
require 'fileutils'
|
|
5
|
+
require './lib/icalendar'
|
|
6
|
+
|
|
7
|
+
ENV['VERSION'] = Icalendar::VERSION
|
|
8
|
+
|
|
9
|
+
Hoe.plugin :newgem
|
|
10
|
+
Hoe.plugin :website
|
|
11
|
+
# Hoe.plugin :cucumberfeatures
|
|
12
|
+
|
|
13
|
+
# Generate all the Rake tasks
|
|
14
|
+
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
|
15
|
+
$hoe = Hoe.spec 'icalendar' do
|
|
16
|
+
self.developer 'Sean Dague', 'sean@dague.net'
|
|
17
|
+
self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
|
|
18
|
+
self.rubyforge_name = self.name # TODO this is default value
|
|
19
|
+
# self.extra_deps = [['activesupport','>= 2.0.2']]
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
require 'newgem/tasks'
|
|
24
|
+
Dir['tasks/**/*.rake'].each { |t| load t }
|
|
25
|
+
|
|
26
|
+
# TODO - want other tests/tasks run by default? Add them to the list
|
|
27
|
+
# remove_task :default
|
|
28
|
+
# task :default => [:spec, :features]
|
data/config/website.yml
ADDED
data/icalendar.gemspec
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
Gem::Specification.new do |s|
|
|
2
|
+
s.name = "icalendar"
|
|
3
|
+
s.version = "1.1.1"
|
|
4
|
+
s.homepage = "http://icalendar.rubyforge.org/"
|
|
5
|
+
s.platform = Gem::Platform::RUBY
|
|
6
|
+
s.summary = "A ruby implementation of the iCalendar specification (RFC-2445)."
|
|
7
|
+
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
|
+
s.files = [
|
|
10
|
+
"test/calendar_test.rb", "test/parameter_test.rb",
|
|
11
|
+
"test/interactive.rb", "test/conversions_test.rb",
|
|
12
|
+
"test/component_test.rb", "test/parser_test.rb",
|
|
13
|
+
"test/read_write.rb", "test/fixtures",
|
|
14
|
+
"test/fixtures/single_event.ics",
|
|
15
|
+
"test/fixtures/folding.ics",
|
|
16
|
+
"test/fixtures/simplecal.ics",
|
|
17
|
+
"test/fixtures/life.ics", "test/component",
|
|
18
|
+
"test/component/timezone_test.rb",
|
|
19
|
+
"test/component/todo_test.rb",
|
|
20
|
+
"test/component/event_test.rb", "test/coverage",
|
|
21
|
+
"test/coverage/STUB", "lib/icalendar",
|
|
22
|
+
"lib/icalendar/parameter.rb",
|
|
23
|
+
"lib/icalendar/component.rb",
|
|
24
|
+
"lib/icalendar/base.rb", "lib/icalendar/parser.rb",
|
|
25
|
+
"lib/icalendar/calendar.rb",
|
|
26
|
+
"lib/icalendar/component",
|
|
27
|
+
"lib/icalendar/component/alarm.rb",
|
|
28
|
+
"lib/icalendar/component/todo.rb",
|
|
29
|
+
"lib/icalendar/component/event.rb",
|
|
30
|
+
"lib/icalendar/component/journal.rb",
|
|
31
|
+
"lib/icalendar/component/timezone.rb",
|
|
32
|
+
"lib/icalendar/component/freebusy.rb",
|
|
33
|
+
"lib/icalendar/conversions.rb",
|
|
34
|
+
"lib/icalendar/rrule.rb",
|
|
35
|
+
"lib/icalendar/tzinfo.rb",
|
|
36
|
+
"lib/icalendar/helpers.rb", "lib/meta.rb",
|
|
37
|
+
"lib/icalendar.rb", "lib/hash_attrs.rb", "docs/rfcs",
|
|
38
|
+
"docs/rfcs/rfc2446.pdf", "docs/rfcs/rfc2426.pdf",
|
|
39
|
+
"docs/rfcs/itip_notes.txt", "docs/rfcs/rfc2447.pdf",
|
|
40
|
+
"docs/rfcs/rfc2425.pdf", "docs/rfcs/rfc2445.pdf",
|
|
41
|
+
"docs/rfcs/rfc3283.txt", "docs/api", "docs/api/STUB",
|
|
42
|
+
"examples/single_event.ics", "examples/parse_cal.rb",
|
|
43
|
+
"examples/create_cal.rb"]
|
|
44
|
+
|
|
45
|
+
s.files += ["Rakefile", "README", "COPYING", "GPL" ]
|
|
46
|
+
s.require_path = "lib"
|
|
47
|
+
s.autorequire = "icalendar"
|
|
48
|
+
s.has_rdoc = true
|
|
49
|
+
s.extra_rdoc_files = ["README", "COPYING", "GPL"]
|
|
50
|
+
s.rdoc_options.concat ['--main', 'README']
|
|
51
|
+
|
|
52
|
+
s.author = "Sean Dague"
|
|
53
|
+
s.email = "sean@dague.net"
|
|
54
|
+
end
|
|
55
|
+
|
data/lib/icalendar/base.rb
CHANGED
data/lib/icalendar/component.rb
CHANGED
|
@@ -103,8 +103,8 @@ module Icalendar
|
|
|
103
103
|
def to_ical
|
|
104
104
|
print_component do
|
|
105
105
|
s = ""
|
|
106
|
-
@components.
|
|
107
|
-
comps.each { |component| s << component.to_ical }
|
|
106
|
+
@components.sort.each do |key, comps|
|
|
107
|
+
comps.sort.each { |component| s << component.to_ical }
|
|
108
108
|
end
|
|
109
109
|
s
|
|
110
110
|
end
|
|
@@ -129,7 +129,7 @@ module Icalendar
|
|
|
129
129
|
def print_properties
|
|
130
130
|
s = ""
|
|
131
131
|
|
|
132
|
-
@properties.each do |key,val|
|
|
132
|
+
@properties.sort.each do |key,val|
|
|
133
133
|
# Take out underscore for property names that conflicted
|
|
134
134
|
# with built-in words.
|
|
135
135
|
if key =~ /ip_.*/
|
|
@@ -145,13 +145,13 @@ module Icalendar
|
|
|
145
145
|
|
|
146
146
|
# Property value
|
|
147
147
|
value = ":#{val.to_ical}"
|
|
148
|
-
add_sliced_text(s,prelude+escape_chars(value))
|
|
148
|
+
add_sliced_text(s, prelude + escape_chars(value))
|
|
149
149
|
else
|
|
150
150
|
prelude = "#{key.gsub(/_/, '-').upcase}"
|
|
151
151
|
val.each do |v|
|
|
152
152
|
params = print_parameters(v)
|
|
153
153
|
value = ":#{v.to_ical}"
|
|
154
|
-
add_sliced_text(s,prelude + params + escape_chars(value))
|
|
154
|
+
add_sliced_text(s, prelude + params + escape_chars(value))
|
|
155
155
|
end
|
|
156
156
|
end
|
|
157
157
|
end
|
|
@@ -159,12 +159,14 @@ module Icalendar
|
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
def escape_chars(value)
|
|
162
|
-
value.gsub("\\", "\\\\").gsub("\n", "\\n").gsub(",", "\\,").gsub(";", "\\;")
|
|
162
|
+
v = value.gsub("\\", "\\\\").gsub("\n", "\\n").gsub(",", "\\,").gsub(";", "\\;")
|
|
163
|
+
return v
|
|
164
|
+
# return value
|
|
163
165
|
end
|
|
164
166
|
|
|
165
167
|
def add_sliced_text(add_to,escaped)
|
|
166
168
|
escaped = escaped.split('') # split is unicdoe-aware when `$KCODE = 'u'`
|
|
167
|
-
add_to << escaped.slice!(0,MAX_LINE_LENGTH).
|
|
169
|
+
add_to << escaped.slice!(0,MAX_LINE_LENGTH).join << "\r\n " while escaped.length != 0 # shift(MAX_LINE_LENGTH) does not work with ruby 1.8.6
|
|
168
170
|
add_to.gsub!(/ *$/, '')
|
|
169
171
|
end
|
|
170
172
|
|
data/script/console
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# File: script/console
|
|
3
|
+
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
|
4
|
+
|
|
5
|
+
libs = " -r irb/completion"
|
|
6
|
+
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
|
7
|
+
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
|
8
|
+
libs << " -r #{File.dirname(__FILE__) + '/../lib/icalendar.rb'}"
|
|
9
|
+
puts "Loading icalendar gem"
|
|
10
|
+
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
|
3
|
+
|
|
4
|
+
begin
|
|
5
|
+
require 'rubigen'
|
|
6
|
+
rescue LoadError
|
|
7
|
+
require 'rubygems'
|
|
8
|
+
require 'rubigen'
|
|
9
|
+
end
|
|
10
|
+
require 'rubigen/scripts/destroy'
|
|
11
|
+
|
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
|
14
|
+
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
|
3
|
+
|
|
4
|
+
begin
|
|
5
|
+
require 'rubigen'
|
|
6
|
+
rescue LoadError
|
|
7
|
+
require 'rubygems'
|
|
8
|
+
require 'rubigen'
|
|
9
|
+
end
|
|
10
|
+
require 'rubigen/scripts/generate'
|
|
11
|
+
|
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
|
14
|
+
RubiGen::Scripts::Generate.new.run(ARGV)
|
data/script/recur1.ics
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
BEGIN:VCALENDAR
|
|
2
|
+
METHOD:PUBLISH
|
|
3
|
+
X-WR-TIMEZONE:US/Eastern
|
|
4
|
+
PRODID:-//Apple Inc.//iCal 3.0//EN
|
|
5
|
+
CALSCALE:GREGORIAN
|
|
6
|
+
X-WR-CALNAME:recur1
|
|
7
|
+
VERSION:2.0
|
|
8
|
+
X-WR-RELCALID:9122B9C1-EE7E-479C-9567-DB9F075F1844
|
|
9
|
+
X-APPLE-CALENDAR-COLOR:#492BA1
|
|
10
|
+
BEGIN:VTIMEZONE
|
|
11
|
+
TZID:US/Eastern
|
|
12
|
+
BEGIN:DAYLIGHT
|
|
13
|
+
TZOFFSETFROM:-0500
|
|
14
|
+
TZOFFSETTO:-0400
|
|
15
|
+
DTSTART:20070311T020000
|
|
16
|
+
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
|
|
17
|
+
TZNAME:EDT
|
|
18
|
+
END:DAYLIGHT
|
|
19
|
+
BEGIN:STANDARD
|
|
20
|
+
TZOFFSETFROM:-0400
|
|
21
|
+
TZOFFSETTO:-0500
|
|
22
|
+
DTSTART:20071104T020000
|
|
23
|
+
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
|
|
24
|
+
TZNAME:EST
|
|
25
|
+
END:STANDARD
|
|
26
|
+
END:VTIMEZONE
|
|
27
|
+
BEGIN:VEVENT
|
|
28
|
+
SEQUENCE:8
|
|
29
|
+
TRANSP:OPAQUE
|
|
30
|
+
UID:59B21F50-301E-457D-B57E-78EDE83987E0
|
|
31
|
+
DTSTART;TZID=US/Eastern:20080908T100000
|
|
32
|
+
DTSTAMP:20081016T174123Z
|
|
33
|
+
SUMMARY:Recurring Event
|
|
34
|
+
CREATED:20081016T174021Z
|
|
35
|
+
DTEND;TZID=US/Eastern:20080908T110000
|
|
36
|
+
RRULE:FREQ=DAILY;INTERVAL=2;UNTIL=20080915T035959Z
|
|
37
|
+
END:VEVENT
|
|
38
|
+
END:VCALENDAR
|