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