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.
@@ -41,11 +41,11 @@ module Vcard::V4_0
41
41
  /GEO/i.r | /TZ/i.r | /LABEL/i.r | /INDEX/i.r | /LEVEL/i.r
42
42
  otherparamname = C::NAME_VCARD ^ paramname
43
43
  paramvalue = C::QUOTEDSTRING_VCARD.map { |s| rfc6868decode s } | C::PTEXT_VCARD.map { |s| rfc6868decode(s).upcase }
44
- # tzidvalue = seq("/".r._?, C::PTEXT_VCARD).map { |_, val| val }
44
+ # tzidvalue = seq("/".r._?, C::PTEXT_VCARD).map { |(_, val)| val }
45
45
  calscalevalue = /GREGORIAN/i.r | C::IANATOKEN | C::XNAME_VCARD
46
46
  prefvalue = /[0-9]{1,2}/i.r | "100".r
47
47
  pidvalue = /[0-9]+(\.[0-9]+)?/.r
48
- pidvaluelist = seq(pidvalue, ",", lazy { pidvaluelist }) do |a, _, b|
48
+ pidvaluelist = seq(pidvalue, ",", lazy { pidvaluelist }) do |(a, _, b)|
49
49
  [a, b].flatten
50
50
  end | (pidvalue ^ ",".r).map { |z| [z] }
51
51
  typeparamtel1 = /TEXT/i.r | /VOICE/i.r | /FAX/i.r | /CELL/i.r | /VIDEO/i.r |
@@ -57,10 +57,10 @@ module Vcard::V4_0
57
57
  /MUSE/i.r | /CRUSH/i.r | /DATE/i.r | /SWEETHEART/i.r | /ME/i.r |
58
58
  /AGENT/i.r | /EMERGENCY/i.r
59
59
  typevalue = /WORK/i.r | /HOME/i.r | typeparamtel1 | typeparamrelated | C::IANATOKEN | C::XNAME_VCARD
60
- typevaluelist = seq(typevalue << ",".r, lazy { typevaluelist }) do |a, b|
60
+ typevaluelist = seq(typevalue << ",".r, lazy { typevaluelist }) do |(a, b)|
61
61
  [a.upcase, b].flatten
62
62
  end | typevalue.map { |t| [t.upcase] }
63
- typeparamtel1list = seq(typeparamtel << ",".r, lazy { typeparamtel1list }) do |a, b|
63
+ typeparamtel1list = seq(typeparamtel << ",".r, lazy { typeparamtel1list }) do |(a, b)|
64
64
  [a.upcase, b].flatten
65
65
  end | typeparamtel.map { |t| [t.upcase] }
66
66
  geourlvalue = seq('"'.r >> C::TEXT4 << '"'.r) do |s|
@@ -73,68 +73,68 @@ module Vcard::V4_0
73
73
  /LANGUAGE-TAG/i.r | C::IANATOKEN | C::XNAME_VCARD
74
74
  mediaattr = /[!\"#$%&'*+.^A-Z0-9a-z_`i{}|~-]+/.r
75
75
  mediavalue = mediaattr | C::QUOTEDSTRING_VCARD
76
- mediatail = seq(";".r >> mediaattr << "=".r, mediavalue).map do |a, v|
76
+ mediatail = seq(";".r >> mediaattr << "=".r, mediavalue).map do |(a, v)|
77
77
  ";#{a}=#{v}"
78
78
  end
79
79
  rfc4288regname = /[A-Za-z0-9!#$&.+^+-]{1,127}/.r
80
80
  rfc4288typename = rfc4288regname
81
81
  rfc4288subtypename = rfc4288regname
82
- mediavalue = seq(rfc4288typename << "/".r, rfc4288subtypename, mediatail.star).map do |t, s, tail|
82
+ mediavalue = seq(rfc4288typename << "/".r, rfc4288subtypename, mediatail.star).map do |(t, s, tail)|
83
83
  ret = "#{t}/#{s}"
84
84
  ret = ret . tail[0] unless tail.empty?
85
85
  ret
86
86
  end
87
- pvalue_list = (seq(paramvalue << ",".r, lazy { pvalue_list }) & /[;:]/.r).map do |e, list|
87
+ pvalue_list = (seq(paramvalue << ",".r, lazy { pvalue_list }) & /[;:]/.r).map do |(e, list)|
88
88
  [e.sub(Regexp.new("^\"(.+)\"$"), '\1').gsub(/\\n/, "\n"), list].flatten
89
89
  end | (paramvalue & /[;:]/.r).map do |e|
90
90
  [e.sub(Regexp.new("^\"(.+)\"$"), '\1').gsub(/\\n/, "\n")]
91
91
  end
92
- quoted_string_list = (seq(C::QUOTEDSTRING_VCARD << ",".r, lazy { quoted_string_list }) & /[;:]/.r).map do |e, list|
92
+ quoted_string_list = (seq(C::QUOTEDSTRING_VCARD << ",".r, lazy { quoted_string_list }) & /[;:]/.r).map do |(e, list)|
93
93
  [e.sub(Regexp.new("^\"(.+)\"$"), '\1').gsub(/\\n/, "\n"), list].flatten
94
94
  end | (C::QUOTEDSTRING_VCARD & /[;:]/.r).map do |e|
95
95
  [e.sub(Regexp.new("^\"(.+)\"$"), '\1').gsub(/\\n/, "\n")]
96
96
  end
97
97
 
98
- # fmttypevalue = seq(rfc4288typename, "/", rfc4288subtypename).map(&:join)
98
+ # fmttypevalue = seq(rfc4288typename, "/", rfc4288subtypename).map {|x, _| x.join }
99
99
  levelvalue = /beginner/i.r | /average/i.r | /expert/i.r | /high/i.r | /medium/i.r | /low/i.r
100
100
 
101
- param = seq(/ALTID/i.r, "=", paramvalue) do |name, _, val|
101
+ param = seq(/ALTID/i.r, "=", paramvalue) do |(name, _, val)|
102
102
  { name.upcase.tr("-", "_").to_sym => val }
103
- end | seq(/LANGUAGE/i.r, "=", C::RFC5646LANGVALUE) do |name, _, val|
103
+ end | seq(/LANGUAGE/i.r, "=", C::RFC5646LANGVALUE) do |(name, _, val)|
104
104
  { name.upcase.tr("-", "_").to_sym => val.upcase }
105
- end | seq(/PREF/i.r, "=", prefvalue) do |name, _, val|
105
+ end | seq(/PREF/i.r, "=", prefvalue) do |(name, _, val)|
106
106
  { name.upcase.tr("-", "_").to_sym => val.upcase }
107
- end | seq(/TYPE/i.r, "=", "\"".r >> typevaluelist << "\"".r) do |name, _, val|
107
+ end | seq(/TYPE/i.r, "=", "\"".r >> typevaluelist << "\"".r) do |(name, _, val)|
108
108
  # not in spec but in examples. Errata ID 3488, "Held for Document Update": acknwoledged as error requiring an updated spec. With this included, TYPE="x,y,z" is a list of values; the proper ABNF behaviour is that "x,y,z" is interpreted as a single value
109
109
  { name.upcase.tr("-", "_").to_sym => val }
110
- end | seq(/TYPE/i.r, "=", typevaluelist) do |name, _, val|
110
+ end | seq(/TYPE/i.r, "=", typevaluelist) do |(name, _, val)|
111
111
  { name.upcase.tr("-", "_").to_sym => val }
112
- end | seq(/MEDIATYPE/i.r, "=", mediavalue) do |name, _, val|
112
+ end | seq(/MEDIATYPE/i.r, "=", mediavalue) do |(name, _, val)|
113
113
  { name.upcase.tr("-", "_").to_sym => val }
114
- end | seq(/CALSCALE/i.r, "=", calscalevalue) do |name, _, val|
114
+ end | seq(/CALSCALE/i.r, "=", calscalevalue) do |(name, _, val)|
115
115
  { name.upcase.tr("-", "_").to_sym => val }
116
- end | seq(/SORT-AS/i.r, "=", pvalue_list) do |name, _, val|
116
+ end | seq(/SORT-AS/i.r, "=", pvalue_list) do |(name, _, val)|
117
117
  { name.upcase.tr("-", "_").to_sym => val }
118
- end | seq(/TZ/i.r, "=", tzvalue) do |name, _, val|
118
+ end | seq(/TZ/i.r, "=", tzvalue) do |(name, _, val)|
119
119
  { name.upcase.tr("-", "_").to_sym => val }
120
- end | seq(/GEO/i.r, "=", geourlvalue) do |name, _, val|
120
+ end | seq(/GEO/i.r, "=", geourlvalue) do |(name, _, val)|
121
121
  { name.upcase.tr("-", "_").to_sym => val }
122
- end | seq(/VALUE/i.r, "=", valuetype) do |name, _, val|
122
+ end | seq(/VALUE/i.r, "=", valuetype) do |(name, _, val)|
123
123
  { name.upcase.tr("-", "_").to_sym => val }
124
- end | seq(/PID/i.r, "=", pidvaluelist) do |name, _, val|
124
+ end | seq(/PID/i.r, "=", pidvaluelist) do |(name, _, val)|
125
125
  { name.upcase.tr("-", "_").to_sym => val }
126
- end | seq(/INDEX/i.r, "=", prim(:int32)) do |name, _, val|
126
+ end | seq(/INDEX/i.r, "=", prim(:int32)) do |(name, _, val)|
127
127
  { name.upcase.tr("-", "_").to_sym => val }
128
- end | seq(/LEVEL/i.r, "=", levelvalue) do |name, _, val|
128
+ end | seq(/LEVEL/i.r, "=", levelvalue) do |(name, _, val)|
129
129
  { name.upcase.tr("-", "_").to_sym => val.upcase }
130
- end | seq(otherparamname, "=", pvalue_list) do |name, _, val|
130
+ end | seq(otherparamname, "=", pvalue_list) do |(name, _, val)|
131
131
  val = val[0] if val.length == 1
132
132
  { name.upcase.tr("-", "_").to_sym => val }
133
- end | seq(paramname, "=", pvalue_list) do |name, _, val|
133
+ end | seq(paramname, "=", pvalue_list) do |(name, _, val)|
134
134
  parse_err("Violated format of parameter value #{name} = #{val}")
135
135
  end
136
136
 
137
- params = seq(";".r >> param, lazy { params }) do |p, ps|
137
+ params = seq(";".r >> param, lazy { params }) do |(p, ps)|
138
138
  p.merge(ps) do |key, old, new|
139
139
  if @cardinality1[:PARAM].include?(key)
140
140
  parse_err("Violated cardinality of parameter #{key}")
@@ -145,7 +145,7 @@ module Vcard::V4_0
145
145
  end | seq(";".r >> param ^ ";".r).map { |e| e[0] }
146
146
 
147
147
  contentline = seq(linegroup._?, C::NAME_VCARD, params._? << ":".r,
148
- C::VALUE, /[\r\n]/) do |l, name, p, value, _|
148
+ C::VALUE, /[\r\n]/) do |(l, name, p, value, _)|
149
149
  key = name.upcase.tr("-", "_").to_sym
150
150
  hash = { key => {} }
151
151
  errors << Paramcheck.paramcheck(strict, key, p.empty? ? {} : p[0], @ctx)
@@ -155,7 +155,7 @@ module Vcard::V4_0
155
155
  hash[key][:params] = p[0] unless p.empty?
156
156
  hash
157
157
  end
158
- props = seq(contentline, lazy { props }) do |c, rest|
158
+ props = seq(contentline, lazy { props }) do |(c, rest)|
159
159
  c.merge(rest) do |key, old, new|
160
160
  if @cardinality1[:PROP].include?(key.upcase) &&
161
161
  !(new.is_a?(Array) &&
@@ -174,14 +174,14 @@ module Vcard::V4_0
174
174
  end | ("".r & beginend).map { {} }
175
175
 
176
176
  calpropname = /VERSION/i.r
177
- calprop = seq(calpropname << ":".r, C::VALUE, /[\r\n]/.r) do |key, value|
177
+ calprop = seq(calpropname << ":".r, C::VALUE, /[\r\n]/.r) do |(key, value)|
178
178
  key = key.upcase.tr("-", "_").to_sym
179
179
  hash = { key => {} }
180
180
  hash[key][:value], errors1 = Typegrammars.typematch(strict, key, nil, :VCARD, value)
181
181
  errors << errors1
182
182
  hash
183
183
  end
184
- vobject = seq(/BEGIN:VCARD[\r\n]/i.r >> calprop, props << /END:VCARD[\r\n]/i.r) do |v, rest|
184
+ vobject = seq(/BEGIN:VCARD[\r\n]/i.r >> calprop, props << /END:VCARD[\r\n]/i.r) do |(v, rest)|
185
185
  parse_err("Missing VERSION attribute") unless v.has_key?(:VERSION)
186
186
  parse_err("Missing FN attribute") unless rest.has_key?(:FN)
187
187
  rest.delete(:END)
@@ -49,7 +49,7 @@ module Vcard::V4_0
49
49
  { error: "Invalid URI" }
50
50
  end
51
51
  end
52
- clientpidmap = seq(/[0-9]/.r << ";".r, uri) do |a, b|
52
+ clientpidmap = seq(/[0-9]/.r << ";".r, uri) do |(a, b)|
53
53
  PropertyValue::Clientpidmap.new(pid: a, uri: b)
54
54
  end
55
55
  clientpidmap.eof
@@ -62,24 +62,24 @@ module Vcard::V4_0
62
62
 
63
63
  def textlist
64
64
  textlist1 =
65
- seq(C::TEXT4 << ",".r, lazy { textlist1 }) { |a, b| [unescape(a), b].flatten } |
65
+ seq(C::TEXT4 << ",".r, lazy { textlist1 }) { |(a, b)| [unescape(a), b].flatten } |
66
66
  C::TEXT4.map { |t| [unescape(t)] }
67
67
  textlist = textlist1.map { |m| PropertyValue::Textlist.new m }
68
68
  textlist.eof
69
69
  end
70
70
 
71
71
  def date_t
72
- date_t1 = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |yy, mm, dd|
72
+ date_t1 = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |(yy, mm, dd)|
73
73
  { year: yy, month: mm, day: dd }
74
- end | seq(/[0-9]{4}/.r << "-".r, /[0-9]{2}/.r) do |yy, dd|
74
+ end | seq(/[0-9]{4}/.r << "-".r, /[0-9]{2}/.r) do |(yy, dd)|
75
75
  { year: yy, day: dd }
76
76
  end | /[0-9]{4}/.r do |yy|
77
77
  { year: yy }
78
- end | seq("--".r >> /[0-9]{2}/.r, /[0-9]{2}/.r) do |mm, dd|
78
+ end | seq("--".r >> /[0-9]{2}/.r, /[0-9]{2}/.r) do |(mm, dd)|
79
79
  { month: mm, day: dd }
80
80
  end | seq("--".r >> /[0-9]{2}/.r) do |mm|
81
81
  { month: mm }
82
- end | seq("--", "-", /[0-9]{2}/.r) do |_, _, dd|
82
+ end | seq("--", "-", /[0-9]{2}/.r) do |(_, _, dd)|
83
83
  { day: dd }
84
84
  end
85
85
  date_t = date_t1.map { |d| PropertyValue::Date.new d }
@@ -87,11 +87,11 @@ module Vcard::V4_0
87
87
  end
88
88
 
89
89
  def date_noreduc
90
- date_noreduc1 = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |yy, mm, dd|
90
+ date_noreduc1 = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |(yy, mm, dd)|
91
91
  { year: yy, month: mm, day: dd }
92
- end | seq("--".r >> /[0-9]{2}/.r, /[0-9]{2}/.r) do |mm, dd|
92
+ end | seq("--".r >> /[0-9]{2}/.r, /[0-9]{2}/.r) do |(mm, dd)|
93
93
  { month: mm, day: dd }
94
- end | seq("--", "-", /[0-9]{2}/.r) do |_, _, dd|
94
+ end | seq("--", "-", /[0-9]{2}/.r) do |(_, _, dd)|
95
95
  { day: dd }
96
96
  end
97
97
  date_noreduc = date_noreduc1.map { |d| PropertyValue::Date.new d }
@@ -99,7 +99,7 @@ module Vcard::V4_0
99
99
  end
100
100
 
101
101
  def date_complete
102
- date_complete1 = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |yy, mm, dd|
102
+ date_complete1 = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |(yy, mm, dd)|
103
103
  { year: yy, month: mm, day: dd }
104
104
  end
105
105
  date_complete = date_complete1.map { |d| PropertyValue::Date.new d }
@@ -110,29 +110,29 @@ module Vcard::V4_0
110
110
  hour = /[0-9]{2}/.r
111
111
  minute = /[0-9]{2}/.r
112
112
  second = /[0-9]{2}/.r
113
- time1 = seq(hour, minute, second, C::ZONE._?) do |h, m, s, z|
113
+ time1 = seq(hour, minute, second, C::ZONE._?) do |(h, m, s, z)|
114
114
  h = { hour: h, min: m, sec: s }
115
115
  h[:zone] = z[0] unless z.empty?
116
116
  h
117
- end | seq(hour, minute, C::ZONE._?) do |h, m, z|
117
+ end | seq(hour, minute, C::ZONE._?) do |(h, m, z)|
118
118
  h = { hour: h, min: m }
119
119
  h[:zone] = z[0] unless z.empty?
120
120
  h
121
- end | seq(hour, C::ZONE._?) do |h, z|
121
+ end | seq(hour, C::ZONE._?) do |(h, z)|
122
122
  h = { hour: h }
123
123
  h[:zone] = z[0] unless z.empty?
124
124
  h
125
- # } | seq("-", minute, second, C::ZONE._?) { |m, s, z|
125
+ # } | seq("-", minute, second, C::ZONE._?) { |(m, s, z)|
126
126
  # errata: remove zones from truncated times
127
- end | seq("-".r >> minute, second) do |m, s|
127
+ end | seq("-".r >> minute, second) do |(m, s)|
128
128
  { min: m, sec: s }
129
- # } | seq("-", minute, C::ZONE._?) { |m, z|
129
+ # } | seq("-", minute, C::ZONE._?) { |(m, z)|
130
130
  # errata: remove zones from truncated times
131
131
  end | seq("-".r >> minute) do |m|
132
132
  { min: m }
133
- # } | seq("-", "-", second, C::ZONE._?) do |s, z|
133
+ # } | seq("-", "-", second, C::ZONE._?) do |(s, z)|
134
134
  # errata: remove zones from truncated times
135
- end | seq("-", "-", second) do |_, _, s|
135
+ end | seq("-", "-", second) do |(_, _, s)|
136
136
  h = { sec: s }
137
137
  h
138
138
  end
@@ -141,15 +141,15 @@ module Vcard::V4_0
141
141
  end
142
142
 
143
143
  def time_notrunc
144
- time_notrunc1 = seq(hour, minute, second, C::ZONE._?) do |h, m, s, z|
144
+ time_notrunc1 = seq(hour, minute, second, C::ZONE._?) do |(h, m, s, z)|
145
145
  h = { hour: h, min: m, sec: s }
146
146
  h[:zone] = z[0] unless z.empty?
147
147
  h
148
- end | seq(hour, minute, C::ZONE._?) do |h, m, z|
148
+ end | seq(hour, minute, C::ZONE._?) do |(h, m, z)|
149
149
  h = { hour: h, min: m }
150
150
  h[:zone] = z[0] unless z.empty?
151
151
  h
152
- end | seq(hour, C::ZONE._?) do |h, z|
152
+ end | seq(hour, C::ZONE._?) do |(h, z)|
153
153
  h = { hour: h }
154
154
  h[:zone] = z[0] unless z.empty?
155
155
  h
@@ -159,7 +159,7 @@ module Vcard::V4_0
159
159
  end
160
160
 
161
161
  def time_complete
162
- time_complete1 = seq(hour, minute, second, C::ZONE._?) do |h, m, s, z|
162
+ time_complete1 = seq(hour, minute, second, C::ZONE._?) do |(h, m, s, z)|
163
163
  h = { hour: h, min: m, sec: s }
164
164
  h[:zone] = z[0] unless z.empty?
165
165
  h
@@ -172,27 +172,27 @@ module Vcard::V4_0
172
172
  hour = /[0-9]{2}/.r
173
173
  minute = /[0-9]{2}/.r
174
174
  second = /[0-9]{2}/.r
175
- time_notrunc = seq(hour, minute, second, C::ZONE._?) do |h, m, s, z|
175
+ time_notrunc = seq(hour, minute, second, C::ZONE._?) do |(h, m, s, z)|
176
176
  h = { hour: h, min: m, sec: s }
177
177
  h[:zone] = z[0] unless z.empty?
178
178
  h
179
- end | seq(hour, minute, C::ZONE._?) do |h, m, z|
179
+ end | seq(hour, minute, C::ZONE._?) do |(h, m, z)|
180
180
  h = { hour: h, min: m }
181
181
  h[:zone] = z[0] unless z.empty?
182
182
  h
183
- end | seq(hour, C::ZONE._?) do |h, z|
183
+ end | seq(hour, C::ZONE._?) do |(h, z)|
184
184
  h = { hour: h }
185
185
  h[:zone] = z[0] unless z.empty?
186
186
  h
187
187
  end
188
- date_noreduc = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |yy, mm, dd|
188
+ date_noreduc = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |(yy, mm, dd)|
189
189
  { year: yy, month: mm, day: dd }
190
- end | seq("--".r >> /[0-9]{2}/.r, /[0-9]{2}/.r) do |mm, dd|
190
+ end | seq("--".r >> /[0-9]{2}/.r, /[0-9]{2}/.r) do |(mm, dd)|
191
191
  { month: mm, day: dd }
192
- end | seq("--", "-", /[0-9]{2}/.r) do |_, _, dd|
192
+ end | seq("--", "-", /[0-9]{2}/.r) do |(_, _, dd)|
193
193
  { day: dd }
194
194
  end
195
- date_time = seq(date_noreduc << "T".r, time_notrunc) do |d, t|
195
+ date_time = seq(date_noreduc << "T".r, time_notrunc) do |(d, t)|
196
196
  d = d.merge t
197
197
  PropertyValue::DateTimeLocal.new d
198
198
  end
@@ -200,18 +200,18 @@ module Vcard::V4_0
200
200
  end
201
201
 
202
202
  def timestamp
203
- date_complete = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |yy, mm, dd|
203
+ date_complete = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |(yy, mm, dd)|
204
204
  { year: yy, month: mm, day: dd }
205
205
  end
206
206
  hour = /[0-9]{2}/.r
207
207
  minute = /[0-9]{2}/.r
208
208
  second = /[0-9]{2}/.r
209
- time_complete = seq(hour, minute, second, C::ZONE._?) do |h, m, s, z|
209
+ time_complete = seq(hour, minute, second, C::ZONE._?) do |(h, m, s, z)|
210
210
  h = { hour: h, min: m, sec: s }
211
211
  h[:zone] = z[0] unless z.empty?
212
212
  h
213
213
  end
214
- timestamp = seq(date_complete << "T".r, time_complete) do |d, t|
214
+ timestamp = seq(date_complete << "T".r, time_complete) do |(d, t)|
215
215
  ret = PropertyValue::DateTimeLocal.new(d.merge(t))
216
216
  ret.type = 'timestamp'
217
217
  ret
@@ -223,11 +223,11 @@ module Vcard::V4_0
223
223
  hour = /[0-9]{2}/.r
224
224
  minute = /[0-9]{2}/.r
225
225
  second = /[0-9]{2}/.r
226
- time_notrunc = seq(hour, minute, second, C::ZONE._?) do |h, m, s, z|
226
+ time_notrunc = seq(hour, minute, second, C::ZONE._?) do |(h, m, s, z)|
227
227
  h = { hour: h, min: m, sec: s }
228
228
  h[:zone] = z[0] unless z.empty?
229
229
  h
230
- end | seq(hour, minute, C::ZONE._?) do |h, m, z|
230
+ end | seq(hour, minute, C::ZONE._?) do |(h, m, z)|
231
231
  h = { hour: h, min: m }
232
232
  h[:zone] = z[0] unless z.empty?
233
233
  h
@@ -236,48 +236,48 @@ module Vcard::V4_0
236
236
  h[:zone] = z[0] unless z.empty?
237
237
  h
238
238
  end
239
- date_noreduc = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |yy, mm, dd|
239
+ date_noreduc = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |(yy, mm, dd)|
240
240
  { year: yy, month: mm, day: dd }
241
- end | seq("--", /[0-9]{2}/.r, /[0-9]{2}/.r) do |_, mm, dd|
241
+ end | seq("--", /[0-9]{2}/.r, /[0-9]{2}/.r) do |(_, mm, dd)|
242
242
  { month: mm, day: dd }
243
- end | seq("--", "-", /[0-9]{2}/.r) { |_, _, dd| { day: dd } }
244
- date_time = seq(date_noreduc << "T".r, time_notrunc) { |d, t| d.merge t }
245
- date = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |yy, mm, dd|
243
+ end | seq("--", "-", /[0-9]{2}/.r) { |(_, _, dd)| { day: dd } }
244
+ date_time = seq(date_noreduc << "T".r, time_notrunc) { |(d, t)| d.merge t }
245
+ date = seq(/[0-9]{4}/.r, /[0-9]{2}/.r, /[0-9]{2}/.r) do |(yy, mm, dd)|
246
246
  { year: yy, month: mm, day: dd }
247
- end | seq(/[0-9]{4}/.r << "-".r, /[0-9]{2}/.r) do |yy, dd|
247
+ end | seq(/[0-9]{4}/.r << "-".r, /[0-9]{2}/.r) do |(yy, dd)|
248
248
  { year: yy, day: dd }
249
249
  end | /[0-9]{4}/.r do |yy|
250
250
  { year: yy }
251
- end | seq("--", /[0-9]{2}/.r, /[0-9]{2}/.r) do |_, mm, dd|
251
+ end | seq("--", /[0-9]{2}/.r, /[0-9]{2}/.r) do |(_, mm, dd)|
252
252
  { month: mm, day: dd }
253
- end | seq("--", /[0-9]{2}/.r) do |_, mm|
253
+ end | seq("--", /[0-9]{2}/.r) do |(_, mm)|
254
254
  { month: mm }
255
- end | seq("--", "-", /[0-9]{2}/.r) do |_, _, dd|
255
+ end | seq("--", "-", /[0-9]{2}/.r) do |(_, _, dd)|
256
256
  { day: dd }
257
257
  end
258
- time = seq(hour, minute, second, C::ZONE._?) do |h, m, s, z|
258
+ time = seq(hour, minute, second, C::ZONE._?) do |(h, m, s, z)|
259
259
  h = { hour: h, min: m, sec: s }
260
260
  h[:zone] = z[0] unless z.empty?
261
261
  h
262
- end | seq(hour, minute, C::ZONE._?) do |h, m, z|
262
+ end | seq(hour, minute, C::ZONE._?) do |(h, m, z)|
263
263
  h = { hour: h, min: m }
264
264
  h[:zone] = z[0] unless z.empty?
265
265
  h
266
- end | seq(hour, C::ZONE._?) do |h, z|
266
+ end | seq(hour, C::ZONE._?) do |(h, z)|
267
267
  h = { hour: h }
268
268
  h[:zone] = z[0] unless z.empty?
269
269
  h
270
- # } | seq("-", minute, second, C::ZONE._?) { |m, s, z|
270
+ # } | seq("-", minute, second, C::ZONE._?) { |(m, s, z)|
271
271
  # errata: remove zones from truncated times
272
- end | seq("-".r >> minute, second) do |m, s|
272
+ end | seq("-".r >> minute, second) do |(m, s)|
273
273
  { min: m, sec: s }
274
- # } | seq("-", minute, C::ZONE._?) { |m, z|
274
+ # } | seq("-", minute, C::ZONE._?) { |(m, z)|
275
275
  # errata: remove zones from truncated times
276
276
  end | seq("-".r >> minute) do |m|
277
277
  { min: m }
278
- # } | seq("-", "-", second, C::ZONE._?) { |s, z|
278
+ # } | seq("-", "-", second, C::ZONE._?) { |(s, z)|
279
279
  # errata: remove zones from truncated times
280
- end | seq("-", "-", second) do |_, _, s|
280
+ end | seq("-", "-", second) do |(_, _, s)|
281
281
  { sec: s }
282
282
  end
283
283
  date_and_or_time = date_time.map do |d|
@@ -309,12 +309,12 @@ module Vcard::V4_0
309
309
  end
310
310
 
311
311
  def fivepartname
312
- component = seq(C::COMPONENT4 << ",".r, lazy { component }) do |a, b|
312
+ component = seq(C::COMPONENT4 << ",".r, lazy { component }) do |(a, b)|
313
313
  [unescape_component(a), b].flatten
314
314
  end | C::COMPONENT4.map { |t| [unescape_component(t)] }
315
315
  fivepartname = seq(component << ";".r, component << ";".r,
316
316
  component << ";".r, component << ";".r,
317
- component) do |a, b, c, d, e|
317
+ component) do |(a, b, c, d, e)|
318
318
  a = a[0] if a.length == 1
319
319
  b = b[0] if b.length == 1
320
320
  c = c[0] if c.length == 1
@@ -327,13 +327,13 @@ module Vcard::V4_0
327
327
  end
328
328
 
329
329
  def address
330
- component = seq(C::COMPONENT4 << ",".r, lazy { component }) do |a, b|
330
+ component = seq(C::COMPONENT4 << ",".r, lazy { component }) do |(a, b)|
331
331
  [unescape_component(a), b].flatten
332
332
  end | C::COMPONENT4.map { |t| [unescape_component(t)] }
333
333
  address = seq(component << ";".r, component << ";".r,
334
334
  component << ";".r, component << ";".r,
335
335
  component << ";".r, component << ";".r,
336
- component) do |a, b, c, d, e, f, g|
336
+ component) do |(a, b, c, d, e, f, g)|
337
337
  a = a[0] if a.length == 1
338
338
  b = b[0] if b.length == 1
339
339
  c = c[0] if c.length == 1
@@ -350,7 +350,7 @@ module Vcard::V4_0
350
350
  end
351
351
 
352
352
  def gender
353
- gender1 = seq(/[MFONU]/.r._? << ";", C::TEXT4) do |sex, gender|
353
+ gender1 = seq(/[MFONU]/.r._? << ";", C::TEXT4) do |(sex, gender)|
354
354
  sex = sex[0] unless sex.empty?
355
355
  { sex: sex, gender: gender }
356
356
  end | /[MFONU]/.r.map { |sex| { sex: sex, gender: "" } }
@@ -361,7 +361,7 @@ module Vcard::V4_0
361
361
  def org
362
362
  text = C::COMPONENT4
363
363
  org1 =
364
- seq(text, ";", lazy { org1 }) { |a, _, b| [unescape_component(a), b].flatten } |
364
+ seq(text, ";", lazy { org1 }) { |(a, _, b)| [unescape_component(a), b].flatten } |
365
365
  text.map { |t| [unescape_component(t)] }
366
366
  org = org1.map { |g| PropertyValue::Org.new g }
367
367
  org.eof
@@ -376,7 +376,7 @@ module Vcard::V4_0
376
376
  typeparamtel1 = /TEXT/i.r | /VOICE/i.r | /FAX/i.r | /CELL/i.r | /VIDEO/i.r |
377
377
  /PAGER/i.r | /TEXTPHONE/i.r | C::IANATOKEN | C::XNAME_VCARD
378
378
  typeparamtel1list = seq(typeparamtel1 << ",".r,
379
- lazy { typeparamtel1list }) do |a, b|
379
+ lazy { typeparamtel1list }) do |(a, b)|
380
380
  [a, b].flatten
381
381
  end | typeparamtel1.map { |t| [t] }
382
382
  typeparamtel1list.eof
@@ -390,7 +390,7 @@ module Vcard::V4_0
390
390
  /ME/i.r | /AGENT/i.r | /EMERGENCY/i.r
391
391
  typerelatedlist =
392
392
  seq(typeparamrelated << ";".r,
393
- lazy { typerelatedlist }) { |a, b| [a, b].flatten } |
393
+ lazy { typerelatedlist }) { |(a, b)| [a, b].flatten } |
394
394
  typeparamrelated.map { |t| [t] }
395
395
  typerelatedlist.eof
396
396
  end