JBD
view release on metacpan or search on metacpan
lib/JBD/Core/Exporter.pm view on Meta::CPAN
use constant MODES => (
':omni',
':default',
);
# Modally, applies the requested import sub to calling package.
sub import {
shift if (ref $_[0] || $_[0] || '') eq __PACKAGE__;
my $m = shift || ':default';
my $s = (map {s/^:/_/; $_} grep $m eq $_, MODES)[0];
*{"${\(caller)[0]}::import"} = *{__PACKAGE__ . "::$s"};
}
#///////////////////////////////////////////////////////////////
#/ Utilties ////////////////////////////////////////////////////
# Bind exporting package symbols to calling package.
# @param string $c Calling package.
# @param string $p Exporting package.
# @param array Symbols $c will import from $p.
lib/JBD/Core/Exporter.pm view on Meta::CPAN
}
#///////////////////////////////////////////////////////////////
#/ Import subs /////////////////////////////////////////////////
# @param string $p Exporting package.
# @param array Symbols caller will import from $p.
sub _omni($;@) {
my $p = shift;
bind_to_caller((caller)[0], $p, @_);
}
# @param string $p Exporting package.
# @param array Symbols caller will import from $p.
sub _default($;@) {
my $p = shift;
if (!@_ && defined *{"${p}::EXPORT"}{ARRAY}) {
my $ref = *{"${p}::EXPORT"};
bind_to_caller((caller)[0], $p, @$ref);
}
if (@_ && defined *{"${p}::EXPORT_OK"}{ARRAY}) {
my $ref = *{"${p}::EXPORT_OK"};
my @ok = grep index("@$ref", $_) >= 0, @_;
bind_to_caller((caller)[0], $p, @ok);
}
}
1;
__END__
=pod
=encoding UTF-8
lib/JBD/Parser/DSL.pm view on Meta::CPAN
|],
);
# @param array Arguments for load().
# @return array Symbols to export.
sub symbols(@) { load shift, @_; @_ }
# Export all symbols in @map.
sub import() {
my $b = \&JBD::Core::Exporter::bind_to_caller;
$b->((caller)[0], __PACKAGE__, symbols @$_) for @map;
JBD::Core::stern->import(1);
}
1;
__END__
=pod
=encoding UTF-8
( run in 0.764 second using v1.01-cache-2.11-cpan-a3c8064c92c )