User::Identity::Collection(3pm) | User Contributed Perl Documentation | User::Identity::Collection(3pm) |
User::Identity::Collection - base class for collecting roles of a user
User::Identity::Collection is an User::Identity::Item User::Identity::Collection is extended by User::Identity::Collection::Emails User::Identity::Collection::Locations User::Identity::Collection::Systems User::Identity::Collection::Users
use User::Identity; use User::Identity::Collection; my $me = User::Identity->new(...); my $set = User::Identity::Collection::Emails->new(...); $me->addCollection($set); # Simpler use User::Identity; my $me = User::Identity->new(...); my $set = $me->addCollection(type => 'email', ...) my $set = $me->addCollection('email', ...) my @roles = $me->collection('email'); # list of collected items my $coll = $me->collection('email'); # a User::Identity::Collection my @roles = $coll->roles; my @roles = @$coll; # same, by overloading my $role = $me->collection('email')->find($coderef); my $role = $me->collection('location')->find('work'); my $role = $me->find(location => 'work');
The "User::Identity::Collection" object maintains a set user related objects. It helps selecting these objects, which is partially common to all collections (for instance, each object has a name so you can search on names), and sometimes specific to the extension of this collection.
Currently imlemented extensions are
collection of email addresses
groups of systems
Extends "DESCRIPTION" in User::Identity::Item.
example:
my $locations = $ui->collection('location'); foreach my $loc (@$location) ... print $location->[0];
example:
print "$collection\n"; # location: home, work
Extends "METHODS" in User::Identity::Item.
Extends "Constructors" in User::Identity::Item.
-Option --Defined in --Default description User::Identity::Item undef item_type <required> name User::Identity::Item <required> parent User::Identity::Item undef roles undef
Extends "Attributes" in User::Identity::Item.
Extends "Collections" in User::Identity::Item.
example:
my $uicl = User::Identity::Collection::Locations->new; my $uil = User::Identity::Location->new(home => ...); $uicl->addRole($uil); $uicl->addRole( home => address => 'street 32' ); $uicl->addRole( [home => address => 'street 32'] );
Easier
$ui = User::Identity; $ui->add(location => 'home', address => 'street 32' ); $ui->add(location => [ 'home', address => 'street 32' ] );
Extends "Searching" in User::Identity::Item.
When a code reference is specified, all collected roles are scanned one after the other (in unknown order). For each role,
CODE->($object, $collection)
is called. When the CODE returns true, the role is selected. In list context, all selected roles are returned. In scalar context, the first match is returned and the scan is aborted immediately.
example:
my $emails = $ui->collection('emails'); $emails->find('work'); sub find_work($$) { my ($mail, $emails) = @_; $mail->location->name eq 'work'; } my @at_work = $emails->find(\&find_work); my @at_work = $ui->find(location => \&find_work); my $any = $ui->find(location => undef );
This module is part of User-Identity distribution version 1.00, built on October 14, 2020. Website: http://perl.overmeer.net/CPAN/
Copyrights 2003-2020 by [Mark Overmeer <markov@cpan.org>]. 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 http://dev.perl.org/licenses/
2020-10-18 | perl v5.30.3 |