NAME
MOP4Import::Pairs - pragma dispatcher for name => [@pragma]... style protocol
SYNOPSIS
package YourExporter;
use MOP4Import::Pairs -as_base, qw/Opts m4i_opts/;
sub import {
my $myPack = shift;
my Opts $opts = m4i_opts([caller]);
# Invoke declare_foobar for each $name => $pragmas pairs.
$myPack->dispatch_pairs_as_declare(foobar => $opts, @_);
}
sub declare_foobar {
(my $myPack, my Opts $opts, my ($name, @pragmas)) = m4i_args(@_);
...
}
#-----------------------------------
# Then you can use above module in other script like following
#-----------------------------------
use YourExporter (
xxx => [1..3],
yyy => [4..6]
);
# Above is equivalent of following:
BEGIN {
YourExporter->declare_foobar(__PACKAGE__, xxx, 1..3);
YourExporter->declare_foobar(__PACKAGE__, yyy, 4..6);
}
DESCRIPTION
This module provides name => [@pragma_list]
style dispatcher of MOP4Import::Declare pragmas. Mainly used from MOP4Import::Types.
"MetaObject Protocol for Import" in this module
This module does not provide "import" itself. Instead, this provides a helper method dispatch_pairs_as_declare
to implement "import".
METHODS
dispatch_pairs_as_declare($pragma, $opts, @name_pragmalist_pairs)
This basically does following:
sub dispatch_pairs_as_declare {
(my $myPack, my $pragma, my Opts $opts, my (@pairs)) = @_;
my $method = "declare_$pragma";
while (my ($typename, $pragma_list) = splice @pairs, 0, 2) {
$myPack->$method($opts, $typename, @$pragma_list);
}
}
AUTHOR
Kobayashi, Hiroaki <hkoba@cpan.org>
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.