mumboe-vpim 0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +510 -0
- data/COPYING +58 -0
- data/README +185 -0
- data/lib/vpim/address.rb +219 -0
- data/lib/vpim/agent/atomize.rb +104 -0
- data/lib/vpim/agent/base.rb +73 -0
- data/lib/vpim/agent/calendars.rb +173 -0
- data/lib/vpim/agent/handler.rb +26 -0
- data/lib/vpim/agent/ics.rb +161 -0
- data/lib/vpim/attachment.rb +102 -0
- data/lib/vpim/date.rb +222 -0
- data/lib/vpim/dirinfo.rb +277 -0
- data/lib/vpim/duration.rb +119 -0
- data/lib/vpim/enumerator.rb +32 -0
- data/lib/vpim/field.rb +614 -0
- data/lib/vpim/icalendar.rb +384 -0
- data/lib/vpim/maker/vcard.rb +16 -0
- data/lib/vpim/property/base.rb +193 -0
- data/lib/vpim/property/common.rb +315 -0
- data/lib/vpim/property/location.rb +38 -0
- data/lib/vpim/property/priority.rb +43 -0
- data/lib/vpim/property/recurrence.rb +69 -0
- data/lib/vpim/property/resources.rb +24 -0
- data/lib/vpim/repo.rb +261 -0
- data/lib/vpim/rfc2425.rb +367 -0
- data/lib/vpim/rrule.rb +591 -0
- data/lib/vpim/time.rb +40 -0
- data/lib/vpim/vcard.rb +1456 -0
- data/lib/vpim/version.rb +18 -0
- data/lib/vpim/vevent.rb +187 -0
- data/lib/vpim/view.rb +90 -0
- data/lib/vpim/vjournal.rb +58 -0
- data/lib/vpim/vpim.rb +65 -0
- data/lib/vpim/vtodo.rb +103 -0
- data/lib/vpim.rb +13 -0
- data/samples/README.mutt +93 -0
- data/samples/ab-query.rb +57 -0
- data/samples/agent.ru +10 -0
- data/samples/cmd-itip.rb +156 -0
- data/samples/ex_cpvcard.rb +55 -0
- data/samples/ex_get_vcard_photo.rb +22 -0
- data/samples/ex_mkv21vcard.rb +34 -0
- data/samples/ex_mkvcard.rb +64 -0
- data/samples/ex_mkyourown.rb +29 -0
- data/samples/ics-dump.rb +210 -0
- data/samples/ics-to-rss.rb +84 -0
- data/samples/mutt-aliases-to-vcf.rb +45 -0
- data/samples/osx-wrappers.rb +86 -0
- data/samples/reminder.rb +209 -0
- data/samples/rrule.rb +71 -0
- data/samples/tabbed-file-to-vcf.rb +390 -0
- data/samples/vcf-dump.rb +86 -0
- data/samples/vcf-lines.rb +61 -0
- data/samples/vcf-to-ics.rb +22 -0
- data/samples/vcf-to-mutt.rb +121 -0
- data/test/test_agent_atomize.rb +84 -0
- data/test/test_agent_calendars.rb +128 -0
- data/test/test_agent_ics.rb +96 -0
- data/test/test_all.rb +17 -0
- data/test/test_date.rb +120 -0
- data/test/test_dur.rb +41 -0
- data/test/test_field.rb +156 -0
- data/test/test_ical.rb +437 -0
- data/test/test_misc.rb +13 -0
- data/test/test_repo.rb +129 -0
- data/test/test_rrule.rb +1030 -0
- data/test/test_vcard.rb +973 -0
- data/test/test_view.rb +79 -0
- metadata +140 -0
data/CHANGES
ADDED
@@ -0,0 +1,510 @@
|
|
1
|
+
0.695 - 2009-03-01
|
2
|
+
|
3
|
+
- Alpha versions of vPim agent (http://agent.octetcloud.com)
|
4
|
+
- Fixed: reminder app had drifted out of sync with API change
|
5
|
+
|
6
|
+
|
7
|
+
0.657 - 2008-08-14
|
8
|
+
|
9
|
+
- Date#to_time renamed to Date#vpim_to_time. Apparently Rails also patches the core.
|
10
|
+
|
11
|
+
- Debian doesn't like RFCs. I think there is a problem with the DFG, not the
|
12
|
+
IETF. The value of a standard is that it can't be modified (if anybody could
|
13
|
+
publish a modified version of an RFC without restriction chaos would ensue).
|
14
|
+
Still, we lost that argument, and I'll try and help packagers out.
|
15
|
+
|
16
|
+
- View, gives various views of calendars. Experimental.
|
17
|
+
|
18
|
+
- Fixed doc comment refs to common Property module.
|
19
|
+
|
20
|
+
- Vtodo#duration and #due now work correctly (the missing one will be calculated
|
21
|
+
from the other).
|
22
|
+
|
23
|
+
- Vevent::Maker#add_rrule, #set_rrule are new, using Rrule::Maker.
|
24
|
+
|
25
|
+
- There is now (half-of) an Rrule::Maker class to help construct RRULE values.
|
26
|
+
|
27
|
+
- Vjournal can be encoded now (it was broken).
|
28
|
+
|
29
|
+
- Better code coverage by the tests.
|
30
|
+
|
31
|
+
- Recurrence#occurrences now returns an Enumerator instead of an Rrule. Both
|
32
|
+
have #each, and both yield the same thing, so that isn't an API change. However,
|
33
|
+
Rrule had an each_until, and the Enumerator doesn't. Use the dountil argument
|
34
|
+
to #occurrences to get the same effect. The asymetry of this API caused me
|
35
|
+
(non-aesthetic) trouble, now Rrule is an internal implementation detail.
|
36
|
+
Also, this would have had to change eventually, because occurrences need to
|
37
|
+
be the union of multiple RRULE and RDATE fields.
|
38
|
+
|
39
|
+
- Recurrence#rrule, returns an Rrule for the first RRULE field. Can be used
|
40
|
+
as transition.
|
41
|
+
|
42
|
+
- Icalendar#calscale was broken, and is now unit tested, along with #version
|
43
|
+
and #protocol?.
|
44
|
+
|
45
|
+
- Icalendar#{each,events,todos,journals} all yield components, or return an
|
46
|
+
enumerator.
|
47
|
+
|
48
|
+
- Icalendar is enumerable.
|
49
|
+
|
50
|
+
- Repo and Repo::Calendar are enumerable.
|
51
|
+
|
52
|
+
- #occurrences will call Rrule#each if a block is provided
|
53
|
+
|
54
|
+
- Recurrence rules with DTSTART in UTC will now sortof work (thanks to Max
|
55
|
+
Werner for providing the patch).
|
56
|
+
|
57
|
+
- Added convenience methods for setting and getting title and org fiels (thanks
|
58
|
+
to Jade Meskill for providing the patch).
|
59
|
+
|
60
|
+
- Modified Icalendar#create2 so only prodid can be supplied and cal is yielded
|
61
|
+
so events/etc. can be pushed.
|
62
|
+
|
63
|
+
- Support Highrisehq.com's broken google talk field (see test_vcard.rb for
|
64
|
+
examples, thanks to Terry Tong for reporting).
|
65
|
+
|
66
|
+
|
67
|
+
0.619 - 2008-03-30
|
68
|
+
|
69
|
+
- Fixed some problems with rescue statements not being specific enough.
|
70
|
+
|
71
|
+
- Vcard#birthday may now return a DateTime.
|
72
|
+
|
73
|
+
- Added Vcard#urls
|
74
|
+
|
75
|
+
- Fixed a mispelled Uri in Vcard#url
|
76
|
+
|
77
|
+
- Global fix of misspellings of "occurrence"
|
78
|
+
|
79
|
+
- KAddressBook compatibility fix - allow / in field names, even though it is
|
80
|
+
illegal in vCard 3.0.
|
81
|
+
|
82
|
+
|
83
|
+
0.604 - 2008-03-13
|
84
|
+
|
85
|
+
- Fixed a bug with lower-case UTF-16 encoded cards not being detected properly.
|
86
|
+
|
87
|
+
- Skip over invalidly encoded vCard fields when enumerating them.
|
88
|
+
|
89
|
+
|
90
|
+
0.602 - 2008-03-12
|
91
|
+
|
92
|
+
- Updated reminder utility to work with iCal 3.
|
93
|
+
|
94
|
+
- Reworked gem to include tests, samples, and binaries.
|
95
|
+
|
96
|
+
|
97
|
+
0.597 - 2008-03-01
|
98
|
+
|
99
|
+
- Support for BYSETPOS in recurrence rules (development supported by ZipDX.com)
|
100
|
+
|
101
|
+
- Support for FREQ=weekly in recurrence rules (development supported by ZipDX.com)
|
102
|
+
|
103
|
+
- Fixed an encode_text() bug (patch supplied by Jan Becvar)
|
104
|
+
|
105
|
+
- Fixed problem with interaction between BYMONTH and BYDAY (patch supplied by
|
106
|
+
Sam Stephenson of 32signals.com)
|
107
|
+
|
108
|
+
- Vevent::Maker - Started adding high-level iCalendar encoding APIs
|
109
|
+
|
110
|
+
- Vpim::Vcard::Maker - the vCard maker is moved here
|
111
|
+
|
112
|
+
- Vpim::Maker - deprecated
|
113
|
+
|
114
|
+
- Vcard::make, Maker::Vcard#delete_if - new
|
115
|
+
|
116
|
+
- Vcard::Maker#add_name - deprecate, see Vcard::Maker#name
|
117
|
+
|
118
|
+
- Vcard::Maker#fullname= - deprecate, see Vcard::Maker#name
|
119
|
+
|
120
|
+
- Added high-level vCard decoding API.
|
121
|
+
|
122
|
+
- Beginning to depend on ruby1.8. I'm willing to try for backwards compat if I
|
123
|
+
get feedback that this causes difficulties.
|
124
|
+
|
125
|
+
- Icalendar#components - new
|
126
|
+
|
127
|
+
- Icalendar#vevents - deprecated, see Icalendar#components
|
128
|
+
|
129
|
+
- split Vtodo and Vjournal into own files
|
130
|
+
|
131
|
+
- Added Recurrence module to Vtodo and Vjournal
|
132
|
+
|
133
|
+
- Property::Common#sequence - new
|
134
|
+
|
135
|
+
- Property::Common#attachments - new
|
136
|
+
|
137
|
+
- Icalendar::Attachment - new
|
138
|
+
|
139
|
+
- Maker::Vcard#add_url - new
|
140
|
+
|
141
|
+
- ex_mkyourown.rb - new example
|
142
|
+
|
143
|
+
- Modularized the component property accessor methods, and added lots of
|
144
|
+
Icalendar property support for Vevent, Vtodo, and Vjournal.
|
145
|
+
|
146
|
+
- Fixed support for TEXT decoding.
|
147
|
+
|
148
|
+
- Use Subversion revision as release sub-version.
|
149
|
+
|
150
|
+
- It appears that a top-level vpim.rb that requires everything else is needed
|
151
|
+
for ruby-gems, gemspec seems to work now.
|
152
|
+
|
153
|
+
- Don't package backup files (.../*.rb~).
|
154
|
+
|
155
|
+
- Icalendar decoding optimizations. Icalendar.decode is about twice as fast
|
156
|
+
now, and more optimizations are scheduled.
|
157
|
+
|
158
|
+
- Continue the move to using uppercase for all syntactic elements that can be
|
159
|
+
mixed case. The API might eventually allow only uppercase, it appears
|
160
|
+
case-insensitive comparisons still have a noticeable effect on performance.
|
161
|
+
|
162
|
+
|
163
|
+
0.17 - 2006-03-08
|
164
|
+
|
165
|
+
- DirectoryInfo#delete - new
|
166
|
+
|
167
|
+
- Maker::Vcard#fullname - new
|
168
|
+
|
169
|
+
- Provide an example of how to create, copy, and modify version 2.1 vCards.
|
170
|
+
|
171
|
+
- Maker::Vcard.make2 - new
|
172
|
+
|
173
|
+
- Maker::Vcard.make - deprecated
|
174
|
+
|
175
|
+
- Profiled decoding of a huge iCalendar file. Performance appears to be
|
176
|
+
dominated by overhead of String#downcase (20% of time spent in Field#name?).
|
177
|
+
Keeping the field group, field name, and field's parameter's names internally
|
178
|
+
in uppercase and using ruby 1.8's String#casecmp? is a first attempt at
|
179
|
+
optimization. This is a change in the default case returned, but it aligns
|
180
|
+
with the RFC and common usage.
|
181
|
+
|
182
|
+
- Maker::Vcard.make - full_name is now optional, it will be derived from name/N:
|
183
|
+
|
184
|
+
- Maker::Vcard#add_field - better argument checking
|
185
|
+
|
186
|
+
- Maker::Vcard#copy - new
|
187
|
+
|
188
|
+
- Vcard#[] - now limits return to fields with values
|
189
|
+
|
190
|
+
- Vcard#name - new
|
191
|
+
|
192
|
+
- Vcard::Name - new
|
193
|
+
|
194
|
+
- Vcard#nicknames - new
|
195
|
+
|
196
|
+
- Field#params and Field#param - deprecated and undocumented, I could never
|
197
|
+
remember the difference
|
198
|
+
|
199
|
+
- Field#pnames - new
|
200
|
+
|
201
|
+
- Field#pvalues - new
|
202
|
+
|
203
|
+
- Methods.casecmp? - new
|
204
|
+
|
205
|
+
- Field#pref= - new
|
206
|
+
|
207
|
+
- Field#pvalue_idel - new
|
208
|
+
|
209
|
+
- Field#pvalue_iadd - new
|
210
|
+
|
211
|
+
|
212
|
+
0.16 - 2006-02-19
|
213
|
+
|
214
|
+
- Packaged in gem format, experimental.
|
215
|
+
|
216
|
+
- Read vCards in UTF-8 or UTF-16, big or little endian, with or without a byte
|
217
|
+
order mark (BOM).
|
218
|
+
|
219
|
+
- Fixed bug with rrule occurences containing the end of the interval. Reported
|
220
|
+
with patch by Brad Ediger.
|
221
|
+
|
222
|
+
0.15 - 2005-07-29
|
223
|
+
|
224
|
+
- Fixed bug with param values with quoted strings, particularly a quoted string
|
225
|
+
containing a : character, like
|
226
|
+
name;param="file:///":value
|
227
|
+
|
228
|
+
Thanks to Tamiji Homma for reporting this and sending me an example calendar.
|
229
|
+
|
230
|
+
- Vtodo.create - new
|
231
|
+
- Icalendar#push - allow Vtodos to be added
|
232
|
+
|
233
|
+
Thanks to Maximillian Dornseif for contributing the above two Vtodo patches.
|
234
|
+
|
235
|
+
- Vevent.duration - bug fixes so duration can be calculated from begin/end, and
|
236
|
+
end can be calculated from begin/duration
|
237
|
+
|
238
|
+
- Vcard#nickname that strips whitespace to see if there really is a nickname
|
239
|
+
|
240
|
+
- Vcard#birthday - returns birthday as a date
|
241
|
+
|
242
|
+
- Vevent#create_yearly - easy, cheesy way to create yearly recurring events
|
243
|
+
|
244
|
+
- vcf-to-ics.rb: example of how to create calendars of bdays from vcards
|
245
|
+
|
246
|
+
- Icalendar.create() like Vevent.create(), it will take arrays of Fields, or
|
247
|
+
Hashes of String => value.
|
248
|
+
|
249
|
+
- maker/vcard.rb: Added support for X-AIM, an Apple extension.
|
250
|
+
|
251
|
+
0.14 - 2005-02-01
|
252
|
+
|
253
|
+
- Fix: if an RRULE didn't ever yield an event (a bug in the rule) dountil was never tested.
|
254
|
+
|
255
|
+
- Change: don't throw an ArgumentError with infinite events, just stop when the
|
256
|
+
Time is no longer representable
|
257
|
+
|
258
|
+
0.13 - 2005-01-20
|
259
|
+
|
260
|
+
- Was calling to_time with an arg, fixed.
|
261
|
+
|
262
|
+
0.12 - 2005-01-17
|
263
|
+
|
264
|
+
- Removed require of pp from the library and utilities where it wasn't needed,
|
265
|
+
it was causing problems because it doesn't exist on ruby 1.6 systems.
|
266
|
+
|
267
|
+
- Added Field#to_date, returns field value as an array of Date objects
|
268
|
+
|
269
|
+
- Changed Field#to_time - it now auto-detects format of values
|
270
|
+
(DATE/DATE-TIME), and doesn't take/require a default_kind argument.
|
271
|
+
|
272
|
+
- Added IMPP support to Vpim::Maker::Vcard.
|
273
|
+
|
274
|
+
- Makefile wasn't copying the Maker classes into the release.
|
275
|
+
|
276
|
+
- Duration value not returned unless it was negative, fixed.
|
277
|
+
|
278
|
+
- An RRULE's UNTIL was always being assumed to be a DATE-TIME, but it can be a
|
279
|
+
DATE. I fixed this, but is something of a hack, see comments and TODO.
|
280
|
+
|
281
|
+
- Use String#scan instead of String#gsub, when appropriate (I didn't know it
|
282
|
+
existed when I stated the project).
|
283
|
+
|
284
|
+
- Run tests on 3 ruby versions.
|
285
|
+
|
286
|
+
- Don't include docs in release package, it makes it way too large.
|
287
|
+
|
288
|
+
- Change: use String.unpack instead of iconv to convert UCS-2 to UTF-8,
|
289
|
+
removing dependency on iconv (it wasn't standard in ruby 1.6).
|
290
|
+
|
291
|
+
- Change: simplified mutt_ab_query.rb, and renamed to vcf-to-mutt.
|
292
|
+
|
293
|
+
- Change: reminder.rb sorts todo items by priority.
|
294
|
+
|
295
|
+
- New: Vtodo#priority - the priority of the vTodo component.
|
296
|
+
|
297
|
+
0.11 - 2004-11-17
|
298
|
+
|
299
|
+
- Added a Vpim::Maker::Vcard class to simplify the creation of vCards, modelled
|
300
|
+
after the RSS maker from ruby's RSS library.
|
301
|
+
|
302
|
+
0.10 - 2004-11-07
|
303
|
+
|
304
|
+
- If events don't have a recurrence rule, they occur once, but they
|
305
|
+
were being returned even if they occurred after "dountil". Fixed.
|
306
|
+
|
307
|
+
- New sample of converting tab-delimited files to a vcard file, from
|
308
|
+
Dane G. Avilla. Thanks!
|
309
|
+
|
310
|
+
0.9a - 2004-10-31
|
311
|
+
|
312
|
+
- Made sure all events occur once in rrules.
|
313
|
+
|
314
|
+
- New sample of encoding: mutt-aliases-vcard.rb
|
315
|
+
|
316
|
+
- Added ToDo support to reminder.rb.
|
317
|
+
|
318
|
+
0.9 - 2004-06-17
|
319
|
+
|
320
|
+
- Field now is mutable, you can change the group, value, params, etc.
|
321
|
+
|
322
|
+
- Using the Enumerator object for DirectoryInfo now, instead of all the
|
323
|
+
each_by_X, and field_by_X() APIs.
|
324
|
+
|
325
|
+
- Moved homepage and docs to Ruby Forge.
|
326
|
+
|
327
|
+
- DirectoryInfo.create: added a profile argument
|
328
|
+
|
329
|
+
- DirectoryInfo#push: now pushes to 1 before the end
|
330
|
+
|
331
|
+
- DirectoryInfo#push_end: pushes onto end, in case you really want to
|
332
|
+
|
333
|
+
- Field.create: a Date or Time object value will now be encoded as date or time
|
334
|
+
|
335
|
+
- Vpim.encode_date(): encodes an RFC2425 date
|
336
|
+
|
337
|
+
- Vpim.encode_time(): encodes an RFC2425 time
|
338
|
+
|
339
|
+
- Vpim.encode_date_time(): encodes an RFC2425 date-time
|
340
|
+
|
341
|
+
- Icalendar#encode(): encodes an Icalendar
|
342
|
+
|
343
|
+
- Icalendar#push(): pushes a calendar component onto a calendar
|
344
|
+
|
345
|
+
- Vevent#accept(): accepts an event invitation
|
346
|
+
|
347
|
+
- Vevent#create(): creates a new event
|
348
|
+
|
349
|
+
- Address#copy(): create a copy of Address. If the original Address was frozen,
|
350
|
+
this one won't be.
|
351
|
+
|
352
|
+
- Address#partstat=(): set or change the PARTSTAT.
|
353
|
+
|
354
|
+
- Field#copy(): create a copy of Field. If the original Field was frozen, this
|
355
|
+
one won't be.
|
356
|
+
|
357
|
+
0.8 - 2004-04-01
|
358
|
+
|
359
|
+
- Moved DirectoryInfo::Field into it's own file, vpim/field.rb.
|
360
|
+
|
361
|
+
- New: Vpim::Duration - crude way of getting days/hours/mins/secs from a
|
362
|
+
duration in seconds.
|
363
|
+
|
364
|
+
- New: Icalendar#create() and Icalendar#create_reply()
|
365
|
+
|
366
|
+
- New: Icalendar#encode(), #to_s is an alias to #encode.
|
367
|
+
|
368
|
+
- New: Icalendar#protocol?()
|
369
|
+
|
370
|
+
- Change: Icalendar#version() raises an error if there is no VERSION
|
371
|
+
|
372
|
+
- Change: made all the DirectoryInfo, Vcard, and Field .new() class methods
|
373
|
+
private, and replaced with the 2 class methods:
|
374
|
+
|
375
|
+
- decode() decodes a string, returning a ruby object
|
376
|
+
- create() creates a new object
|
377
|
+
|
378
|
+
and all objects now get encoded using:
|
379
|
+
|
380
|
+
- encode() takes a ruby object, and encodes it as a string
|
381
|
+
|
382
|
+
They become more symetrical, and the overloaded meanings of .new() dissappear -
|
383
|
+
with .new() are you decoding, encoding, creating...?
|
384
|
+
|
385
|
+
- Change: Icalendar::Vevent#attendees() can return only attendees
|
386
|
+
with a particular URI.
|
387
|
+
|
388
|
+
- New: Icalendar::Address#==()
|
389
|
+
|
390
|
+
- New: Icalendar::Vevent#attendee?()
|
391
|
+
|
392
|
+
- Fixed bug: Field#encode() was adding an unexpecte NL to the line.
|
393
|
+
|
394
|
+
- Change: Field#name?() can accept a symbol.
|
395
|
+
|
396
|
+
- New: DirectoryInfo has an #each(), so I included Enumerable. Because of this
|
397
|
+
#to_a() now returns all the Fields in a DirectoryInfo.
|
398
|
+
|
399
|
+
- New: DirectoryInfo#push() and DirectoryInfo@push_uniq().
|
400
|
+
|
401
|
+
- Change: DirectoryInfo#<<() is now an alias for DirectoryInfo#push()
|
402
|
+
|
403
|
+
- Change: DirectoryInfo#each() and DirectoryInfo#each_by() now return self
|
404
|
+
instead of nil, I think this is more rubyish.
|
405
|
+
|
406
|
+
- New: Date#to_time() - converts a Date, and maybe a DateTime, to a Time
|
407
|
+
|
408
|
+
- New: Icalendar#protocol()
|
409
|
+
|
410
|
+
- New: Icalendar::Address
|
411
|
+
|
412
|
+
- New: Icalendar::Vevent#organizer()/attendees(), which return an
|
413
|
+
Icalendar::Address
|
414
|
+
|
415
|
+
- New: An array of all the values of fields named name, converted to text,
|
416
|
+
using Field.to_text().
|
417
|
+
|
418
|
+
|
419
|
+
0.7 - 2004-03-21
|
420
|
+
|
421
|
+
- Bug fixes, not all files were requiring vpim.rb, which had the definition of
|
422
|
+
the invalid encoding error.
|
423
|
+
|
424
|
+
- Implemented much requested feature: ignore empty lines in input. This is an
|
425
|
+
invalid encoding, but I'm tired of fighting it.
|
426
|
+
|
427
|
+
|
428
|
+
0.6 - 2004-03-20
|
429
|
+
|
430
|
+
WARNING: major API renamings!
|
431
|
+
|
432
|
+
- Replaced the Vpim::Errors::*Error exception classes with a single exception
|
433
|
+
class: Vpim::InvalidEncodingError. That, and a message, is all I really need.
|
434
|
+
I don't think people need different classes for different types of encoding
|
435
|
+
errors, either the library can decode it for them, or it can't.
|
436
|
+
|
437
|
+
- Renamed project to "vpim" (to reflect vCard and vCalendar/iCalendar support),
|
438
|
+
renamed top-level Rfc2425 module to Vpim, split vard.rb into multiple files.
|
439
|
+
|
440
|
+
- Add support for iCalendar (RFC2445), see vpim/icalendar.rb. Currently only
|
441
|
+
supports VEVENT, no VTODO or VALARM yet, but is useable to print my upcoming
|
442
|
+
iCal events.
|
443
|
+
|
444
|
+
- Implemented the iCalendar recurrence rules mini-language, which is possibly
|
445
|
+
of more general use than just for iCalendar.
|
446
|
+
|
447
|
+
- Fixed bug in time decoding where usec would be nil instead of zero when no
|
448
|
+
usec were present in the time value.
|
449
|
+
|
450
|
+
- Field#to_time now assumes that time is in local time, unless the timezone is
|
451
|
+
"Z", meaning UTC.
|
452
|
+
|
453
|
+
- Field#to_text - new method, unescapes newlines, commas, and escape
|
454
|
+
characters.
|
455
|
+
|
456
|
+
- Field#field(name) - new method, returns the first field named +name+.
|
457
|
+
|
458
|
+
|
459
|
+
0.5 - 3003-11-23
|
460
|
+
|
461
|
+
- ab-query.rb - short option for --me was mistyped as -v, instead of -m.
|
462
|
+
|
463
|
+
- mutt_ab_query.rb - added a --pipe option, so that the output of an other
|
464
|
+
script can be directly queried.
|
465
|
+
|
466
|
+
- New method: Rfc2425.version
|
467
|
+
|
468
|
+
- Decode vCard 2.1 abbreviated parameters (ones where the name of the parameter
|
469
|
+
is missing, only the value is present, which only works for type and encoding).
|
470
|
+
|
471
|
+
- Vcard.decode() now support UCS-2 encoded vCards, by translating anything that
|
472
|
+
looks like UCS-2 to UTF-8 before decoding.
|
473
|
+
|
474
|
+
0.4 - 2003-04-14
|
475
|
+
|
476
|
+
- More support for decoding date, time, and date-time values.
|
477
|
+
|
478
|
+
- New method Field#to_time().
|
479
|
+
|
480
|
+
- Can pass an IO object to decode APIs, its entire contents is read as a
|
481
|
+
string.
|
482
|
+
|
483
|
+
- Field#group?() now considers nil as equivalent to no group, so you can use
|
484
|
+
each_group(nil) to iterate through all fields without a group.
|
485
|
+
|
486
|
+
0.3 -
|
487
|
+
|
488
|
+
- Added description of how to use mutt_ab_query.rb
|
489
|
+
|
490
|
+
- Added support for querying the kind of a value, and began support for
|
491
|
+
decoding date and time values.
|
492
|
+
|
493
|
+
0.2 -
|
494
|
+
|
495
|
+
- Supports encoding.
|
496
|
+
|
497
|
+
- Supports accessing values using [].
|
498
|
+
|
499
|
+
- No longer have methods return an Array, or nil if the array is zero length, I
|
500
|
+
just return an Array.
|
501
|
+
|
502
|
+
- mutt_ab_query.rb - an example of using vcard.rb to do lookups in the OS X
|
503
|
+
Address Book from Mutt
|
504
|
+
|
505
|
+
0.1 -
|
506
|
+
|
507
|
+
- First release.
|
508
|
+
---
|
509
|
+
|
510
|
+
vim:expandtab:tabstop=8:softtabstop=2:shiftwidth=2
|
data/COPYING
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
vPim is copyrighted free software by Sam Roberts <sroberts@uniserve.com>.
|
2
|
+
|
3
|
+
You can redistribute it and/or modify it under either the terms of the GPL (see
|
4
|
+
the file GPL), or the conditions below:
|
5
|
+
|
6
|
+
1. You may make and give away verbatim copies of the source form of the
|
7
|
+
software without restriction, provided that you duplicate all of the
|
8
|
+
original copyright notices and associated disclaimers.
|
9
|
+
|
10
|
+
2. You may modify your copy of the software in any way, provided that
|
11
|
+
you do at least ONE of the following:
|
12
|
+
|
13
|
+
a) place your modifications in the Public Domain or otherwise make them
|
14
|
+
Freely Available, such as by posting said modifications to Usenet or an
|
15
|
+
equivalent medium, or by allowing the author to include your
|
16
|
+
modifications in the software.
|
17
|
+
|
18
|
+
b) use the modified software only within your corporation or
|
19
|
+
organization.
|
20
|
+
|
21
|
+
c) give non-standard binaries non-standard names, with instructions on
|
22
|
+
where to get the original software distribution.
|
23
|
+
|
24
|
+
d) make other distribution arrangements with the author.
|
25
|
+
|
26
|
+
3. You may distribute the software in object code or binary form,
|
27
|
+
provided that you do at least ONE of the following:
|
28
|
+
|
29
|
+
a) distribute the binaries and library files of the software, together
|
30
|
+
with instructions (in the manual page or equivalent) on where to get the
|
31
|
+
original distribution.
|
32
|
+
|
33
|
+
b) accompany the distribution with the machine-readable source of the
|
34
|
+
software.
|
35
|
+
|
36
|
+
c) give non-standard binaries non-standard names, with instructions on
|
37
|
+
where to get the original software distribution.
|
38
|
+
|
39
|
+
d) make other distribution arrangements with the author.
|
40
|
+
|
41
|
+
4. You may modify and include the part of the software into any other
|
42
|
+
software (possibly commercial). But some files in the distribution
|
43
|
+
are not written by the author, so that they are not under these terms.
|
44
|
+
|
45
|
+
For the list of those files and their copying conditions, see the
|
46
|
+
file LEGAL.
|
47
|
+
|
48
|
+
5. The scripts and library files supplied as input to or produced as
|
49
|
+
output from the software do not automatically fall under the
|
50
|
+
copyright of the software, but belong to whomever generated them,
|
51
|
+
and may be sold commercially, and may be aggregated with this
|
52
|
+
software.
|
53
|
+
|
54
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
55
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
56
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
57
|
+
PURPOSE.
|
58
|
+
|