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.
- checksums.yaml +4 -4
- data/CHANGELOG.sabre.md +59 -2
- data/Gemfile +1 -8
- data/Gemfile.lock +18 -12
- data/LICENSE +1 -1
- data/LICENSE.sabre +1 -1
- data/lib/tilia/v_object.rb +1 -0
- data/lib/tilia/v_object/birthday_calendar_generator.rb +11 -11
- data/lib/tilia/v_object/cli.rb +39 -38
- data/lib/tilia/v_object/component.rb +47 -50
- data/lib/tilia/v_object/component/available.rb +4 -37
- data/lib/tilia/v_object/component/v_alarm.rb +6 -18
- data/lib/tilia/v_object/component/v_availability.rb +6 -39
- data/lib/tilia/v_object/component/v_calendar.rb +66 -98
- data/lib/tilia/v_object/component/v_card.rb +42 -69
- data/lib/tilia/v_object/component/v_event.rb +5 -17
- data/lib/tilia/v_object/component/v_free_busy.rb +4 -16
- data/lib/tilia/v_object/component/v_journal.rb +16 -16
- data/lib/tilia/v_object/component/v_time_zone.rb +2 -14
- data/lib/tilia/v_object/component/v_todo.rb +17 -36
- data/lib/tilia/v_object/date_time_parser.rb +24 -24
- data/lib/tilia/v_object/document.rb +25 -25
- data/lib/tilia/v_object/free_busy_data.rb +7 -7
- data/lib/tilia/v_object/free_busy_generator.rb +73 -75
- data/lib/tilia/v_object/i_tip.rb +1 -0
- data/lib/tilia/v_object/i_tip/broker.rb +134 -116
- data/lib/tilia/v_object/i_tip/i_tip_exception.rb +1 -1
- data/lib/tilia/v_object/i_tip/message.rb +13 -13
- data/lib/tilia/v_object/invalid_data_exception.rb +8 -0
- data/lib/tilia/v_object/node.rb +22 -27
- data/lib/tilia/v_object/parameter.rb +22 -22
- data/lib/tilia/v_object/parse_exception.rb +1 -1
- data/lib/tilia/v_object/parser.rb +1 -0
- data/lib/tilia/v_object/parser/json.rb +9 -19
- data/lib/tilia/v_object/parser/mime_dir.rb +73 -39
- data/lib/tilia/v_object/parser/parser.rb +9 -14
- data/lib/tilia/v_object/parser/xml.rb +33 -50
- data/lib/tilia/v_object/parser/xml/element.rb +1 -0
- data/lib/tilia/v_object/parser/xml/element/key_value.rb +2 -2
- data/lib/tilia/v_object/property.rb +52 -52
- data/lib/tilia/v_object/property/binary.rb +10 -10
- data/lib/tilia/v_object/property/boolean.rb +6 -6
- data/lib/tilia/v_object/property/flat_text.rb +3 -3
- data/lib/tilia/v_object/property/float_value.rb +10 -10
- data/lib/tilia/v_object/property/i_calendar.rb +1 -0
- data/lib/tilia/v_object/property/i_calendar/cal_address.rb +3 -3
- data/lib/tilia/v_object/property/i_calendar/date_time.rb +29 -57
- data/lib/tilia/v_object/property/i_calendar/duration.rb +6 -6
- data/lib/tilia/v_object/property/i_calendar/period.rb +10 -10
- data/lib/tilia/v_object/property/i_calendar/recur.rb +16 -24
- data/lib/tilia/v_object/property/integer_value.rb +8 -8
- data/lib/tilia/v_object/property/text.rb +21 -36
- data/lib/tilia/v_object/property/time.rb +29 -6
- data/lib/tilia/v_object/property/unknown.rb +2 -2
- data/lib/tilia/v_object/property/uri.rb +24 -5
- data/lib/tilia/v_object/property/utc_offset.rb +5 -5
- data/lib/tilia/v_object/property/v_card.rb +1 -0
- data/lib/tilia/v_object/property/v_card/date.rb +3 -3
- data/lib/tilia/v_object/property/v_card/date_and_or_time.rb +30 -42
- data/lib/tilia/v_object/property/v_card/date_time.rb +1 -1
- data/lib/tilia/v_object/property/v_card/language_tag.rb +4 -4
- data/lib/tilia/v_object/property/v_card/time_stamp.rb +5 -5
- data/lib/tilia/v_object/reader.rb +12 -11
- data/lib/tilia/v_object/recur.rb +2 -0
- data/lib/tilia/v_object/recur/event_iterator.rb +30 -27
- data/lib/tilia/v_object/recur/max_instances_exceeded_exception.rb +10 -0
- data/lib/tilia/v_object/recur/no_instances_exception.rb +1 -1
- data/lib/tilia/v_object/recur/r_date_iterator.rb +15 -41
- data/lib/tilia/v_object/recur/r_rule_iterator.rb +23 -156
- data/lib/tilia/v_object/settings.rb +16 -0
- data/lib/tilia/v_object/splitter.rb +1 -0
- data/lib/tilia/v_object/splitter/i_calendar.rb +5 -5
- data/lib/tilia/v_object/splitter/splitter_interface.rb +2 -2
- data/lib/tilia/v_object/splitter/v_card.rb +5 -5
- data/lib/tilia/v_object/string_util.rb +25 -9
- data/lib/tilia/v_object/time_zone_data.rb +1 -0
- data/lib/tilia/v_object/time_zone_util.rb +6 -6
- data/lib/tilia/v_object/uuid_util.rb +3 -3
- data/lib/tilia/v_object/v_card_converter.rb +24 -21
- data/lib/tilia/v_object/version.rb +1 -1
- data/lib/tilia/v_object/writer.rb +7 -7
- data/test/test_helper.rb +3 -3
- data/test/v_object/birthday_calendar_generator_test.rb +22 -0
- data/test/v_object/component/v_alarm_test.rb +3 -1
- data/test/v_object/component/v_calendar_test.rb +40 -4
- data/test/v_object/component/v_card_test.rb +1 -1
- data/test/v_object/component_test.rb +5 -3
- data/test/v_object/date_time_parser_test.rb +15 -5
- data/test/v_object/free_busy_generator_test.rb +5 -5
- data/test/v_object/i_tip/broker_attendee_reply_test.rb +19 -0
- data/test/v_object/i_tip/broker_delete_event_test.rb +146 -2
- data/test/v_object/i_tip/broker_new_event_test.rb +21 -0
- data/test/v_object/i_tip/broker_process_reply_test.rb +10 -0
- data/test/v_object/i_tip/broker_tester.rb +1 -1
- data/test/v_object/i_tip/broker_update_event_test.rb +36 -0
- data/test/v_object/issue259_test.rb +24 -0
- data/test/v_object/issue40_test.rb +3 -1
- data/test/v_object/j_cal_test.rb +15 -12
- data/test/v_object/parser/json_test.rb +5 -5
- data/test/v_object/parser/mime_dir_test.rb +109 -0
- data/test/v_object/property/binary_test.rb +4 -2
- data/test/v_object/property/i_calendar/date_time_test.rb +3 -1
- data/test/v_object/property/uri_test.rb +23 -0
- data/test/v_object/recur/event_iterator/by_month_in_daily_test.rb +1 -1
- data/test/v_object/recur/event_iterator/by_set_pos_hang_test.rb +1 -1
- data/test/v_object/recur/event_iterator/expand_floating_times_test.rb +9 -9
- data/test/v_object/recur/event_iterator/handle_r_date_expand_test.rb +51 -0
- data/test/v_object/recur/event_iterator/incorrect_expand_test.rb +3 -5
- data/test/v_object/recur/event_iterator/infinite_loop_problem_test.rb +3 -1
- data/test/v_object/{issue26_test.rb → recur/event_iterator/issue26_test.rb} +3 -1
- data/test/v_object/recur/event_iterator/main_test.rb +9 -3
- data/test/v_object/recur/event_iterator/max_instances_test.rb +38 -0
- data/test/v_object/recur/event_iterator/missing_overridden_test.rb +3 -5
- data/test/v_object/recur/event_iterator/no_instances_test.rb +5 -3
- data/test/v_object/recur/event_iterator/override_first_event_test.rb +9 -9
- data/test/v_object/recur/r_date_iterator_test.rb +18 -0
- data/test/v_object/recur/r_rule_iterator_test.rb +4 -4
- data/test/v_object/splitter/i_calendar_test.rb +27 -7
- data/test/v_object/splitter/v_card_test.rb +5 -3
- data/test/v_object/test_case.rb +14 -4
- data/tilia-vobject.gemspec +2 -2
- 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
|
-
|
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
|
-
|
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)
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
115
|
+
loop do
|
116
|
+
break unless objects.next
|
115
117
|
end
|
116
118
|
end
|
117
119
|
end
|
data/test/v_object/test_case.rb
CHANGED
@@ -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
|
36
|
-
actual
|
45
|
+
expected,
|
46
|
+
actual,
|
37
47
|
message
|
38
48
|
)
|
39
49
|
end
|
data/tilia-vobject.gemspec
CHANGED
@@ -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.
|
13
|
-
s.add_runtime_dependency 'activesupport', '
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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/
|
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:
|
306
|
+
version: '0'
|
301
307
|
requirements: []
|
302
308
|
rubyforge_project:
|
303
309
|
rubygems_version: 2.2.5
|