=head1 NAME Mail::Message::Field::AddrGroup - A group of Mail::Message::Field::Address objects =head1 INHERITANCE Mail::Message::Field::AddrGroup is a User::Identity::Collection::Emails is a User::Identity::Collection is a User::Identity::Item =head1 SYNOPSIS my $g = Mail::Message::Field::AddrGroup->new(name => 'name'); my $a = Mail::Message::Field::Address->new(...); $g->addAddress($a); my $f = Mail::Message::Field::Addresses->new; $f->addGroup($g); =head1 DESCRIPTION An address group collects a set of e-mail addresses (in this case they are L<Mail::Message::Field::Address|Mail::Message::Field::Address> objects). =head1 OVERLOADED overload: B<@{}> =over 4 See L<User::Identity::Collection/"OVERLOADED"> =back overload: B<stringification> =over 4 Returns the L<string()|Mail::Message::Field::AddrGroup/"METHODS"> value. =back =head1 METHODS $obj-E<gt>B<string> =over 4 Returns the address group as string. When no name is specified, it will only be a comma separated list of addresses. With a name, the groups name will be prepended and a semi-colon appended. When no addresses where included and there is no name, then C<undef> is returned. =back =head2 Constructors $obj-E<gt>B<coerce>(OBJECT) =over 4 Coerce an OBJECT into a L<Mail::Message::Field::AddrGroup|Mail::Message::Field::AddrGroup>. Currently, you can only coerce L<User::Identity::Collection::Emails|User::Identity::Collection::Emails> (which is the base class for this one) into this one. =back Mail::Message::Field::AddrGroup-E<gt>B<new>([NAME], OPTIONS) =over 4 See L<User::Identity::Collection::Emails/"Constructors"> =back =head2 Attributes $obj-E<gt>B<description> =over 4 See L<User::Identity::Item/"Attributes"> =back $obj-E<gt>B<itemType> =over 4 See L<User::Identity::Collection/"Attributes"> =back $obj-E<gt>B<name>([NEWNAME]) =over 4 See L<User::Identity::Item/"Attributes"> =back $obj-E<gt>B<roles> =over 4 See L<User::Identity::Collection/"Attributes"> =back =head2 Collections $obj-E<gt>B<add>(COLLECTION, ROLE) =over 4 See L<User::Identity::Item/"Collections"> =back $obj-E<gt>B<addCollection>(OBJECT | ([TYPE], OPTIONS)) =over 4 See L<User::Identity::Item/"Collections"> =back $obj-E<gt>B<collection>(NAME) =over 4 See L<User::Identity::Item/"Collections"> =back $obj-E<gt>B<parent>([PARENT]) =over 4 See L<User::Identity::Item/"Collections"> =back $obj-E<gt>B<removeCollection>(OBJECT|NAME) =over 4 See L<User::Identity::Item/"Collections"> =back $obj-E<gt>B<type> Mail::Message::Field::AddrGroup-E<gt>B<type> =over 4 See L<User::Identity::Item/"Collections"> =back $obj-E<gt>B<user> =over 4 See L<User::Identity::Item/"Collections"> =back =head2 Maintaining roles $obj-E<gt>B<addRole>(ROLE| ( [NAME],OPTIONS ) | ARRAY-OF-OPTIONS) =over 4 See L<User::Identity::Collection/"Maintaining roles"> =back $obj-E<gt>B<removeRole>(ROLE|NAME) =over 4 See L<User::Identity::Collection/"Maintaining roles"> =back $obj-E<gt>B<renameRole>(ROLE|OLDNAME, NEWNAME) =over 4 See L<User::Identity::Collection/"Maintaining roles"> =back $obj-E<gt>B<sorted> =over 4 See L<User::Identity::Collection/"Maintaining roles"> =back =head2 Searching $obj-E<gt>B<find>(NAME|CODE|undef) =over 4 See L<User::Identity::Collection/"Searching"> =back =head2 Addresses $obj-E<gt>B<addAddress>(STRING|ADDRESS|OPTIONS) =over 4 Add one e-mail address to the list which is maintained in the group. This is a wrapper around L<addRole()|User::Identity::Collection/"Maintaining roles"> adding flexibility on how addresses are specified. An ADDRESS can be anything which is acceptable for L<Mail::Message::Field::Address::coerce()|Mail::Message::Field::Address/"Constructors"> or a list of options which will create such an object. example: of adding an address to an address group my @data = (full_name => "Myself", address => 'me@tux.org'); $group->addAddress(@data); my $addr = Mail::Message::Field::Address->new(@data); $group->addAddress(@data); my $ma = Mail::Address->new(...); $group->addAddress($ma); =back $obj-E<gt>B<addresses> =over 4 Returns all addresses defined in this group. The addresses will be ordered alphabetically to make automated testing possible: roles are stored in a hash, so have an unpredictable order by default. example: getting all addresses from a group my @addrs = $group->addresses; my @addrs = map { $_->address } $self->roles; #same =back =head2 Error handling =head1 DIAGNOSTICS Error: $object is not a collection. =over 4 The first argument is an object, but not of a class which extends L<User::Identity::Collection|User::Identity::Collection>. =back Error: Cannot coerce a $type into a Mail::Message::Field::AddrGroup =over 4 =back Error: Cannot create a $type to add this to my collection. =over 4 Some options are specified to create a $type object, which is native to this collection. However, for some reason this failed. =back Error: Cannot load collection module for $type ($class). =over 4 Either the specified $type does not exist, or that module named $class returns compilation errors. If the type as specified in the warning is not the name of a package, you specified a nickname which was not defined. Maybe you forgot the 'require' the package which defines the nickname. =back Error: Cannot rename $name into $newname: already exists =over 4 =back Error: Cannot rename $name into $newname: doesn't exist =over 4 =back Error: Creation of a collection via $class failed. =over 4 The $class did compile, but it was not possible to create an object of that class using the options you specified. =back Error: Don't know what type of collection you want to add. =over 4 If you add a collection, it must either by a collection object or a list of options which can be used to create a collection object. In the latter case, the type of collection must be specified. =back Warning: No collection $name =over 4 The collection with $name does not exist and can not be created. =back Error: Wrong type of role for $collection: requires a $expect but got a $type =over 4 Each $collection groups sets of roles of one specific type ($expect). You cannot add objects of a different $type. =back =head1 SEE ALSO This module is part of Mail-Box distribution version 2.094, built on April 06, 2010. Website: F<http://perl.overmeer.net/mailbox/> =head1 LICENSE Copyrights 2001-2010 by Mark Overmeer. For other contributors see ChangeLog. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See F<http://www.perl.com/perl/misc/Artistic.html>