vobject 1.0.2 → 1.1.0

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