HEX
Server: Apache
System: Linux s198.coreserver.jp 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: nagasaki (10062)
PHP: 7.1.33
Disabled: NONE
Upload Files
File: //usr/local/rvm/gems/default/doc/mail-2.7.1/ri/lib/mail/parsers/page-address_lists_parser_rl.ri
U:RDoc::TopLevel[	iI"-lib/mail/parsers/address_lists_parser.rl:ETcRDoc::Parser::Simpleo:RDoc::Markup::Document:@parts[o:RDoc::Markup::Paragraph;[I"## frozen_string_literal: true ;TI"require 'mail/utilities' ;TI" require 'mail/parser_tools';To:RDoc::Markup::BlankLineo;	;[I"%%{;To:RDoc::Markup::Verbatim;[|I"machine address_lists;
;TI"alphtype int;
;TI"
;TI"# Phrase
;TI"&action phrase_s { phrase_s = p }
;TI"(action phrase_e { phrase_e = p-1 }
;TI"
;TI"# Quoted String.
;TI""action qstr_s { qstr_s = p }
;TI"7action qstr_e { qstr = chars(data, qstr_s, p-1) }
;TI"
;TI"# Comment
;TI"9action comment_s { comment_s = p unless comment_s }
;TI"action comment_e {
;TI"  if address
;TI"9    address.comments << chars(data, comment_s, p-2)
;TI"  end
;TI"  comment_s = nil
;TI"}
;TI"
;TI"# Group Name
;TI".action group_name_s { group_name_s = p }
;TI"action group_name_e {
;TI"  if qstr
;TI"    group = qstr
;TI"    qstr = nil
;TI"  else
;TI"0    group = chars(data, group_name_s, p-1)
;TI"    group_name_s = nil
;TI"  end
;TI")  address_list.group_names << group
;TI"  group_name = group
;TI"
;TI"  # Start next address
;TI"E  address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
;TI"  address_s = p
;TI""  address.group = group_name
;TI"}
;TI"
;TI"# Address
;TI"(action address_s { address_s = p }
;TI"
;TI"8# Ignore address end events without a start event.
;TI"action address_e {
;TI"  if address_s
;TI"g    if address.local.nil? && local_dot_atom_pre_comment_e && local_dot_atom_s && local_dot_atom_e
;TI"      if address.domain
;TI"M        address.local = chars(data, local_dot_atom_s, local_dot_atom_e)
;TI"      else
;TI"Y        address.local = chars(data, local_dot_atom_s, local_dot_atom_pre_comment_e)
;TI"      end
;TI"
    end
;TI"3    address.raw = chars(data, address_s, p-1)
;TI"6    address_list.addresses << address if address
;TI"
;TI"    # Start next address
;TI"G    address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
;TI"$    address.group = group_name
;TI"    address_s = nil
;TI"  end
;TI"}
;TI"
;TI"O# Don't set the display name until the address has actually started. This
;TI"L# allows us to choose quoted_s version if it exists and always use the
;TI"# 'full' phrase version.
;TI"action angle_addr_s {
;TI"  if qstr
;TI"?    address.display_name = Mail::Utilities.unescape(qstr)
;TI"    qstr = nil
;TI"  elsif phrase_e
;TI"F    address.display_name = chars(data, phrase_s, phrase_e).strip
;TI"#    phrase_e = phrase_s = nil
;TI"  end
;TI"}
;TI"
;TI"# Domain
;TI"&action domain_s { domain_s = p }
;TI"action domain_e {
;TI"E  address.domain = chars(data, domain_s, p-1).rstrip if address
;TI"}
;TI"
;TI"
# Local
;TI"6action local_dot_atom_s { local_dot_atom_s = p }
;TI"8action local_dot_atom_e { local_dot_atom_e = p-1 }
;TI"Paction local_dot_atom_pre_comment_e { local_dot_atom_pre_comment_e = p-1 }
;TI"Raction local_quoted_string_e { address.local = '"' + qstr + '"' if address }
;TI"
;TI"# obs_domain_list
;TI"8action obs_domain_list_s { obs_domain_list_s = p }
;TI"`action obs_domain_list_e { address.obs_domain_list = chars(data, obs_domain_list_s, p-1) }
;TI"
;TI"# Junk actions
;TI"action addr_spec { }
;TI"action ctime_date_e { }
;TI"action ctime_date_s { }
;TI"action date_e { }
;TI"action date_s { }
;TI"action disp_type_e { }
;TI"action disp_type_s { }
;TI"action encoding_e { }
;TI"action encoding_s { }
;TI"action main_type_e { }
;TI"action main_type_s { }
;TI"action major_digits_e { }
;TI"action major_digits_s { }
;TI"action minor_digits_e { }
;TI"action minor_digits_s { }
;TI"action msg_id_e { }
;TI"action msg_id_s { }
;TI"action param_attr_e { }
;TI"action param_attr_s { }
;TI"action param_val_e { }
;TI"action param_val_s { }
;TI""action received_tokens_e { }
;TI""action received_tokens_s { }
;TI"action sub_type_e { }
;TI"action sub_type_s { }
;TI"action time_e { }
;TI"action time_s { }
;TI"action token_string_e { }
;TI"action token_string_s { }
;TI"
;TI"#include rfc5322 "rfc5322.rl";
;TI"main := address_lists;
;T:@format0o;	;[I"}%%;T@o;	;[I"module Mail::Parsers;To;;[,I"module AddressListsParser
;TI"   extend Mail::ParserTools
;TI"
;TI"H  AddressListStruct = Struct.new(:addresses, :group_names, :error)
;TI"D  AddressStruct = Struct.new(:raw, :domain, :comments, :local,
;TI"Q                           :obs_domain_list, :display_name, :group, :error)
;TI"
;TI"  %%write data noprefix;
;TI"
;TI"  def self.parse(data)
;TI"c    data = data.dup.force_encoding(Encoding::ASCII_8BIT) if data.respond_to?(:force_encoding)
;TI"
;TI"6    address_list = AddressListStruct.new([], [])
;TI"=    return address_list if Mail::Utilities.blank?(data)
;TI"
;TI"?    phrase_s = phrase_e = qstr_s = qstr = comment_s = nil
;TI"4    group_name_s = domain_s = group_name = nil
;TI"3    local_dot_atom_s = local_dot_atom_e = nil
;TI",    local_dot_atom_pre_comment_e = nil
;TI"!    obs_domain_list_s = nil
;TI"
;TI"    address_s = 0
;TI"G    address = AddressStruct.new(nil, nil, [], nil, nil, nil, nil)
;TI"
;TI"'    # 5.1 Variables Used by Ragel
;TI"    p = 0
;TI"     eof = pe = data.length
;TI"    stack = []
;TI"
;TI"    %%write init;
;TI"    %%write exec;
;TI"
;TI"8    if p != eof || cs < %%{ write first_final; }%%
;TI"S      raise Mail::Field::IncompleteParseError.new(Mail::AddressList, data, p)
;TI"
    end
;TI"
;TI"    address_list
;TI"  end
;TI"	end
;T;0o;	;[I"end;T:
@file@:0@omit_headings_from_table_of_contents_below0