tilia-vobject 4.0.0.pre.alpha5 → 4.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.sabre.md +59 -2
  3. data/Gemfile +1 -8
  4. data/Gemfile.lock +18 -12
  5. data/LICENSE +1 -1
  6. data/LICENSE.sabre +1 -1
  7. data/lib/tilia/v_object.rb +1 -0
  8. data/lib/tilia/v_object/birthday_calendar_generator.rb +11 -11
  9. data/lib/tilia/v_object/cli.rb +39 -38
  10. data/lib/tilia/v_object/component.rb +47 -50
  11. data/lib/tilia/v_object/component/available.rb +4 -37
  12. data/lib/tilia/v_object/component/v_alarm.rb +6 -18
  13. data/lib/tilia/v_object/component/v_availability.rb +6 -39
  14. data/lib/tilia/v_object/component/v_calendar.rb +66 -98
  15. data/lib/tilia/v_object/component/v_card.rb +42 -69
  16. data/lib/tilia/v_object/component/v_event.rb +5 -17
  17. data/lib/tilia/v_object/component/v_free_busy.rb +4 -16
  18. data/lib/tilia/v_object/component/v_journal.rb +16 -16
  19. data/lib/tilia/v_object/component/v_time_zone.rb +2 -14
  20. data/lib/tilia/v_object/component/v_todo.rb +17 -36
  21. data/lib/tilia/v_object/date_time_parser.rb +24 -24
  22. data/lib/tilia/v_object/document.rb +25 -25
  23. data/lib/tilia/v_object/free_busy_data.rb +7 -7
  24. data/lib/tilia/v_object/free_busy_generator.rb +73 -75
  25. data/lib/tilia/v_object/i_tip.rb +1 -0
  26. data/lib/tilia/v_object/i_tip/broker.rb +134 -116
  27. data/lib/tilia/v_object/i_tip/i_tip_exception.rb +1 -1
  28. data/lib/tilia/v_object/i_tip/message.rb +13 -13
  29. data/lib/tilia/v_object/invalid_data_exception.rb +8 -0
  30. data/lib/tilia/v_object/node.rb +22 -27
  31. data/lib/tilia/v_object/parameter.rb +22 -22
  32. data/lib/tilia/v_object/parse_exception.rb +1 -1
  33. data/lib/tilia/v_object/parser.rb +1 -0
  34. data/lib/tilia/v_object/parser/json.rb +9 -19
  35. data/lib/tilia/v_object/parser/mime_dir.rb +73 -39
  36. data/lib/tilia/v_object/parser/parser.rb +9 -14
  37. data/lib/tilia/v_object/parser/xml.rb +33 -50
  38. data/lib/tilia/v_object/parser/xml/element.rb +1 -0
  39. data/lib/tilia/v_object/parser/xml/element/key_value.rb +2 -2
  40. data/lib/tilia/v_object/property.rb +52 -52
  41. data/lib/tilia/v_object/property/binary.rb +10 -10
  42. data/lib/tilia/v_object/property/boolean.rb +6 -6
  43. data/lib/tilia/v_object/property/flat_text.rb +3 -3
  44. data/lib/tilia/v_object/property/float_value.rb +10 -10
  45. data/lib/tilia/v_object/property/i_calendar.rb +1 -0
  46. data/lib/tilia/v_object/property/i_calendar/cal_address.rb +3 -3
  47. data/lib/tilia/v_object/property/i_calendar/date_time.rb +29 -57
  48. data/lib/tilia/v_object/property/i_calendar/duration.rb +6 -6
  49. data/lib/tilia/v_object/property/i_calendar/period.rb +10 -10
  50. data/lib/tilia/v_object/property/i_calendar/recur.rb +16 -24
  51. data/lib/tilia/v_object/property/integer_value.rb +8 -8
  52. data/lib/tilia/v_object/property/text.rb +21 -36
  53. data/lib/tilia/v_object/property/time.rb +29 -6
  54. data/lib/tilia/v_object/property/unknown.rb +2 -2
  55. data/lib/tilia/v_object/property/uri.rb +24 -5
  56. data/lib/tilia/v_object/property/utc_offset.rb +5 -5
  57. data/lib/tilia/v_object/property/v_card.rb +1 -0
  58. data/lib/tilia/v_object/property/v_card/date.rb +3 -3
  59. data/lib/tilia/v_object/property/v_card/date_and_or_time.rb +30 -42
  60. data/lib/tilia/v_object/property/v_card/date_time.rb +1 -1
  61. data/lib/tilia/v_object/property/v_card/language_tag.rb +4 -4
  62. data/lib/tilia/v_object/property/v_card/time_stamp.rb +5 -5
  63. data/lib/tilia/v_object/reader.rb +12 -11
  64. data/lib/tilia/v_object/recur.rb +2 -0
  65. data/lib/tilia/v_object/recur/event_iterator.rb +30 -27
  66. data/lib/tilia/v_object/recur/max_instances_exceeded_exception.rb +10 -0
  67. data/lib/tilia/v_object/recur/no_instances_exception.rb +1 -1
  68. data/lib/tilia/v_object/recur/r_date_iterator.rb +15 -41
  69. data/lib/tilia/v_object/recur/r_rule_iterator.rb +23 -156
  70. data/lib/tilia/v_object/settings.rb +16 -0
  71. data/lib/tilia/v_object/splitter.rb +1 -0
  72. data/lib/tilia/v_object/splitter/i_calendar.rb +5 -5
  73. data/lib/tilia/v_object/splitter/splitter_interface.rb +2 -2
  74. data/lib/tilia/v_object/splitter/v_card.rb +5 -5
  75. data/lib/tilia/v_object/string_util.rb +25 -9
  76. data/lib/tilia/v_object/time_zone_data.rb +1 -0
  77. data/lib/tilia/v_object/time_zone_util.rb +6 -6
  78. data/lib/tilia/v_object/uuid_util.rb +3 -3
  79. data/lib/tilia/v_object/v_card_converter.rb +24 -21
  80. data/lib/tilia/v_object/version.rb +1 -1
  81. data/lib/tilia/v_object/writer.rb +7 -7
  82. data/test/test_helper.rb +3 -3
  83. data/test/v_object/birthday_calendar_generator_test.rb +22 -0
  84. data/test/v_object/component/v_alarm_test.rb +3 -1
  85. data/test/v_object/component/v_calendar_test.rb +40 -4
  86. data/test/v_object/component/v_card_test.rb +1 -1
  87. data/test/v_object/component_test.rb +5 -3
  88. data/test/v_object/date_time_parser_test.rb +15 -5
  89. data/test/v_object/free_busy_generator_test.rb +5 -5
  90. data/test/v_object/i_tip/broker_attendee_reply_test.rb +19 -0
  91. data/test/v_object/i_tip/broker_delete_event_test.rb +146 -2
  92. data/test/v_object/i_tip/broker_new_event_test.rb +21 -0
  93. data/test/v_object/i_tip/broker_process_reply_test.rb +10 -0
  94. data/test/v_object/i_tip/broker_tester.rb +1 -1
  95. data/test/v_object/i_tip/broker_update_event_test.rb +36 -0
  96. data/test/v_object/issue259_test.rb +24 -0
  97. data/test/v_object/issue40_test.rb +3 -1
  98. data/test/v_object/j_cal_test.rb +15 -12
  99. data/test/v_object/parser/json_test.rb +5 -5
  100. data/test/v_object/parser/mime_dir_test.rb +109 -0
  101. data/test/v_object/property/binary_test.rb +4 -2
  102. data/test/v_object/property/i_calendar/date_time_test.rb +3 -1
  103. data/test/v_object/property/uri_test.rb +23 -0
  104. data/test/v_object/recur/event_iterator/by_month_in_daily_test.rb +1 -1
  105. data/test/v_object/recur/event_iterator/by_set_pos_hang_test.rb +1 -1
  106. data/test/v_object/recur/event_iterator/expand_floating_times_test.rb +9 -9
  107. data/test/v_object/recur/event_iterator/handle_r_date_expand_test.rb +51 -0
  108. data/test/v_object/recur/event_iterator/incorrect_expand_test.rb +3 -5
  109. data/test/v_object/recur/event_iterator/infinite_loop_problem_test.rb +3 -1
  110. data/test/v_object/{issue26_test.rb → recur/event_iterator/issue26_test.rb} +3 -1
  111. data/test/v_object/recur/event_iterator/main_test.rb +9 -3
  112. data/test/v_object/recur/event_iterator/max_instances_test.rb +38 -0
  113. data/test/v_object/recur/event_iterator/missing_overridden_test.rb +3 -5
  114. data/test/v_object/recur/event_iterator/no_instances_test.rb +5 -3
  115. data/test/v_object/recur/event_iterator/override_first_event_test.rb +9 -9
  116. data/test/v_object/recur/r_date_iterator_test.rb +18 -0
  117. data/test/v_object/recur/r_rule_iterator_test.rb +4 -4
  118. data/test/v_object/splitter/i_calendar_test.rb +27 -7
  119. data/test/v_object/splitter/v_card_test.rb +5 -3
  120. data/test/v_object/test_case.rb +14 -4
  121. data/tilia-vobject.gemspec +2 -2
  122. metadata +17 -11
@@ -30,7 +30,10 @@ EOT
30
30
  objects = Tilia::VObject::Splitter::ICalendar.new(temp_file)
31
31
 
32
32
  to_return = ''
33
- while object = objects.next
33
+ loop do
34
+ object = objects.next
35
+ break unless object
36
+
34
37
  to_return += object.serialize
35
38
  end
36
39
  assert_equal([], Tilia::VObject::Reader.read(to_return).validate)
@@ -64,7 +67,10 @@ EOT
64
67
  objects = Tilia::VObject::Splitter::ICalendar.new(temp_file)
65
68
 
66
69
  to_return = ''
67
- while object = objects.next
70
+ loop do
71
+ object = objects.next
72
+ break unless object
73
+
68
74
  to_return += object.serialize
69
75
  end
70
76
 
@@ -75,7 +81,9 @@ EOT
75
81
  data = <<EOT
76
82
  EOT
77
83
  temp_file = create_stream(data)
78
- assert_raises(Tilia::VObject::ParseException) { objects = Tilia::VObject::Splitter::ICalendar.new(temp_file) }
84
+ assert_raises(Tilia::VObject::ParseException) do
85
+ Tilia::VObject::Splitter::ICalendar.new(temp_file)
86
+ end
79
87
  end
80
88
 
81
89
  def test_i_calendar_import_multiple_valid_events
@@ -108,7 +116,10 @@ EOT
108
116
 
109
117
  to_return = ''
110
118
  i = 0
111
- while object = objects.next
119
+ loop do
120
+ object = objects.next
121
+ break unless object
122
+
112
123
  # event[i] already includes \n
113
124
  expected = <<EOT
114
125
  BEGIN:VCALENDAR
@@ -144,7 +155,10 @@ EOT
144
155
  objects = Tilia::VObject::Splitter::ICalendar.new(temp_file)
145
156
 
146
157
  to_return = ''
147
- while object = objects.next
158
+ loop do
159
+ object = objects.next
160
+ break unless object
161
+
148
162
  to_return += object.serialize
149
163
  end
150
164
 
@@ -237,7 +251,10 @@ EOT
237
251
 
238
252
  to_return = ''
239
253
  i = 0
240
- while object = objects.next
254
+ loop do
255
+ object = objects.next
256
+ break unless object
257
+
241
258
  # newlines are part of the variables
242
259
  expected = <<EOT
243
260
  BEGIN:VCALENDAR
@@ -287,7 +304,10 @@ EOT
287
304
  objects = Tilia::VObject::Splitter::ICalendar.new(temp_file)
288
305
 
289
306
  to_return = ''
290
- while object = objects.next
307
+ loop do
308
+ object = objects.next
309
+ break unless object
310
+
291
311
  to_return += object.serialize
292
312
  end
293
313
 
@@ -55,7 +55,8 @@ EOT
55
55
  splitter = Tilia::VObject::Splitter::VCard.new(temp_file)
56
56
 
57
57
  assert_raises(Tilia::VObject::ParseException) do
58
- while object = splitter.next
58
+ loop do
59
+ break unless splitter.next
59
60
  end
60
61
  end
61
62
  end
@@ -97,7 +98,7 @@ EOT
97
98
  temp_file = create_stream(data)
98
99
 
99
100
  objects = Tilia::VObject::Splitter::VCard.new(temp_file)
100
- object = objects.next
101
+ objects.next
101
102
 
102
103
  assert_nil(objects.next)
103
104
  end
@@ -111,7 +112,8 @@ EOT
111
112
 
112
113
  objects = Tilia::VObject::Splitter::VCard.new(temp_file)
113
114
  assert_raises(Tilia::VObject::ParseException) do
114
- while object = objects.next
115
+ loop do
116
+ break unless objects.next
115
117
  end
116
118
  end
117
119
  end
@@ -11,6 +11,8 @@ module Tilia
11
11
  # just get in the way.
12
12
  #
13
13
  # CALSCALE will automatically get removed if it's set to GREGORIAN.
14
+ #
15
+ # Any property that has the value **ANY** will be treated as a wildcard.
14
16
  def assert_v_obj_equals(expected, actual, message = '')
15
17
  get_obj = lambda do |input|
16
18
  input = input.read if input.respond_to?(:read)
@@ -28,12 +30,20 @@ module Tilia
28
30
  input
29
31
  end
30
32
 
31
- expected = get_obj.call(expected)
32
- actual = get_obj.call(actual)
33
+ expected = get_obj.call(expected).serialize
34
+ actual = get_obj.call(actual).serialize
35
+
36
+ # Finding wildcards in expected.
37
+ expected.scan(/^([A-Z]+):\*\*ANY\*\*\r$/) do |match|
38
+ actual = actual.gsub(
39
+ /^#{Regexp.quote(match[0])}:(.*)\r$/,
40
+ "#{match[0]}:**ANY**\r"
41
+ )
42
+ end
33
43
 
34
44
  assert_equal(
35
- expected.serialize,
36
- actual.serialize,
45
+ expected,
46
+ actual,
37
47
  message
38
48
  )
39
49
  end
@@ -9,8 +9,8 @@ Gem::Specification.new do |s|
9
9
  s.email = 'tilia@jakobsack.de'
10
10
  s.files = `git ls-files`.split("\n")
11
11
  s.homepage = 'https://github.com/tilia/tilia-vobject'
12
- s.add_runtime_dependency 'tilia-xml', '~> 1.1'
13
- s.add_runtime_dependency 'activesupport', '~> 4.2'
12
+ s.add_runtime_dependency 'tilia-xml', '~> 1.3'
13
+ s.add_runtime_dependency 'activesupport', '>= 4.0'
14
14
  s.add_runtime_dependency 'mail', '~> 2.6'
15
15
  s.add_runtime_dependency 'tzinfo', '~> 1.2'
16
16
  s.add_runtime_dependency 'rchardet', '~>1.6'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tilia-vobject
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.pre.alpha5
4
+ version: 4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jakob Sack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-03 00:00:00.000000000 Z
11
+ date: 2016-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tilia-xml
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.1'
19
+ version: '1.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.1'
26
+ version: '1.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '4.2'
33
+ version: '4.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '4.2'
40
+ version: '4.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mail
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -127,6 +127,7 @@ files:
127
127
  - lib/tilia/v_object/i_tip/i_tip_exception.rb
128
128
  - lib/tilia/v_object/i_tip/message.rb
129
129
  - lib/tilia/v_object/i_tip/same_organizer_for_all_components_exception.rb
130
+ - lib/tilia/v_object/invalid_data_exception.rb
130
131
  - lib/tilia/v_object/node.rb
131
132
  - lib/tilia/v_object/parameter.rb
132
133
  - lib/tilia/v_object/parse_exception.rb
@@ -164,6 +165,7 @@ files:
164
165
  - lib/tilia/v_object/reader.rb
165
166
  - lib/tilia/v_object/recur.rb
166
167
  - lib/tilia/v_object/recur/event_iterator.rb
168
+ - lib/tilia/v_object/recur/max_instances_exceeded_exception.rb
167
169
  - lib/tilia/v_object/recur/no_instances_exception.rb
168
170
  - lib/tilia/v_object/recur/r_date_iterator.rb
169
171
  - lib/tilia/v_object/recur/r_rule_iterator.rb
@@ -224,7 +226,7 @@ files:
224
226
  - test/v_object/i_tip/message_test.rb
225
227
  - test/v_object/issue153.vcf
226
228
  - test/v_object/issue153_test.rb
227
- - test/v_object/issue26_test.rb
229
+ - test/v_object/issue259_test.rb
228
230
  - test/v_object/issue36_work_around_test.rb
229
231
  - test/v_object/issue40_test.rb
230
232
  - test/v_object/issue64.vcf
@@ -249,6 +251,7 @@ files:
249
251
  - test/v_object/property/i_calendar/duration_test.rb
250
252
  - test/v_object/property/i_calendar/recur_test.rb
251
253
  - test/v_object/property/text_test.rb
254
+ - test/v_object/property/uri_test.rb
252
255
  - test/v_object/property/v_card/date_and_or_time_test.rb
253
256
  - test/v_object/property/v_card/language_tag_test.rb
254
257
  - test/v_object/property_test.rb
@@ -257,11 +260,14 @@ files:
257
260
  - test/v_object/recur/event_iterator/by_set_pos_hang_test.rb
258
261
  - test/v_object/recur/event_iterator/expand_floating_times_test.rb
259
262
  - test/v_object/recur/event_iterator/fifth_tuesday_problem_test.rb
263
+ - test/v_object/recur/event_iterator/handle_r_date_expand_test.rb
260
264
  - test/v_object/recur/event_iterator/incorrect_expand_test.rb
261
265
  - test/v_object/recur/event_iterator/infinite_loop_problem_test.rb
266
+ - test/v_object/recur/event_iterator/issue26_test.rb
262
267
  - test/v_object/recur/event_iterator/issue48_test.rb
263
268
  - test/v_object/recur/event_iterator/issue50_test.rb
264
269
  - test/v_object/recur/event_iterator/main_test.rb
270
+ - test/v_object/recur/event_iterator/max_instances_test.rb
265
271
  - test/v_object/recur/event_iterator/missing_overridden_test.rb
266
272
  - test/v_object/recur/event_iterator/no_instances_test.rb
267
273
  - test/v_object/recur/event_iterator/override_first_event_test.rb
@@ -295,9 +301,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
295
301
  version: '0'
296
302
  required_rubygems_version: !ruby/object:Gem::Requirement
297
303
  requirements:
298
- - - ">"
304
+ - - ">="
299
305
  - !ruby/object:Gem::Version
300
- version: 1.3.1
306
+ version: '0'
301
307
  requirements: []
302
308
  rubyforge_project:
303
309
  rubygems_version: 2.2.5