def self.parse(data)
data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding)
address_list = AddressListStruct.new([], [])
return address_list if Mail::Utilities.blank?(data)
phrase_s = phrase_e = qstr_s = qstr = comment_s = nil
group_name_s = domain_s = group_name = nil
local_dot_atom_s = local_dot_atom_e = nil
local_dot_atom_pre_comment_e = nil
obs_domain_list_s = nil
address_s = 0
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
# 5.1 Variables Used by Ragel
p = 0
eof = pe = data.length
stack = []
n
|= 0
||= data.length
= start
= 0
n
tEof = false
en, _trans, _keys, _inds, _acts, _nacts = nil
to_level = 0
sume = 10
f_trans = 15
ain = 20
st_eof = 30
t = 40
le true
_goto_level <= 0
p == pe
oto_level = _test_eof
xt
cs == 0
oto_level = _out
xt
_goto_level <= _resume
ys = cs << 1
ds = _index_offsets[cs]
en = _key_spans[cs]
de = data[p].ord
ans = if ( _slen > 0 &&
trans_keys[_keys] <= _wide &&
wide <= _trans_keys[_keys + 1]
) then
indicies[ _inds + _wide - _trans_keys[_keys] ]
lse
indicies[ _inds + _slen ]
nd
= _trans_targs[_trans]
_trans_actions[_trans] != 0
e _trans_actions[_trans]
n 4 then
gin
ase_e = p-1 end
n 8 then
gin
r_s = p end
n 10 then
gin
r = chars(data, qstr_s, p-1) end
n 59 then
gin
ment_s = p unless comment_s end
n 12 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
n 34 then
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 3 then
gin
if qstr
address.display_name = Mail::Utilities.unescape(qstr)
qstr = nil
elsif phrase_e
address.display_name = chars(data, phrase_s, phrase_e).strip
phrase_e = phrase_s = nil
end
end
n 43 then
gin
ain_s = p end
n 54 then
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
n 1 then
gin
al_dot_atom_s = p end
n 24 then
gin
al_dot_atom_e = p-1 end
n 21 then
gin
al_dot_atom_pre_comment_e = p-1 end
n 50 then
gin
ress.local = '"' + qstr + '"' if address end
n 20 then
gin
_domain_list_s = p end
n 2 then
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
n 62 then
gin
gin
p -= 1
= stack[top]
oto_level = _again
xt
nd
n 6 then
gin
ase_e = p-1 end
gin
if qstr
group = qstr
qstr = nil
else
group = chars(data, group_name_s, p-1)
group_name_s = nil
end
address_list.group_names << group
group_name = group
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address_s = p
address.group = group_name
end
n 7 then
gin
ase_e = p-1 end
gin
if qstr
address.display_name = Mail::Utilities.unescape(qstr)
qstr = nil
elsif phrase_e
address.display_name = chars(data, phrase_s, phrase_e).strip
phrase_e = phrase_s = nil
end
end
n 42 then
gin
ase_e = p-1 end
gin
ain_s = p end
n 30 then
gin
ase_e = p-1 end
gin
al_dot_atom_pre_comment_e = p-1 end
n 9 then
gin
r_s = p end
gin
r = chars(data, qstr_s, p-1) end
n 60 then
gin
ment_s = p unless comment_s end
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
n 61 then
gin
ment_s = p unless comment_s end
gin
gin
p -= 1
= stack[top]
oto_level = _again
xt
nd
n 11 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ase_e = p-1 end
n 35 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 17 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
if qstr
address.display_name = Mail::Utilities.unescape(qstr)
qstr = nil
elsif phrase_e
address.display_name = chars(data, phrase_s, phrase_e).strip
phrase_e = phrase_s = nil
end
end
n 55 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
n 53 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_s = p end
n 25 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 end
n 52 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ress.local = '"' + qstr + '"' if address end
n 16 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
n 29 then
gin
ress_s = p end
gin
ase_s = p end
n 28 then
gin
ress_s = p end
gin
if qstr
address.display_name = Mail::Utilities.unescape(qstr)
qstr = nil
elsif phrase_e
address.display_name = chars(data, phrase_s, phrase_e).strip
phrase_e = phrase_s = nil
end
end
n 48 then
gin
ain_s = p end
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
n 45 then
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 18 then
gin
al_dot_atom_s = p end
gin
_domain_list_s = p end
n 33 then
gin
al_dot_atom_e = p-1 end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 39 then
gin
al_dot_atom_e = p-1 end
gin
ress.local = '"' + qstr + '"' if address end
n 23 then
gin
al_dot_atom_pre_comment_e = p-1 end
gin
al_dot_atom_e = p-1 end
n 22 then
gin
al_dot_atom_pre_comment_e = p-1 end
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
n 49 then
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 56 then
gin
ress.obs_domain_list = chars(data, obs_domain_list_s, p-1) end
gin
al_dot_atom_s = p end
n 5 then
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
gin
ase_e = p-1 end
n 14 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ase_e = p-1 end
gin
if qstr
group = qstr
qstr = nil
else
group = chars(data, group_name_s, p-1)
group_name_s = nil
end
address_list.group_names << group
group_name = group
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address_s = p
address.group = group_name
end
n 15 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ase_e = p-1 end
gin
if qstr
address.display_name = Mail::Utilities.unescape(qstr)
qstr = nil
elsif phrase_e
address.display_name = chars(data, phrase_s, phrase_e).strip
phrase_e = phrase_s = nil
end
end
n 46 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 47 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 41 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 end
gin
ress.local = '"' + qstr + '"' if address end
n 51 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 13 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
gin
ase_e = p-1 end
n 65 then
gin
up_name_s = p end
gin
ase_s = p end
gin
ress_s = p end
n 26 then
gin
ress_s = p end
gin
ase_s = p end
gin
al_dot_atom_s = p end
n 19 then
gin
al_dot_atom_s = p end
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
gin
_domain_list_s = p end
n 38 then
gin
al_dot_atom_e = p-1 end
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 32 then
gin
al_dot_atom_pre_comment_e = p-1 end
gin
al_dot_atom_e = p-1 end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 37 then
gin
al_dot_atom_pre_comment_e = p-1 end
gin
al_dot_atom_e = p-1 end
gin
ress.local = '"' + qstr + '"' if address end
n 57 then
gin
ress.obs_domain_list = chars(data, obs_domain_list_s, p-1) end
gin
al_dot_atom_s = p end
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
n 44 then
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
gin
ase_e = p-1 end
gin
ain_s = p end
n 31 then
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
gin
ase_e = p-1 end
gin
al_dot_atom_pre_comment_e = p-1 end
n 40 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 end
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 63 then
gin
up_name_s = p end
gin
ase_s = p end
gin
ress_s = p end
gin
al_dot_atom_s = p end
n 27 then
gin
ress_s = p end
gin
ase_s = p end
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
gin
al_dot_atom_s = p end
n 36 then
gin
al_dot_atom_pre_comment_e = p-1 end
gin
al_dot_atom_e = p-1 end
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 58 then
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
gin
ress_s = p end
gin
ase_s = p end
gin
al_dot_atom_s = p end
n 64 then
gin
up_name_s = p end
gin
ase_s = p end
gin
gin
ack[top] = cs
p+= 1
= 2449
oto_level = _again
xt
nd
gin
ress_s = p end
gin
al_dot_atom_s = p end
_goto_level <= _again
cs == 0
oto_level = _out
xt
= 1
p != pe
oto_level = _resume
xt
_goto_level <= _test_eof
p == eof
ase _eof_actions[cs]
n 12 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
n 34 then
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 35 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 45 then
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 33 then
gin
al_dot_atom_e = p-1 end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 49 then
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 46 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
address.domain = chars(data, domain_s, p-1).rstrip if address
end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 47 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 51 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 38 then
gin
al_dot_atom_e = p-1 end
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 32 then
gin
al_dot_atom_pre_comment_e = p-1 end
gin
al_dot_atom_e = p-1 end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 40 then
gin
if address
address.comments << chars(data, comment_s, p-2)
end
comment_s = nil
end
gin
al_dot_atom_e = p-1 end
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
n 36 then
gin
al_dot_atom_pre_comment_e = p-1 end
gin
al_dot_atom_e = p-1 end
gin
ress.local = '"' + qstr + '"' if address end
gin
if address_s
if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
if address.domain
address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
else
address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
end
end
address.raw = chars(data, address_s, p-1)
address_list.addresses << address if address
# Start next address
address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
address.group = group_name
address_s = nil
end
end
nd
_goto_level <= _out
eak
if p != eof || cs < 2461
raise Mail::Field::IncompleteParseError.new(Mail::AddressList, data, p)
end
address_list
end