vobject 1.0.2 → 1.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.
@@ -19,66 +19,66 @@ module Vobject::Vcalendar
19
19
  /WEEKLY/i.r | /MONTHLY/i.r | /YEARLY/i.r
20
20
  enddate = C::DATE_TIME | C::DATE
21
21
  seconds = /[0-9]{1,2}/.r
22
- byseclist = seq(seconds << ",".r, lazy { byseclist }) do |s, l|
22
+ byseclist = seq(seconds << ",".r, lazy { byseclist }) do |(s, l)|
23
23
  [s, l].flatten
24
24
  end | seconds.map { |s| [s] }
25
25
  minutes = /[0-9]{1,2}/.r
26
- byminlist = seq(minutes << ",".r, lazy { byminlist }) do |m, l|
26
+ byminlist = seq(minutes << ",".r, lazy { byminlist }) do |(m, l)|
27
27
  [m, l].flatten
28
28
  end | minutes.map { |m| [m] }
29
29
  hours = /[0-9]{1,2}/.r
30
- byhrlist = seq(hours << ",".r, lazy { byhrlist }) do |h, l|
30
+ byhrlist = seq(hours << ",".r, lazy { byhrlist }) do |(h, l)|
31
31
  [h, l].flatten
32
32
  end | hours.map { |h| [h] }
33
33
  ordwk = /[0-9]{1,2}/.r
34
34
  weekday = /SU/i.r | /MO/i.r | /TU/i.r | /WE/i.r | /TH/i.r | /FR/i.r | /SA/i.r
35
- weekdaynum1 = seq(C::SIGN._?, ordwk) do |s, o|
35
+ weekdaynum1 = seq(C::SIGN._?, ordwk) do |(s, o)|
36
36
  h = { ordwk: o }
37
37
  h[:sign] = s[0] unless s.empty?
38
38
  h
39
39
  end
40
- weekdaynum = seq(weekdaynum1._?, weekday) do |a, b|
40
+ weekdaynum = seq(weekdaynum1._?, weekday) do |(a, b)|
41
41
  h = { weekday: b }
42
42
  h = h.merge a[0] unless a.empty?
43
43
  h
44
44
  end
45
- bywdaylist = seq(weekdaynum << ",".r, lazy { bywdaylist }) do |w, l|
45
+ bywdaylist = seq(weekdaynum << ",".r, lazy { bywdaylist }) do |(w, l)|
46
46
  [w, l].flatten
47
47
  end | weekdaynum.map { |w| [w] }
48
48
  ordmoday = /[0-9]{1,2}/.r
49
- monthdaynum = seq(C::SIGN._?, ordmoday) do |s, o|
49
+ monthdaynum = seq(C::SIGN._?, ordmoday) do |(s, o)|
50
50
  h = { ordmoday: o }
51
51
  h[:sign] = s[0] unless s.empty?
52
52
  h
53
53
  end
54
- bymodaylist = seq(monthdaynum << ",".r, lazy { bymodaylist }) do |m, l|
54
+ bymodaylist = seq(monthdaynum << ",".r, lazy { bymodaylist }) do |(m, l)|
55
55
  [m, l].flatten
56
56
  end | monthdaynum.map { |m| [m] }
57
57
  ordyrday = /[0-9]{1,3}/.r
58
- yeardaynum = seq(C::SIGN._?, ordyrday) do |s, o|
58
+ yeardaynum = seq(C::SIGN._?, ordyrday) do |(s, o)|
59
59
  h = { ordyrday: o }
60
60
  h[:sign] = s[0] unless s.empty?
61
61
  h
62
62
  end
63
- byyrdaylist = seq(yeardaynum << ",".r, lazy { byyrdaylist }) do |y, l|
63
+ byyrdaylist = seq(yeardaynum << ",".r, lazy { byyrdaylist }) do |(y, l)|
64
64
  [y, l].flatten
65
65
  end | yeardaynum.map { |y| [y] }
66
- weeknum = seq(C::SIGN._?, ordwk) do |s, o|
66
+ weeknum = seq(C::SIGN._?, ordwk) do |(s, o)|
67
67
  h = { ordwk: o }
68
68
  h[:sign] = s[0] unless s.empty?
69
69
  h
70
70
  end
71
- bywknolist = seq(weeknum << ",".r, lazy { bywknolist }) do |w, l|
71
+ bywknolist = seq(weeknum << ",".r, lazy { bywknolist }) do |(w, l)|
72
72
  [w, l].flatten
73
73
  end | weeknum.map { |w| [w] }
74
74
  # monthnum = /[0-9]{1,2}/.r
75
75
  # RFC 7529 add leap month indicator
76
76
  monthnum = /[0-9]{1,2}L?/i.r
77
- bymolist = seq(monthnum << ",".r, lazy { bymolist }) do |m, l|
77
+ bymolist = seq(monthnum << ",".r, lazy { bymolist }) do |(m, l)|
78
78
  [m, l].flatten
79
79
  end | monthnum.map { |m| [m] }
80
80
  setposday = yeardaynum
81
- bysplist = seq(setposday << ",".r, lazy { bysplist }) do |s, l|
81
+ bysplist = seq(setposday << ",".r, lazy { bysplist }) do |(s, l)|
82
82
  [s, l].flatten
83
83
  end | setposday.map { |s| [s] }
84
84
  # http://www.unicode.org/repos/cldr/tags/latest/common/bcp47/calendar.xml
@@ -89,24 +89,24 @@ module Vobject::Vcalendar
89
89
  /islamic-rgsa/i.r | /iso8601/i.r | /japanese/i.r | /persian/i.r |
90
90
  /roc/i.r | /islamicc/i.r | /gregorian/i.r
91
91
  skip = /OMIT/i.r | /BACKWARD/i.r | /FORWARD/i.r
92
- recur_rule_part = seq(/FREQ/i.r << "=".r, freq) { |_k, v| { freq: v } } |
93
- seq(/UNTIL/i.r << "=".r, enddate) { |_k, v| { until: v } } |
94
- seq(/COUNT/i.r << "=".r, /[0-9]+/i.r) { |_k, v| { count: v } } |
95
- seq(/INTERVAL/i.r << "=".r, /[0-9]+/i.r) { |_k, v| { interval: v } } |
96
- seq(/BYSECOND/i.r << "=".r, byseclist) { |_k, v| { bysecond: v } } |
97
- seq(/BYMINUTE/i.r << "=".r, byminlist) { |_k, v| { byminute: v } } |
98
- seq(/BYHOUR/i.r << "=".r, byhrlist) { |_k, v| { byhour: v } } |
99
- seq(/BYDAY/i.r << "=".r, bywdaylist) { |_k, v| { byday: v } } |
100
- seq(/BYMONTHDAY/i.r << "=".r, bymodaylist) { |_k, v| { bymonthday: v } } |
101
- seq(/BYYEARDAY/i.r << "=".r, byyrdaylist) { |_k, v| { byyearday: v } } |
102
- seq(/BYWEEKNO/i.r << "=".r, bywknolist) { |_k, v| { byweekno: v } } |
103
- seq(/BYMONTH/i.r << "=".r, bymolist) { |_k, v| { bymonth: v } } |
104
- seq(/BYSETPOS/i.r << "=".r, bysplist) { |_k, v| { bysetpos: v } } |
105
- seq(/WKST/i.r << "=".r, weekday) { |_k, v| { wkst: v } } |
92
+ recur_rule_part = seq(/FREQ/i.r << "=".r, freq) { |(_k, v)| { freq: v } } |
93
+ seq(/UNTIL/i.r << "=".r, enddate) { |(_k, v)| { until: v } } |
94
+ seq(/COUNT/i.r << "=".r, /[0-9]+/i.r) { |(_k, v)| { count: v } } |
95
+ seq(/INTERVAL/i.r << "=".r, /[0-9]+/i.r) { |(_k, v)| { interval: v } } |
96
+ seq(/BYSECOND/i.r << "=".r, byseclist) { |(_k, v)| { bysecond: v } } |
97
+ seq(/BYMINUTE/i.r << "=".r, byminlist) { |(_k, v)| { byminute: v } } |
98
+ seq(/BYHOUR/i.r << "=".r, byhrlist) { |(_k, v)| { byhour: v } } |
99
+ seq(/BYDAY/i.r << "=".r, bywdaylist) { |(_k, v)| { byday: v } } |
100
+ seq(/BYMONTHDAY/i.r << "=".r, bymodaylist) { |(_k, v)| { bymonthday: v } } |
101
+ seq(/BYYEARDAY/i.r << "=".r, byyrdaylist) { |(_k, v)| { byyearday: v } } |
102
+ seq(/BYWEEKNO/i.r << "=".r, bywknolist) { |(_k, v)| { byweekno: v } } |
103
+ seq(/BYMONTH/i.r << "=".r, bymolist) { |(_k, v)| { bymonth: v } } |
104
+ seq(/BYSETPOS/i.r << "=".r, bysplist) { |(_k, v)| { bysetpos: v } } |
105
+ seq(/WKST/i.r << "=".r, weekday) { |(_k, v)| { wkst: v } } |
106
106
  # RFC 7529
107
- seq(/RSCALE/i.r << "=".r, rscale) { |_k, v| { rscale: v } } |
108
- seq(/SKIP/i.r << "=".r, skip) { |_k, v| { skip: v } }
109
- recur1 = seq(recur_rule_part, ";", lazy { recur1 }) { |h, _, r| h.merge r } |
107
+ seq(/RSCALE/i.r << "=".r, rscale) { |(_k, v)| { rscale: v } } |
108
+ seq(/SKIP/i.r << "=".r, skip) { |(_k, v)| { skip: v } }
109
+ recur1 = seq(recur_rule_part, ";", lazy { recur1 }) { |(h, _, r)| h.merge r } |
110
110
  recur_rule_part
111
111
  recur = recur1.map { |r| PropertyValue::Recur.new r }
112
112
  recur.eof
@@ -151,7 +151,7 @@ module Vobject::Vcalendar
151
151
 
152
152
  def geovalue
153
153
  float = prim(:double)
154
- geovalue = seq(float << ";".r, float) do |a, b|
154
+ geovalue = seq(float << ";".r, float) do |(a, b)|
155
155
  if a <= 180.0 && a >= -180.0 && b <= 180 && b > -180
156
156
  PropertyValue::Geovalue.new(lat: a, long: b)
157
157
  else
@@ -173,7 +173,7 @@ module Vobject::Vcalendar
173
173
 
174
174
  def versionvalue
175
175
  versionvalue = seq(prim(:double) << ";".r,
176
- prim(:double)) do |x, y|
176
+ prim(:double)) do |(x, y)|
177
177
  PropertyValue::Version.new [x, y]
178
178
  end | "2.0".r.map do
179
179
  PropertyValue::Version.new ["2.0"]
@@ -184,7 +184,7 @@ module Vobject::Vcalendar
184
184
  end
185
185
 
186
186
  def binary
187
- binary = seq(/[a-zA-Z0-9+\/]*/.r, /={0,2}/.r) do |b, q|
187
+ binary = seq(/[a-zA-Z0-9+\/]*/.r, /={0,2}/.r) do |(b, q)|
188
188
  if (b.length + q.length) % 4 == 0
189
189
  PropertyValue::Binary.new(b + q)
190
190
  else
@@ -212,7 +212,7 @@ module Vobject::Vcalendar
212
212
 
213
213
  def textlist
214
214
  textlist1 =
215
- seq(C::TEXT << ",".r, lazy { textlist1 }) { |a, b| [unescape(a), b].flatten } |
215
+ seq(C::TEXT << ",".r, lazy { textlist1 }) { |(a, b)| [unescape(a), b].flatten } |
216
216
  C::TEXT.map { |t| [unescape(t)] }
217
217
  textlist = textlist1.map { |m| PropertyValue::Textlist.new m }
218
218
  textlist.eof
@@ -220,8 +220,8 @@ module Vobject::Vcalendar
220
220
 
221
221
  def request_statusvalue
222
222
  @req_status = Set.new %w{2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 4.0 5.0 5.1 5.2 5.3}
223
- extdata = seq(";".r, C::TEXT) { |_, t| t }
224
- request_statusvalue = seq(/[0-9](\.[0-9]){1,2}/.r << ";".r, C::TEXT, extdata._?) do |n, t1, t2|
223
+ extdata = seq(";".r, C::TEXT) { |(_, t)| t }
224
+ request_statusvalue = seq(/[0-9](\.[0-9]){1,2}/.r << ";".r, C::TEXT, extdata._?) do |(n, t1, t2)|
225
225
  return { error: "Invalid request status #{n}" } unless @req_status.include?(n) # RFC 5546
226
226
  hash = { statcode: n, statdesc: t1 }
227
227
  hash[:extdata] = t2[0] unless t2.empty?
@@ -264,7 +264,7 @@ module Vobject::Vcalendar
264
264
  end
265
265
 
266
266
  def datelist
267
- datelist1 = seq(C::DATE << ",".r, lazy { datelist1 }) do |d, l|
267
+ datelist1 = seq(C::DATE << ",".r, lazy { datelist1 }) do |(d, l)|
268
268
  [d, l].flatten
269
269
  end | C::DATE.map { |d| [d] }
270
270
  datelist = datelist1.map { |m| PropertyValue::Datelist.new m }
@@ -277,7 +277,7 @@ module Vobject::Vcalendar
277
277
 
278
278
  def date_timelist
279
279
  date_timelist1 = seq(C::DATE_TIME << ",".r,
280
- lazy { date_timelist1 }) do |d, l|
280
+ lazy { date_timelist1 }) do |(d, l)|
281
281
  [d, l].flatten
282
282
  end | C::DATE_TIME.map { |d| [d] }
283
283
  date_timelist = date_timelist1.map do |m|
@@ -292,7 +292,7 @@ module Vobject::Vcalendar
292
292
  end
293
293
 
294
294
  def date_time_utclist
295
- date_time_utclist1 = seq(C::DATE_TIME_UTC << ",".r, lazy { date_time_utclist1 }) do |d, l|
295
+ date_time_utclist1 = seq(C::DATE_TIME_UTC << ",".r, lazy { date_time_utclist1 }) do |(d, l)|
296
296
  [d, l].flatten
297
297
  end | C::DATE_TIME_UTC.map { |d| [d] }
298
298
  date_time_utclist = date_time_utclist1.map do |m|
@@ -307,14 +307,14 @@ module Vobject::Vcalendar
307
307
  end
308
308
 
309
309
  def periodlist
310
- period_explicit = seq(C::DATE_TIME << "/".r, C::DATE_TIME) do |s, e|
310
+ period_explicit = seq(C::DATE_TIME << "/".r, C::DATE_TIME) do |(s, e)|
311
311
  { start: s, end: e }
312
312
  end
313
- period_start = seq(C::DATE_TIME << "/".r, C::DURATION) do |s, d|
313
+ period_start = seq(C::DATE_TIME << "/".r, C::DURATION) do |(s, d)|
314
314
  { start: s, duration: PropertyValue::Duration.new(d) }
315
315
  end
316
316
  period = period_explicit | period_start
317
- periodlist1 = seq(period << ",".r, lazy { periodlist1 }) do |p, l|
317
+ periodlist1 = seq(period << ",".r, lazy { periodlist1 }) do |(p, l)|
318
318
  [p, l].flatten
319
319
  end | period.map { |p| [p] }
320
320
  periodlist = periodlist1.map { |m| PropertyValue::Periodlist.new m }
@@ -330,7 +330,7 @@ module Vobject::Vcalendar
330
330
 
331
331
  def utc_offset
332
332
  utc_offset = seq(C::SIGN, /[0-9]{2}/.r, /[0-9]{2}/.r,
333
- /[0-9]{2}/.r._?) do |sign, h, m, sec|
333
+ /[0-9]{2}/.r._?) do |(sign, h, m, sec)|
334
334
  hash = { sign: sign, hr: h, min: m }
335
335
  hash[:sec] = sec[0] unless sec.empty?
336
336
  PropertyValue::Utcoffset.new hash
@@ -32,66 +32,66 @@ module Vcard::V3_0
32
32
  # parameters && parameter types
33
33
  paramname = /ENCODING/i.r | /LANGUAGE/i.r | /CONTEXT/i.r | /TYPE/i.r | /VALUE/i.r | /PREF/i.r
34
34
  otherparamname = C::NAME_VCARD ^ paramname
35
- paramvalue = C::QUOTEDSTRING_VCARD.map { |s| s } | C::PTEXT_VCARD.map(&:upcase)
35
+ paramvalue = C::QUOTEDSTRING_VCARD.map { |s| s } | C::PTEXT_VCARD.map { |x, _| x.upcase }
36
36
 
37
37
  # prefvalue = /[0-9]{1,2}/i.r | "100".r
38
38
  valuetype = /URI/i.r | /DATE/i.r | /DATE-TIME/i.r | /BINARY/i.r | /PTEXT/i.r
39
39
  # mediaattr = /[!\"#$%&'*+.^A-Z0-9a-z_`i{}|~-]+/.r
40
40
  # mediavalue1 = mediaattr | C::QUOTEDSTRING_VCARD
41
- # mediatail = seq(";".r >> mediaattr, "=".r << mediavalue1).map do |a, v|
41
+ # mediatail = seq(";".r >> mediaattr, "=".r << mediavalue1).map do |(a, v)|
42
42
  # ";#{a}=#{v}"
43
43
  # end
44
44
  # rfc4288regname = /[A-Za-z0-9!#$&.+^+-]{1,127}/.r
45
45
  # rfc4288typename = rfc4288regname
46
46
  # rfc4288subtypename = rfc4288regname
47
- # mediavalue = seq(rfc4288typename << "/".r, rfc4288subtypename, # mediatail.star).map do |t, s, tail|
47
+ # mediavalue = seq(rfc4288typename << "/".r, rfc4288subtypename, # mediatail.star).map do |(t, s, tail)|
48
48
  # ret = "#{t}/#{s}"
49
49
  # ret = ret . tail[0] unless tail.empty?
50
50
  # ret
51
51
  # end
52
- pvalue_list = (seq(paramvalue << ",".r, lazy { pvalue_list }) & /[;:]/.r).map do |e, list|
52
+ pvalue_list = (seq(paramvalue << ",".r, lazy { pvalue_list }) & /[;:]/.r).map do |(e, list)|
53
53
  [e.sub(Regexp.new("^\"(.+)\"$"), '\1').gsub(/\\n/, "\n"), list].flatten
54
54
  end | (paramvalue & /[;:]/.r).map do |e|
55
55
  [e.sub(Regexp.new("^\"(.+)\"$"), '\1').gsub(/\\n/, "\n")]
56
56
  end
57
- typevaluelist = seq(C::IANATOKEN, ",".r >> lazy { typevaluelist }).map do |t, l|
57
+ typevaluelist = seq(C::IANATOKEN, ",".r >> lazy { typevaluelist }).map do |(t, l)|
58
58
  [t.upcase, l].flatten
59
59
  end | C::IANATOKEN.map { |t| [t.upcase] }
60
- quoted_string_list = (seq(C::QUOTEDSTRING_VCARD << ",".r, lazy { quoted_string_list }) & /[;:]/.r).map do |e, list|
60
+ quoted_string_list = (seq(C::QUOTEDSTRING_VCARD << ",".r, lazy { quoted_string_list }) & /[;:]/.r).map do |(e, list)|
61
61
  [e.sub(Regexp.new("^\"(.+)\"$"), '\1').gsub(/\\n/, "\n"), list].flatten
62
62
  end | (C::QUOTEDSTRING_VCARD & /[;:]/.r).map do |e|
63
63
  [e.sub(Regexp.new("^\"(.+)\"$"), '\1').gsub(/\\n/, "\n")]
64
64
  end
65
65
 
66
- # fmttypevalue = seq(rfc4288typename, "/", rfc4288subtypename).map(&:join)
66
+ # fmttypevalue = seq(rfc4288typename, "/", rfc4288subtypename).map {|x, _| x.join }
67
67
  rfc1766primarytag = /[A-Za-z]{1,8}/.r
68
- rfc1766subtag = seq("-", /[A-Za-z]{1,8}/.r) { |a, b| a + b }
69
- rfc1766language = seq(rfc1766primarytag, rfc1766subtag.star) do |a, b|
68
+ rfc1766subtag = seq("-", /[A-Za-z]{1,8}/.r) { |(a, b)| a + b }
69
+ rfc1766language = seq(rfc1766primarytag, rfc1766subtag.star) do |(a, b)|
70
70
  a += b[0] unless b.empty?
71
71
  a
72
72
  end
73
73
 
74
- param = seq(/ENCODING/i.r, "=", /b/.r) do |name, _, val|
74
+ param = seq(/ENCODING/i.r, "=", /b/.r) do |(name, _, val)|
75
75
  { name.upcase.tr("-", "_").to_sym => val }
76
- end | seq(/LANGUAGE/i.r, "=", rfc1766language) do |name, _, val|
76
+ end | seq(/LANGUAGE/i.r, "=", rfc1766language) do |(name, _, val)|
77
77
  { name.upcase.tr("-", "_").to_sym => val.upcase }
78
- end | seq(/CONTEXT/i.r, "=", /word/.r) do |name, _, val|
78
+ end | seq(/CONTEXT/i.r, "=", /word/.r) do |(name, _, val)|
79
79
  { name.upcase.tr("-", "_").to_sym => val.upcase }
80
- end | seq(/TYPE/i.r, "=", typevaluelist) do |name, _, val|
80
+ end | seq(/TYPE/i.r, "=", typevaluelist) do |(name, _, val)|
81
81
  { name.upcase.tr("-", "_").to_sym => val }
82
- end | seq(/VALUE/i.r, "=", valuetype) do |name, _, val|
82
+ end | seq(/VALUE/i.r, "=", valuetype) do |(name, _, val)|
83
83
  { name.upcase.tr("-", "_").to_sym => val }
84
84
  end | /PREF/i.r.map do |_name|
85
85
  # this is likely erroneous use of VCARD 2.1 convention in RFC2739; converting to canonical TYPE=PREF
86
86
  { TYPE: ["PREF"] }
87
- end | seq(otherparamname, "=", pvalue_list) do |name, _, val|
87
+ end | seq(otherparamname, "=", pvalue_list) do |(name, _, val)|
88
88
  val = val[0] if val.length == 1
89
89
  { name.upcase.tr("-", "_").to_sym => val }
90
- end | seq(paramname, "=", pvalue_list) do |name, _, val|
90
+ end | seq(paramname, "=", pvalue_list) do |(name, _, val)|
91
91
  parse_err("Violated format of parameter value #{name} = #{val}")
92
92
  end
93
93
 
94
- params = seq(";".r >> param & ";", lazy { params }) do |p, ps|
94
+ params = seq(";".r >> param & ";", lazy { params }) do |(p, ps)|
95
95
  p.merge(ps) do |key, old, new|
96
96
  if @cardinality1[:PARAM].include?(key)
97
97
  parse_err("Violated cardinality of parameter #{key}")
@@ -102,7 +102,7 @@ module Vcard::V3_0
102
102
  end | seq(";".r >> param).map { |e| e[0] }
103
103
 
104
104
  contentline = seq(linegroup._?, C::NAME_VCARD, params._? << ":".r,
105
- C::VALUE, /(\r|\n|\r\n)/) do |g, name, p, value, _|
105
+ C::VALUE, /(\r|\n|\r\n)/) do |(g, name, p, value, _)|
106
106
  key = name.upcase.tr("-", "_").to_sym
107
107
  hash = { key => {} }
108
108
  hash[key][:value], errors1 = Typegrammars.typematch(strict, key, p[0], :GENERIC, value, @ctx)
@@ -112,7 +112,7 @@ module Vcard::V3_0
112
112
  hash[key][:params] = p[0] unless p.empty?
113
113
  hash
114
114
  end
115
- props = seq(contentline, lazy { props }) do |c, rest|
115
+ props = seq(contentline, lazy { props }) do |(c, rest)|
116
116
  c.merge(rest) do |key, old, new|
117
117
  if @cardinality1[:PROP].include?(key.upcase)
118
118
  parse_err("Violated cardinality of property #{key}")
@@ -123,7 +123,7 @@ module Vcard::V3_0
123
123
  end | ("".r & beginend).map { {} }
124
124
 
125
125
  calpropname = /VERSION/i.r
126
- calprop = seq(linegroup._?, calpropname << ":".r, C::VALUE, /[\r\n]/) do |g, key, value, _|
126
+ calprop = seq(linegroup._?, calpropname << ":".r, C::VALUE, /[\r\n]/) do |(g, key, value, _)|
127
127
  key = key.upcase.tr("-", "_").to_sym
128
128
  hash = { key => {} }
129
129
  hash[key][:value], errors1 = Typegrammars.typematch(strict, key, nil, :VCARD, value, @ctx)
@@ -12,7 +12,7 @@ module Vcard::V3_0
12
12
  # property value types, each defining their own parser
13
13
 
14
14
  def binary
15
- binary = seq(/[a-zA-Z0-9+\/]*/.r, /={0,2}/.r) do |b, q|
15
+ binary = seq(/[a-zA-Z0-9+\/]*/.r, /={0,2}/.r) do |(b, q)|
16
16
  if (b.length + q.length) % 4 == 0
17
17
  PropertyValue::Binary.new(b + q)
18
18
  else
@@ -31,7 +31,7 @@ module Vcard::V3_0
31
31
 
32
32
  def geovalue
33
33
  float = prim(:double)
34
- geovalue = seq(float << ";".r, float) do |a, b|
34
+ geovalue = seq(float << ";".r, float) do |(a, b)|
35
35
  if a <= 180.0 && a >= -180.0 && b <= 180 && b > -180
36
36
  PropertyValue::Geovalue.new(lat: a, long: b)
37
37
  else
@@ -43,7 +43,7 @@ module Vcard::V3_0
43
43
 
44
44
  def classvalue
45
45
  iana_token = /[a-zA-Z\d\-]+/.r
46
- xname = seq(/[xX]-/, /[a-zA-Z0-9-]+/.r).map(&:join)
46
+ xname = seq(/[xX]-/, /[a-zA-Z0-9-]+/.r).map {|x, _| x.join }
47
47
  classvalue = (/PUBLIC/i.r | /PRIVATE/i.r | /CONFIDENTIAL/i.r | iana_token | xname).map do |m|
48
48
  PropertyValue::ClassValue.new m
49
49
  end
@@ -94,7 +94,7 @@ module Vcard::V3_0
94
94
  def textlist
95
95
  text = C::TEXT3
96
96
  textlist1 =
97
- seq(text << ",".r, lazy { textlist1 }) { |a, b| [unescape(a), b].flatten } |
97
+ seq(text << ",".r, lazy { textlist1 }) { |(a, b)| [unescape(a), b].flatten } |
98
98
  text.map { |t| [unescape(t)] }
99
99
  textlist = textlist1.map { |m| PropertyValue::Textlist.new m }
100
100
  textlist.eof
@@ -103,21 +103,21 @@ module Vcard::V3_0
103
103
  def org
104
104
  text = C::TEXT3
105
105
  org1 =
106
- seq(text << ";".r, lazy { org1 }) { |a, b| [unescape(a), b].flatten } |
106
+ seq(text << ";".r, lazy { org1 }) { |(a, b)| [unescape(a), b].flatten } |
107
107
  text.map { |t| [unescape(t)] }
108
108
  org = org1.map { |o| PropertyValue::Org.new o }
109
109
  org.eof
110
110
  end
111
111
 
112
112
  def date_t
113
- date_t = seq(/[0-9]{4}/.r, /-/.r._? >> /[0-9]{2}/.r, /-/.r._? >> /[0-9]{2}/.r) do |yy, mm, dd|
113
+ date_t = seq(/[0-9]{4}/.r, /-/.r._? >> /[0-9]{2}/.r, /-/.r._? >> /[0-9]{2}/.r) do |(yy, mm, dd)|
114
114
  PropertyValue::Date.new(year: yy, month: mm, day: dd)
115
115
  end
116
116
  date_t.eof
117
117
  end
118
118
 
119
119
  def time_t
120
- utc_offset = seq(C::SIGN, /[0-9]{2}/.r << /:/.r._?, /[0-9]{2}/.r) do |s, h, m|
120
+ utc_offset = seq(C::SIGN, /[0-9]{2}/.r << /:/.r._?, /[0-9]{2}/.r) do |(s, h, m)|
121
121
  { sign: s, hour: h, min: m }
122
122
  end
123
123
  zone = utc_offset.map { |u| u } |
@@ -126,7 +126,7 @@ module Vcard::V3_0
126
126
  minute = /[0-9]{2}/.r
127
127
  second = /[0-9]{2}/.r
128
128
  secfrac = seq(",".r >> /[0-9]+/)
129
- time_t = seq(hour << /:/._?, minute << /:/._?, second, secfrac._?, zone._?) do |h, m, s, f, z|
129
+ time_t = seq(hour << /:/._?, minute << /:/._?, second, secfrac._?, zone._?) do |(h, m, s, f, z)|
130
130
  h = { hour: h, min: m, sec: s }
131
131
  h[:zone] = z[0] unless z.empty?
132
132
  h[:secfrac] = f[0] unless f.empty?
@@ -136,7 +136,7 @@ module Vcard::V3_0
136
136
  end
137
137
 
138
138
  def date_time
139
- utc_offset = seq(C::SIGN, /[0-9]{2}/.r << /:/.r._?, /[0-9]{2}/.r) do |s, h, m|
139
+ utc_offset = seq(C::SIGN, /[0-9]{2}/.r << /:/.r._?, /[0-9]{2}/.r) do |(s, h, m)|
140
140
  { sign: s, hour: h, min: m }
141
141
  end
142
142
  zone = utc_offset.map { |u| u } |
@@ -145,10 +145,10 @@ module Vcard::V3_0
145
145
  minute = /[0-9]{2}/.r
146
146
  second = /[0-9]{2}/.r
147
147
  secfrac = seq(",".r >> /[0-9]+/)
148
- date = seq(/[0-9]{4}/.r, /-/.r._?, /[0-9]{2}/.r, /-/.r._?, /[0-9]{2}/.r) do |yy, _, mm, _, dd|
148
+ date = seq(/[0-9]{4}/.r, /-/.r._?, /[0-9]{2}/.r, /-/.r._?, /[0-9]{2}/.r) do |(yy, _, mm, _, dd)|
149
149
  { year: yy, month: mm, day: dd }
150
150
  end
151
- time = seq(hour << /:/.r._?, minute << /:/.r._?, second, secfrac._?, zone._?) do |h, m, s, f, z|
151
+ time = seq(hour << /:/.r._?, minute << /:/.r._?, second, secfrac._?, zone._?) do |(h, m, s, f, z)|
152
152
  h = { hour: h, min: m, sec: s }
153
153
  h[:zone] = if z.empty?
154
154
  ""
@@ -158,14 +158,14 @@ module Vcard::V3_0
158
158
  h[:secfrac] = f[0] unless f.empty?
159
159
  h
160
160
  end
161
- date_time = seq(date << "T".r, time) do |d, t|
161
+ date_time = seq(date << "T".r, time) do |(d, t)|
162
162
  PropertyValue::DateTimeLocal.new(d.merge(t))
163
163
  end
164
164
  date_time.eof
165
165
  end
166
166
 
167
167
  def date_or_date_time
168
- utc_offset = seq(C::SIGN, /[0-9]{2}/.r << /:/.r._?, /[0-9]{2}/.r) do |s, h, m|
168
+ utc_offset = seq(C::SIGN, /[0-9]{2}/.r << /:/.r._?, /[0-9]{2}/.r) do |(s, h, m)|
169
169
  { sign: s, hour: h, min: m }
170
170
  end
171
171
  zone = utc_offset.map { |u| u } |
@@ -174,23 +174,23 @@ module Vcard::V3_0
174
174
  minute = /[0-9]{2}/.r
175
175
  second = /[0-9]{2}/.r
176
176
  secfrac = seq(",".r >> /[0-9]+/)
177
- date = seq(/[0-9]{4}/.r << /-/.r._?, /[0-9]{2}/.r << /-/.r._?, /[0-9]{2}/.r) do |yy, mm, dd|
177
+ date = seq(/[0-9]{4}/.r << /-/.r._?, /[0-9]{2}/.r << /-/.r._?, /[0-9]{2}/.r) do |(yy, mm, dd)|
178
178
  { year: yy, month: mm, day: dd }
179
179
  end
180
- time = seq(hour << /:/.r._?, minute << /:/.r._?, second, secfrac._?, zone._?) do |h, m, s, f, z|
180
+ time = seq(hour << /:/.r._?, minute << /:/.r._?, second, secfrac._?, zone._?) do |(h, m, s, f, z)|
181
181
  h = { hour: h, min: m, sec: s }
182
182
  h[:zone] = z[0] unless z.empty?
183
183
  h[:secfrac] = f[0] unless f.empty?
184
184
  h
185
185
  end
186
- date_or_date_time = seq(date << "T".r, time) do |d, t|
186
+ date_or_date_time = seq(date << "T".r, time) do |(d, t)|
187
187
  PropertyValue::DateTimeLocal.new(d.merge(t))
188
188
  end | date.map { |d| PropertyValue::Date.new(d) }
189
189
  date_or_date_time.eof
190
190
  end
191
191
 
192
192
  def utc_offset
193
- utc_offset = seq(C::SIGN, /[0-9]{2}/.r, /:/.r._?, /[0-9]{2}/.r) do |s, h, _, m|
193
+ utc_offset = seq(C::SIGN, /[0-9]{2}/.r, /:/.r._?, /[0-9]{2}/.r) do |(s, h, _, m)|
194
194
  PropertyValue::Utcoffset.new(sign: s, hour: h, min: m)
195
195
  end
196
196
  utc_offset.eof
@@ -198,7 +198,7 @@ module Vcard::V3_0
198
198
 
199
199
  def kindvalue
200
200
  iana_token = /[a-zA-Z\d\-]+/.r
201
- xname = seq(/[xX]-/, /[a-zA-Z0-9-]+/.r).map(&:join)
201
+ xname = seq(/[xX]-/, /[a-zA-Z0-9-]+/.r).map {|x, _| x.join }
202
202
  kindvalue = (/individual/i.r | /group/i.r | /org/i.r | /location/i.r |
203
203
  iana_token | xname).map do |k|
204
204
  PropertyValue::Kindvalue.new(k)
@@ -208,29 +208,29 @@ module Vcard::V3_0
208
208
 
209
209
  def fivepartname
210
210
  text = C::TEXT3
211
- component = seq(text << ",".r, lazy { component }) do |a, b|
211
+ component = seq(text << ",".r, lazy { component }) do |(a, b)|
212
212
  [unescape(a), b].flatten
213
213
  end | text.map { |t| [unescape(t)] }
214
214
  fivepartname1 = seq(component << ";".r, component << ";".r, component << ";".r,
215
- component << ";".r, component) do |a, b, c, d, e|
215
+ component << ";".r, component) do |(a, b, c, d, e)|
216
216
  a = a[0] if a.length == 1
217
217
  b = b[0] if b.length == 1
218
218
  c = c[0] if c.length == 1
219
219
  d = d[0] if d.length == 1
220
220
  e = e[0] if e.length == 1
221
221
  { surname: a, givenname: b, middlename: c, honprefix: d, honsuffix: e }
222
- end | seq(component << ";".r, component << ";".r, component << ";".r, component) do |a, b, c, d|
222
+ end | seq(component << ";".r, component << ";".r, component << ";".r, component) do |(a, b, c, d)|
223
223
  a = a[0] if a.length == 1
224
224
  b = b[0] if b.length == 1
225
225
  c = c[0] if c.length == 1
226
226
  d = d[0] if d.length == 1
227
227
  { surname: a, givenname: b, middlename: c, honprefix: d, honsuffix: "" }
228
- end | seq(component << ";".r, component << ";".r, component) do |a, b, c|
228
+ end | seq(component << ";".r, component << ";".r, component) do |(a, b, c)|
229
229
  a = a[0] if a.length == 1
230
230
  b = b[0] if b.length == 1
231
231
  c = c[0] if c.length == 1
232
232
  { surname: a, givenname: b, middlename: c, honprefix: "", honsuffix: "" }
233
- end | seq(component << ";".r, component) do |a, b|
233
+ end | seq(component << ";".r, component) do |(a, b)|
234
234
  a = a[0] if a.length == 1
235
235
  b = b[0] if b.length == 1
236
236
  { surname: a, givenname: b, middlename: "", honprefix: "", honsuffix: "" }
@@ -244,11 +244,11 @@ module Vcard::V3_0
244
244
 
245
245
  def address
246
246
  text = C::TEXT3
247
- component = seq(text << ",".r, lazy { component }) do |a, b|
247
+ component = seq(text << ",".r, lazy { component }) do |(a, b)|
248
248
  [unescape(a), b].flatten
249
249
  end | text.map { |t| [unescape(t)] }
250
250
  address1 = seq(component << ";".r, component << ";".r, component << ";".r, component << ";".r,
251
- component << ";".r, component << ";".r, component) do |a, b, c, d, e, f, g|
251
+ component << ";".r, component << ";".r, component) do |(a, b, c, d, e, f, g)|
252
252
  a = a[0] if a.length == 1
253
253
  b = b[0] if b.length == 1
254
254
  c = c[0] if c.length == 1
@@ -259,7 +259,7 @@ module Vcard::V3_0
259
259
  { pobox: a, ext: b, street: c,
260
260
  locality: d, region: e, code: f, country: g }
261
261
  end | seq(component << ";".r, component << ";".r, component << ";".r, component << ";".r,
262
- component << ";".r, component) do |a, b, c, d, e, f|
262
+ component << ";".r, component) do |(a, b, c, d, e, f)|
263
263
  a = a[0] if a.length == 1
264
264
  b = b[0] if b.length == 1
265
265
  c = c[0] if c.length == 1
@@ -269,7 +269,7 @@ module Vcard::V3_0
269
269
  { pobox: a, ext: b, street: c,
270
270
  locality: d, region: e, code: f, country: "" }
271
271
  end | seq(component << ";".r, component << ";".r, component << ";".r,
272
- component << ";".r, component) do |a, b, c, d, e|
272
+ component << ";".r, component) do |(a, b, c, d, e)|
273
273
  a = a[0] if a.length == 1
274
274
  b = b[0] if b.length == 1
275
275
  c = c[0] if c.length == 1
@@ -277,20 +277,20 @@ module Vcard::V3_0
277
277
  e = e[0] if e.length == 1
278
278
  { pobox: a, ext: b, street: c,
279
279
  locality: d, region: e, code: "", country: "" }
280
- end | seq(component << ";".r, component << ";".r, component << ";".r, component) do |a, b, c, d|
280
+ end | seq(component << ";".r, component << ";".r, component << ";".r, component) do |(a, b, c, d)|
281
281
  a = a[0] if a.length == 1
282
282
  b = b[0] if b.length == 1
283
283
  c = c[0] if c.length == 1
284
284
  d = d[0] if d.length == 1
285
285
  { pobox: a, ext: b, street: c,
286
286
  locality: d, region: "", code: "", country: "" }
287
- end | seq(component << ";".r, component << ";".r, component) do |a, b, c|
287
+ end | seq(component << ";".r, component << ";".r, component) do |(a, b, c)|
288
288
  a = a[0] if a.length == 1
289
289
  b = b[0] if b.length == 1
290
290
  c = c[0] if c.length == 1
291
291
  { pobox: a, ext: b, street: c,
292
292
  locality: "", region: "", code: "", country: "" }
293
- end | seq(component << ";".r, component) do |a, b|
293
+ end | seq(component << ";".r, component) do |(a, b)|
294
294
  a = a[0] if a.length == 1
295
295
  b = b[0] if b.length == 1
296
296
  { pobox: a, ext: b, street: "",