KOBAYASHI, Hiroaki

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.