vobject 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: "",