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 )