icalendar 0.98 → 1.0

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.
Files changed (88) hide show
  1. data/Rakefile +1 -1
  2. data/docs/api/classes/HashAttrs.html +15 -15
  3. data/docs/api/classes/HashAttrs.src/M000070.html +12 -5
  4. data/docs/api/classes/HashAttrs.src/{M000069.html → M000071.html} +0 -0
  5. data/docs/api/classes/HashAttrs.src/M000072.html +19 -0
  6. data/docs/api/classes/Icalendar/Alarm.html +5 -29
  7. data/docs/api/classes/Icalendar/Alarm.src/{M000020.html → M000021.html} +0 -0
  8. data/docs/api/classes/Icalendar/Calendar.html +58 -57
  9. data/docs/api/classes/Icalendar/Calendar.src/M000056.html +9 -4
  10. data/docs/api/classes/Icalendar/Calendar.src/M000057.html +4 -4
  11. data/docs/api/classes/Icalendar/Calendar.src/M000058.html +4 -4
  12. data/docs/api/classes/Icalendar/Calendar.src/M000059.html +4 -4
  13. data/docs/api/classes/Icalendar/Calendar.src/M000060.html +4 -4
  14. data/docs/api/classes/Icalendar/Calendar.src/M000061.html +4 -4
  15. data/docs/api/classes/Icalendar/Calendar.src/M000062.html +4 -4
  16. data/docs/api/classes/Icalendar/Calendar.src/M000063.html +4 -4
  17. data/docs/api/classes/Icalendar/Calendar.src/M000064.html +4 -5
  18. data/docs/api/classes/Icalendar/Calendar.src/{M000055.html → M000065.html} +4 -4
  19. data/docs/api/classes/Icalendar/Calendar.src/M000066.html +19 -0
  20. data/docs/api/classes/Icalendar/Component.html +61 -25
  21. data/docs/api/classes/Icalendar/Component.src/M000029.html +1 -1
  22. data/docs/api/classes/Icalendar/Component.src/M000030.html +1 -1
  23. data/docs/api/classes/Icalendar/Component.src/M000035.html +1 -1
  24. data/docs/api/classes/Icalendar/Component.src/M000040.html +1 -1
  25. data/docs/api/classes/Icalendar/Component.src/M000041.html +1 -1
  26. data/docs/api/classes/Icalendar/Component.src/M000042.html +1 -1
  27. data/docs/api/classes/Icalendar/Component.src/M000043.html +22 -12
  28. data/docs/api/classes/Icalendar/Component.src/M000044.html +1 -1
  29. data/docs/api/classes/Icalendar/Component.src/M000045.html +1 -1
  30. data/docs/api/classes/Icalendar/Component.src/M000046.html +1 -1
  31. data/docs/api/classes/Icalendar/Component.src/M000047.html +4 -4
  32. data/docs/api/classes/Icalendar/Component.src/M000048.html +4 -12
  33. data/docs/api/classes/Icalendar/Component.src/M000049.html +10 -14
  34. data/docs/api/classes/Icalendar/Component.src/M000050.html +14 -7
  35. data/docs/api/classes/Icalendar/Component.src/M000051.html +19 -0
  36. data/docs/api/classes/Icalendar/Component.src/M000052.html +22 -0
  37. data/docs/api/classes/Icalendar/Daylight.html +5 -5
  38. data/docs/api/classes/Icalendar/Daylight.src/{M000051.html → M000053.html} +1 -1
  39. data/docs/api/classes/Icalendar/Event.html +10 -34
  40. data/docs/api/classes/Icalendar/Event.src/{M000052.html → M000054.html} +0 -0
  41. data/docs/api/classes/Icalendar/Event.src/{M000053.html → M000055.html} +0 -0
  42. data/docs/api/classes/Icalendar/Freebusy.html +5 -44
  43. data/docs/api/classes/Icalendar/Freebusy.src/{M000065.html → M000067.html} +0 -0
  44. data/docs/api/classes/Icalendar/Geo.html +2 -2
  45. data/docs/api/classes/Icalendar/Journal.html +0 -15
  46. data/docs/api/classes/Icalendar/Parameter.html +5 -5
  47. data/docs/api/classes/Icalendar/Parameter.src/{M000066.html → M000068.html} +0 -0
  48. data/docs/api/classes/Icalendar/Parser.src/M000019.html +1 -1
  49. data/docs/api/classes/Icalendar/Standard.src/M000015.html +1 -1
  50. data/docs/api/classes/Icalendar/Timezone.src/M000027.html +3 -1
  51. data/docs/api/classes/Icalendar/Timezone.src/M000028.html +1 -1
  52. data/docs/api/classes/Icalendar/Todo.html +5 -20
  53. data/docs/api/classes/Icalendar/Todo.src/{M000021.html → M000020.html} +0 -0
  54. data/docs/api/classes/Object.html +7 -5
  55. data/docs/api/classes/URI/Generic.html +5 -5
  56. data/docs/api/classes/URI/Generic.src/{M000067.html → M000069.html} +0 -0
  57. data/docs/api/created.rid +1 -1
  58. data/docs/api/files/COPYING.html +1 -1
  59. data/docs/api/files/GPL.html +3 -3
  60. data/docs/api/files/README.html +5 -5
  61. data/docs/api/files/lib/hash_attrs_rb.html +1 -1
  62. data/docs/api/files/lib/icalendar/base_rb.html +1 -1
  63. data/docs/api/files/lib/icalendar/calendar_rb.html +1 -1
  64. data/docs/api/files/lib/icalendar/component/alarm_rb.html +1 -1
  65. data/docs/api/files/lib/icalendar/component/event_rb.html +1 -1
  66. data/docs/api/files/lib/icalendar/component/freebusy_rb.html +1 -1
  67. data/docs/api/files/lib/icalendar/component/journal_rb.html +1 -1
  68. data/docs/api/files/lib/icalendar/component/timezone_rb.html +1 -1
  69. data/docs/api/files/lib/icalendar/component/todo_rb.html +1 -1
  70. data/docs/api/files/lib/icalendar/component_rb.html +1 -1
  71. data/docs/api/files/lib/icalendar/conversions_rb.html +1 -1
  72. data/docs/api/files/lib/icalendar/helpers_rb.html +1 -1
  73. data/docs/api/files/lib/icalendar/parameter_rb.html +1 -1
  74. data/docs/api/files/lib/icalendar/parser_rb.html +1 -1
  75. data/docs/api/files/lib/icalendar_rb.html +1 -1
  76. data/docs/api/files/lib/meta_rb.html +1 -1
  77. data/docs/api/fr_method_index.html +32 -30
  78. data/lib/icalendar/component/alarm.rb +1 -1
  79. data/lib/icalendar/component/event.rb +1 -1
  80. data/lib/icalendar/component/freebusy.rb +2 -2
  81. data/lib/icalendar/component/journal.rb +1 -1
  82. data/lib/icalendar/component/timezone.rb +3 -1
  83. data/lib/icalendar/component/todo.rb +1 -1
  84. data/lib/icalendar/component.rb +36 -14
  85. data/lib/icalendar/parser.rb +1 -2
  86. metadata +34 -32
  87. data/docs/api/classes/HashAttrs.src/M000068.html +0 -26
  88. data/docs/api/classes/Icalendar/Calendar.src/M000054.html +0 -23
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Apr 26 10:57:42 CEST 2006</td>
59
+ <td>Wed Apr 26 10:57:42 +0200 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Apr 26 10:57:42 CEST 2006</td>
59
+ <td>Wed Apr 26 10:57:42 +0200 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Tue Jan 23 14:12:41 CET 2007</td>
59
+ <td>Thu Sep 27 17:39:41 +0200 2007</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Apr 26 10:57:42 CEST 2006</td>
59
+ <td>Wed Apr 26 10:57:42 +0200 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Wed Apr 26 10:57:42 CEST 2006</td>
59
+ <td>Wed Apr 26 10:57:42 +0200 2006</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -21,75 +21,77 @@
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
23
  <a href="classes/Icalendar/Component.html#M000031">add (Icalendar::Component)</a><br />
24
- <a href="classes/Icalendar/Component.html#M000030">add_component (Icalendar::Component)</a><br />
25
24
  <a href="classes/Icalendar/Timezone.html#M000026">add_component (Icalendar::Timezone)</a><br />
25
+ <a href="classes/Icalendar/Component.html#M000030">add_component (Icalendar::Component)</a><br />
26
26
  <a href="classes/Icalendar/Component.html#M000032">add_event (Icalendar::Component)</a><br />
27
27
  <a href="classes/Icalendar/Component.html#M000034">add_journal (Icalendar::Component)</a><br />
28
28
  <a href="classes/Icalendar/Component.html#M000033">add_todo (Icalendar::Component)</a><br />
29
- <a href="classes/Icalendar/Event.html#M000053">alarm (Icalendar::Event)</a><br />
29
+ <a href="classes/Icalendar/Event.html#M000055">alarm (Icalendar::Event)</a><br />
30
30
  <a href="classes/Icalendar/DateProp.html#M000013">append_features (Icalendar::DateProp)</a><br />
31
31
  <a href="classes/Object.html#M000010">class_def (Object)</a><br />
32
32
  <a href="classes/Icalendar/Component.html#M000045">custom_property (Icalendar::Component)</a><br />
33
33
  <a href="classes/Icalendar/DateProp/ClassMethods.html#M000014">date_property (Icalendar::DateProp::ClassMethods)</a><br />
34
34
  <a href="classes/Icalendar/Base.html#M000022">debug (Icalendar::Base)</a><br />
35
- <a href="classes/Icalendar/Calendar.html#M000055">event (Icalendar::Calendar)</a><br />
36
- <a href="classes/Icalendar/Calendar.html#M000056">find_event (Icalendar::Calendar)</a><br />
37
- <a href="classes/Icalendar/Calendar.html#M000062">find_freebusy (Icalendar::Calendar)</a><br />
38
- <a href="classes/Icalendar/Calendar.html#M000060">find_journal (Icalendar::Calendar)</a><br />
39
- <a href="classes/Icalendar/Calendar.html#M000058">find_todo (Icalendar::Calendar)</a><br />
40
- <a href="classes/Icalendar/Calendar.html#M000061">freebusy (Icalendar::Calendar)</a><br />
41
- <a href="classes/HashAttrs.html#M000070">hash_accessor (HashAttrs)</a><br />
42
- <a href="classes/HashAttrs.html#M000068">hash_reader (HashAttrs)</a><br />
43
- <a href="classes/HashAttrs.html#M000069">hash_writer (HashAttrs)</a><br />
44
- <a href="classes/Icalendar/Component.html#M000047">ical_component (Icalendar::Component)</a><br />
45
- <a href="classes/Icalendar/Component.html#M000049">ical_multi_property (Icalendar::Component)</a><br />
46
- <a href="classes/Icalendar/Component.html#M000048">ical_property (Icalendar::Component)</a><br />
47
- <a href="classes/Icalendar/Calendar.html#M000059">journal (Icalendar::Calendar)</a><br />
35
+ <a href="classes/Icalendar/Calendar.html#M000057">event (Icalendar::Calendar)</a><br />
36
+ <a href="classes/Icalendar/Calendar.html#M000058">find_event (Icalendar::Calendar)</a><br />
37
+ <a href="classes/Icalendar/Calendar.html#M000064">find_freebusy (Icalendar::Calendar)</a><br />
38
+ <a href="classes/Icalendar/Calendar.html#M000062">find_journal (Icalendar::Calendar)</a><br />
39
+ <a href="classes/Icalendar/Calendar.html#M000060">find_todo (Icalendar::Calendar)</a><br />
40
+ <a href="classes/Icalendar/Calendar.html#M000063">freebusy (Icalendar::Calendar)</a><br />
41
+ <a href="classes/HashAttrs.html#M000072">hash_accessor (HashAttrs)</a><br />
42
+ <a href="classes/HashAttrs.html#M000070">hash_reader (HashAttrs)</a><br />
43
+ <a href="classes/HashAttrs.html#M000071">hash_writer (HashAttrs)</a><br />
44
+ <a href="classes/Icalendar/Component.html#M000048">ical_component (Icalendar::Component)</a><br />
45
+ <a href="classes/Icalendar/Component.html#M000050">ical_multi_property (Icalendar::Component)</a><br />
46
+ <a href="classes/Icalendar/Component.html#M000051">ical_multiline_property (Icalendar::Component)</a><br />
47
+ <a href="classes/Icalendar/Component.html#M000049">ical_property (Icalendar::Component)</a><br />
48
+ <a href="classes/Icalendar/Calendar.html#M000061">journal (Icalendar::Calendar)</a><br />
48
49
  <a href="classes/Object.html#M000009">meta_def (Object)</a><br />
49
50
  <a href="classes/Object.html#M000007">meta_eval (Object)</a><br />
50
51
  <a href="classes/Object.html#M000008">meta_include (Object)</a><br />
51
52
  <a href="classes/Object.html#M000006">metaclass (Object)</a><br />
52
53
  <a href="classes/Icalendar/Component.html#M000046">multi_property? (Icalendar::Component)</a><br />
54
+ <a href="classes/Icalendar/Component.html#M000047">multiline_property? (Icalendar::Component)</a><br />
55
+ <a href="classes/Icalendar/Daylight.html#M000053">new (Icalendar::Daylight)</a><br />
56
+ <a href="classes/Icalendar/Alarm.html#M000021">new (Icalendar::Alarm)</a><br />
57
+ <a href="classes/Icalendar/Todo.html#M000020">new (Icalendar::Todo)</a><br />
58
+ <a href="classes/Icalendar/Calendar.html#M000056">new (Icalendar::Calendar)</a><br />
53
59
  <a href="classes/Icalendar/Component.html#M000029">new (Icalendar::Component)</a><br />
60
+ <a href="classes/Icalendar/Event.html#M000054">new (Icalendar::Event)</a><br />
54
61
  <a href="classes/Icalendar/Timezone.html#M000028">new (Icalendar::Timezone)</a><br />
55
- <a href="classes/Icalendar/Freebusy.html#M000065">new (Icalendar::Freebusy)</a><br />
56
62
  <a href="classes/Icalendar/Standard.html#M000015">new (Icalendar::Standard)</a><br />
57
- <a href="classes/Icalendar/Calendar.html#M000054">new (Icalendar::Calendar)</a><br />
63
+ <a href="classes/Icalendar/Freebusy.html#M000067">new (Icalendar::Freebusy)</a><br />
64
+ <a href="classes/Icalendar/Parser.html#M000017">new (Icalendar::Parser)</a><br />
58
65
  <a href="classes/Icalendar/Journal.html#M000016">new (Icalendar::Journal)</a><br />
59
- <a href="classes/Icalendar/Todo.html#M000021">new (Icalendar::Todo)</a><br />
60
- <a href="classes/Icalendar/Daylight.html#M000051">new (Icalendar::Daylight)</a><br />
61
66
  <a href="classes/Icalendar/Geo.html#M000024">new (Icalendar::Geo)</a><br />
62
- <a href="classes/Icalendar/Alarm.html#M000020">new (Icalendar::Alarm)</a><br />
63
- <a href="classes/Icalendar/Parser.html#M000017">new (Icalendar::Parser)</a><br />
64
- <a href="classes/Icalendar/Event.html#M000052">new (Icalendar::Event)</a><br />
65
67
  <a href="classes/Icalendar/Component.html#M000040">new_uid (Icalendar::Component)</a><br />
66
68
  <a href="classes/Icalendar/Parser.html#M000018">next_line (Icalendar::Parser)</a><br />
67
69
  <a href="classes/Icalendar/Parser.html#M000019">parse (Icalendar::Parser)</a><br />
68
70
  <a href="classes/Icalendar/Component.html#M000042">print_component (Icalendar::Component)</a><br />
69
71
  <a href="classes/Icalendar/Component.html#M000044">print_parameters (Icalendar::Component)</a><br />
70
72
  <a href="classes/Icalendar/Component.html#M000043">print_properties (Icalendar::Component)</a><br />
71
- <a href="classes/Icalendar/Calendar.html#M000064">publish (Icalendar::Calendar)</a><br />
73
+ <a href="classes/Icalendar/Calendar.html#M000066">publish (Icalendar::Calendar)</a><br />
72
74
  <a href="classes/Icalendar/Base.html#M000023">quiet (Icalendar::Base)</a><br />
73
75
  <a href="classes/Icalendar/Component.html#M000036">remove (Icalendar::Component)</a><br />
74
76
  <a href="classes/Icalendar/Component.html#M000035">remove_component (Icalendar::Component)</a><br />
75
77
  <a href="classes/Icalendar/Component.html#M000037">remove_event (Icalendar::Component)</a><br />
76
78
  <a href="classes/Icalendar/Component.html#M000039">remove_journal (Icalendar::Component)</a><br />
77
79
  <a href="classes/Icalendar/Component.html#M000038">remove_todo (Icalendar::Component)</a><br />
78
- <a href="classes/Icalendar/Component.html#M000050">respond_to? (Icalendar::Component)</a><br />
79
- <a href="classes/Icalendar/Calendar.html#M000063">timezone (Icalendar::Calendar)</a><br />
80
- <a href="classes/Fixnum.html#M000011">to_ical (Fixnum)</a><br />
80
+ <a href="classes/Icalendar/Component.html#M000052">respond_to? (Icalendar::Component)</a><br />
81
+ <a href="classes/Icalendar/Calendar.html#M000065">timezone (Icalendar::Calendar)</a><br />
81
82
  <a href="classes/Icalendar/Geo.html#M000025">to_ical (Icalendar::Geo)</a><br />
82
- <a href="classes/String.html#M000012">to_ical (String)</a><br />
83
83
  <a href="classes/Time.html#M000001">to_ical (Time)</a><br />
84
+ <a href="classes/String.html#M000012">to_ical (String)</a><br />
85
+ <a href="classes/Fixnum.html#M000011">to_ical (Fixnum)</a><br />
84
86
  <a href="classes/DateTime.html#M000005">to_ical (DateTime)</a><br />
85
87
  <a href="classes/Icalendar/Timezone.html#M000027">to_ical (Icalendar::Timezone)</a><br />
86
88
  <a href="classes/Icalendar/Component.html#M000041">to_ical (Icalendar::Component)</a><br />
87
89
  <a href="classes/Float.html#M000003">to_ical (Float)</a><br />
88
90
  <a href="classes/Array.html#M000002">to_ical (Array)</a><br />
89
- <a href="classes/URI/Generic.html#M000067">to_ical (URI::Generic)</a><br />
91
+ <a href="classes/URI/Generic.html#M000069">to_ical (URI::Generic)</a><br />
90
92
  <a href="classes/Date.html#M000004">to_ical (Date)</a><br />
91
- <a href="classes/Icalendar/Parameter.html#M000066">to_s (Icalendar::Parameter)</a><br />
92
- <a href="classes/Icalendar/Calendar.html#M000057">todo (Icalendar::Calendar)</a><br />
93
+ <a href="classes/Icalendar/Parameter.html#M000068">to_s (Icalendar::Parameter)</a><br />
94
+ <a href="classes/Icalendar/Calendar.html#M000059">todo (Icalendar::Calendar)</a><br />
93
95
  </div>
94
96
  </div>
95
97
  </body>
@@ -30,7 +30,7 @@ module Icalendar
30
30
  ical_property :sequence
31
31
 
32
32
  # Multi properties
33
- ical_multi_property :attendee, :attendee, :attendees
33
+ ical_multiline_property :attendee, :attendee, :attendees
34
34
  ical_multi_property :attach, :attachment, :attachments
35
35
 
36
36
  def initialize()
@@ -77,7 +77,7 @@ module Icalendar
77
77
  ical_multi_property :attach, :attachment, :attachments
78
78
 
79
79
  # Defines an attendee for this calendar item
80
- ical_multi_property :attendee, :attendee, :attendees
80
+ ical_multiline_property :attendee, :attendee, :attendees
81
81
 
82
82
  # Defines the categories for a calendar component (school, work...)
83
83
  ical_multi_property :categories, :category, :categories
@@ -22,9 +22,9 @@ module Icalendar
22
22
  ical_property :url
23
23
 
24
24
  # Multi-properties
25
- ical_multi_property :attendee, :attendee, :attendees
25
+ ical_multiline_property :attendee, :attendee, :attendees
26
26
  ical_multi_property :comment, :comment, :comments
27
- ical_multi_property :freebusy, :freebusy, :freebusys
27
+ ical_multiline_property :freebusy, :freebusy, :freebusys
28
28
  ical_multi_property :rstatus, :request_status, :request_statuses
29
29
 
30
30
  def initialize()
@@ -36,7 +36,7 @@ module Icalendar
36
36
 
37
37
  # Multi-properties
38
38
  ical_multi_property :attach, :attachment, :attachments
39
- ical_multi_property :attendee, :attendee, :attendees
39
+ ical_multiline_property :attendee, :attendee, :attendees
40
40
  ical_multi_property :categories, :category, :categories
41
41
  ical_multi_property :comment, :comment, :comments
42
42
  ical_multi_property :contact, :contact, :contacts
@@ -49,10 +49,12 @@ module Icalendar
49
49
  # Also need a custom to_ical because typically it iterates over an array
50
50
  # of components.
51
51
  def to_ical
52
- print_component do |s|
52
+ print_component do
53
+ s = ""
53
54
  @components.each_value do |comp|
54
55
  s << comp.to_ical
55
56
  end
57
+ s
56
58
  end
57
59
  end
58
60
 
@@ -40,7 +40,7 @@ module Icalendar
40
40
 
41
41
  # Multi-properties
42
42
  ical_multi_property :attach, :attachment, :attachments
43
- ical_multi_property :attendee, :attendee, :attendees
43
+ ical_multiline_property :attendee, :attendee, :attendees
44
44
  ical_multi_property :categories, :category, :categories
45
45
  ical_multi_property :comment, :comment, :comments
46
46
  ical_multi_property :contact, :contact, :contacts
@@ -41,6 +41,7 @@ module Icalendar
41
41
  attr_accessor :properties
42
42
 
43
43
  @@multi_properties = {}
44
+ @@multiline_properties = {}
44
45
 
45
46
  def initialize(name)
46
47
  @name = name
@@ -136,20 +137,30 @@ module Icalendar
136
137
  end
137
138
 
138
139
  # Property name
139
- prelude = "#{key.gsub(/_/, '-').upcase}" +
140
-
141
- # Possible parameters
142
- print_parameters(val)
143
-
144
- # Property value
145
- value = ":#{val.to_ical}"
146
-
147
- escaped = prelude + value.gsub("\\", "\\\\").gsub("\n", "\\n").gsub(",", "\\,").gsub(";", "\\;")
148
- s << escaped.slice!(0, MAX_LINE_LENGTH) << "\r\n " while escaped.size > MAX_LINE_LENGTH
149
- s << escaped << "\r\n"
150
- s.gsub!(/ *$/, '')
140
+ unless multiline_property?(key)
141
+ prelude = "#{key.gsub(/_/, '-').upcase}" +
142
+
143
+ # Possible parameters
144
+ print_parameters(val)
145
+
146
+ # Property value
147
+ value = ":#{val.to_ical}"
148
+ escaped = prelude + value.gsub("\\", "\\\\").gsub("\n", "\\n").gsub(",", "\\,").gsub(";", "\\;")
149
+ s << escaped.slice!(0, MAX_LINE_LENGTH) << "\r\n " while escaped.size > MAX_LINE_LENGTH
150
+ s << escaped << "\r\n"
151
+ s.gsub!(/ *$/, '')
152
+ else
153
+ prelude = "#{key.gsub(/_/, '-').upcase}"
154
+ val.each do |v|
155
+ params = print_parameters(v)
156
+ value = ":#{v.to_ical}"
157
+ escaped = prelude + params + value.gsub("\\", "\\\\").gsub("\n", "\\n").gsub(",", "\\,").gsub(";", "\\;")
158
+ s << escaped.slice!(0, MAX_LINE_LENGTH) << "\r\n " while escaped.size > MAX_LINE_LENGTH
159
+ s << escaped << "\r\n"
160
+ s.gsub!(/ *$/, '')
161
+ end
162
+ end
151
163
  end
152
-
153
164
  s
154
165
  end
155
166
 
@@ -188,6 +199,10 @@ module Icalendar
188
199
  @@multi_properties.has_key?(name.downcase)
189
200
  end
190
201
 
202
+ def multiline_property?(name)
203
+ @@multiline_properties.has_key?(name.downcase)
204
+ end
205
+
191
206
  # Make it protected so we can monitor usage...
192
207
  protected
193
208
 
@@ -199,7 +214,6 @@ module Icalendar
199
214
  def Component.ical_property(property, alias_name = nil, prop_name = nil)
200
215
  property = "#{property}".strip.downcase
201
216
  alias_name = "#{alias_name}".strip.downcase unless alias_name.nil?
202
-
203
217
  # If a prop_name was given then we use that for the actual storage
204
218
  property = "#{prop_name}".strip.downcase unless prop_name.nil?
205
219
 
@@ -225,6 +239,14 @@ module Icalendar
225
239
  generate_multi_remover(property, singular)
226
240
  end
227
241
 
242
+ # Define a set of methods defining a new property, which
243
+ # supports multiple values in multiple lines with same property name
244
+ def Component.ical_multiline_property(property, singular, plural)
245
+ @@multiline_properties["#{property}"] = true
246
+ ical_multi_property(property, singular, plural)
247
+ end
248
+
249
+
228
250
  private
229
251
 
230
252
  def Component.generate_getter(property, alias_name)
@@ -93,7 +93,7 @@ module Icalendar
93
93
 
94
94
  @@logger.debug "parsing..."
95
95
  # Outer loop for Calendar objects
96
- while (line = next_line)
96
+ while (line = next_line)
97
97
  fields = parse_line(line)
98
98
 
99
99
  # Just iterate through until we find the beginning of a calendar object
@@ -148,7 +148,6 @@ module Icalendar
148
148
  next
149
149
  end
150
150
  else # If its not a component then it should be a property
151
-
152
151
  params = fields[:params]
153
152
  value = fields[:value]
154
153
 
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: icalendar
5
5
  version: !ruby/object:Gem::Version
6
- version: "0.98"
7
- date: 2007-01-23 00:00:00 +01:00
6
+ version: "1.0"
7
+ date: 2007-09-27 00:00:00 +02:00
8
8
  summary: A ruby implementation of the iCalendar specification (RFC-2445).
9
9
  require_paths:
10
10
  - lib
@@ -54,24 +54,17 @@ files:
54
54
  - lib/icalendar/parameter.rb
55
55
  - lib/icalendar/component.rb
56
56
  - lib/icalendar/helpers.rb
57
+ - lib/icalendar/parser.rb
57
58
  - lib/icalendar/calendar.rb
58
59
  - lib/icalendar/base.rb
59
- - lib/icalendar/parser.rb
60
- - lib/icalendar/component/freebusy.rb
60
+ - lib/icalendar/component/alarm.rb
61
61
  - lib/icalendar/component/event.rb
62
+ - lib/icalendar/component/freebusy.rb
62
63
  - lib/icalendar/component/journal.rb
63
- - lib/icalendar/component/todo.rb
64
64
  - lib/icalendar/component/timezone.rb
65
- - lib/icalendar/component/alarm.rb
66
- - docs/rfcs
65
+ - lib/icalendar/component/todo.rb
67
66
  - docs/api
68
- - docs/rfcs/itip_notes.txt
69
- - docs/rfcs/rfc2425.pdf
70
- - docs/rfcs/rfc2426.pdf
71
- - docs/rfcs/rfc2445.pdf
72
- - docs/rfcs/rfc2446.pdf
73
- - docs/rfcs/rfc2447.pdf
74
- - docs/rfcs/rfc3283.txt
67
+ - docs/rfcs
75
68
  - docs/api/created.rid
76
69
  - docs/api/rdoc-style.css
77
70
  - docs/api/files
@@ -92,16 +85,16 @@ files:
92
85
  - docs/api/files/lib/icalendar/parameter_rb.html
93
86
  - docs/api/files/lib/icalendar/component_rb.html
94
87
  - docs/api/files/lib/icalendar/helpers_rb.html
88
+ - docs/api/files/lib/icalendar/parser_rb.html
95
89
  - docs/api/files/lib/icalendar/calendar_rb.html
96
90
  - docs/api/files/lib/icalendar/base_rb.html
97
- - docs/api/files/lib/icalendar/parser_rb.html
98
91
  - docs/api/files/lib/icalendar/component
99
- - docs/api/files/lib/icalendar/component/freebusy_rb.html
92
+ - docs/api/files/lib/icalendar/component/alarm_rb.html
100
93
  - docs/api/files/lib/icalendar/component/event_rb.html
94
+ - docs/api/files/lib/icalendar/component/freebusy_rb.html
101
95
  - docs/api/files/lib/icalendar/component/journal_rb.html
102
- - docs/api/files/lib/icalendar/component/todo_rb.html
103
96
  - docs/api/files/lib/icalendar/component/timezone_rb.html
104
- - docs/api/files/lib/icalendar/component/alarm_rb.html
97
+ - docs/api/files/lib/icalendar/component/todo_rb.html
105
98
  - docs/api/classes/Time.src
106
99
  - docs/api/classes/Array.src
107
100
  - docs/api/classes/Float.src
@@ -140,8 +133,8 @@ files:
140
133
  - docs/api/classes/Icalendar/Standard.src
141
134
  - docs/api/classes/Icalendar/Journal.src
142
135
  - docs/api/classes/Icalendar/Parser.src
143
- - docs/api/classes/Icalendar/Alarm.src
144
136
  - docs/api/classes/Icalendar/Todo.src
137
+ - docs/api/classes/Icalendar/Alarm.src
145
138
  - docs/api/classes/Icalendar/Base.src
146
139
  - docs/api/classes/Icalendar/Geo.src
147
140
  - docs/api/classes/Icalendar/Timezone.src
@@ -158,8 +151,8 @@ files:
158
151
  - docs/api/classes/Icalendar/UnknownPropertyMethod.html
159
152
  - docs/api/classes/Icalendar/InvalidPropertyValue.html
160
153
  - docs/api/classes/Icalendar/UnknownComponentClass.html
161
- - docs/api/classes/Icalendar/Alarm.html
162
154
  - docs/api/classes/Icalendar/Todo.html
155
+ - docs/api/classes/Icalendar/Alarm.html
163
156
  - docs/api/classes/Icalendar/Base.html
164
157
  - docs/api/classes/Icalendar/Geo.html
165
158
  - docs/api/classes/Icalendar/Timezone.html
@@ -178,8 +171,8 @@ files:
178
171
  - docs/api/classes/Icalendar/Parser.src/M000017.html
179
172
  - docs/api/classes/Icalendar/Parser.src/M000018.html
180
173
  - docs/api/classes/Icalendar/Parser.src/M000019.html
181
- - docs/api/classes/Icalendar/Alarm.src/M000020.html
182
- - docs/api/classes/Icalendar/Todo.src/M000021.html
174
+ - docs/api/classes/Icalendar/Todo.src/M000020.html
175
+ - docs/api/classes/Icalendar/Alarm.src/M000021.html
183
176
  - docs/api/classes/Icalendar/Base.src/M000022.html
184
177
  - docs/api/classes/Icalendar/Base.src/M000023.html
185
178
  - docs/api/classes/Icalendar/Geo.src/M000024.html
@@ -201,11 +194,11 @@ files:
201
194
  - docs/api/classes/Icalendar/Component.src/M000048.html
202
195
  - docs/api/classes/Icalendar/Component.src/M000049.html
203
196
  - docs/api/classes/Icalendar/Component.src/M000050.html
204
- - docs/api/classes/Icalendar/Daylight.src/M000051.html
205
- - docs/api/classes/Icalendar/Event.src/M000052.html
206
- - docs/api/classes/Icalendar/Event.src/M000053.html
207
- - docs/api/classes/Icalendar/Calendar.src/M000054.html
208
- - docs/api/classes/Icalendar/Calendar.src/M000055.html
197
+ - docs/api/classes/Icalendar/Component.src/M000051.html
198
+ - docs/api/classes/Icalendar/Component.src/M000052.html
199
+ - docs/api/classes/Icalendar/Daylight.src/M000053.html
200
+ - docs/api/classes/Icalendar/Event.src/M000054.html
201
+ - docs/api/classes/Icalendar/Event.src/M000055.html
209
202
  - docs/api/classes/Icalendar/Calendar.src/M000056.html
210
203
  - docs/api/classes/Icalendar/Calendar.src/M000057.html
211
204
  - docs/api/classes/Icalendar/Calendar.src/M000058.html
@@ -215,14 +208,23 @@ files:
215
208
  - docs/api/classes/Icalendar/Calendar.src/M000062.html
216
209
  - docs/api/classes/Icalendar/Calendar.src/M000063.html
217
210
  - docs/api/classes/Icalendar/Calendar.src/M000064.html
218
- - docs/api/classes/Icalendar/Freebusy.src/M000065.html
219
- - docs/api/classes/Icalendar/Parameter.src/M000066.html
211
+ - docs/api/classes/Icalendar/Calendar.src/M000065.html
212
+ - docs/api/classes/Icalendar/Calendar.src/M000066.html
213
+ - docs/api/classes/Icalendar/Freebusy.src/M000067.html
214
+ - docs/api/classes/Icalendar/Parameter.src/M000068.html
220
215
  - docs/api/classes/URI/Generic.src
221
216
  - docs/api/classes/URI/Generic.html
222
- - docs/api/classes/URI/Generic.src/M000067.html
223
- - docs/api/classes/HashAttrs.src/M000068.html
224
- - docs/api/classes/HashAttrs.src/M000069.html
217
+ - docs/api/classes/URI/Generic.src/M000069.html
225
218
  - docs/api/classes/HashAttrs.src/M000070.html
219
+ - docs/api/classes/HashAttrs.src/M000071.html
220
+ - docs/api/classes/HashAttrs.src/M000072.html
221
+ - docs/rfcs/itip_notes.txt
222
+ - docs/rfcs/rfc2425.pdf
223
+ - docs/rfcs/rfc2426.pdf
224
+ - docs/rfcs/rfc2445.pdf
225
+ - docs/rfcs/rfc2446.pdf
226
+ - docs/rfcs/rfc2447.pdf
227
+ - docs/rfcs/rfc3283.txt
226
228
  - examples/single_event.ics
227
229
  - examples/create_cal.rb
228
230
  - examples/parse_cal.rb
@@ -1,26 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html>
7
- <head>
8
- <title>hash_reader (HashAttrs)</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
- </head>
12
- <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/hash_attrs.rb, line 4</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hash_reader</span>(<span class="ruby-identifier">hash_sym</span>, <span class="ruby-identifier">syms</span>)
15
- <span class="ruby-identifier">syms</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
16
- <span class="ruby-identifier">id</span> = <span class="ruby-identifier">id</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>
17
- <span class="ruby-identifier">func</span> = <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
18
- <span class="ruby-identifier">hash</span> = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">hash_sym</span>)
19
- <span class="ruby-identifier">hash</span>[<span class="ruby-identifier">id</span>.<span class="ruby-identifier">to_sym</span>]
20
- <span class="ruby-keyword kw">end</span>
21
-
22
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">:define_method</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">func</span>)
23
- <span class="ruby-keyword kw">end</span>
24
- <span class="ruby-keyword kw">end</span></pre>
25
- </body>
26
- </html>
@@ -1,23 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
-
6
- <html>
7
- <head>
8
- <title>new (Icalendar::Calendar)</title>
9
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
- <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
11
- </head>
12
- <body class="standalone-code">
13
- <pre><span class="ruby-comment cmt"># File lib/icalendar/calendar.rb, line 19</span>
14
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>()
15
- <span class="ruby-keyword kw">super</span>(<span class="ruby-value str">&quot;VCALENDAR&quot;</span>)
16
-
17
- <span class="ruby-comment cmt"># Set some defaults</span>
18
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">calscale</span> = <span class="ruby-value str">&quot;GREGORIAN&quot;</span> <span class="ruby-comment cmt"># Who knows, but this is the only one in the spec.</span>
19
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">prodid</span> = <span class="ruby-value str">&quot;iCalendar-Ruby&quot;</span> <span class="ruby-comment cmt"># Current product... Should be overwritten by apps that use the library</span>
20
- <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">version</span> = <span class="ruby-value str">&quot;2.0&quot;</span> <span class="ruby-comment cmt"># Version of the specification</span>
21
- <span class="ruby-keyword kw">end</span></pre>
22
- </body>
23
- </html>