From 6e242023eb97405f9a0a283c07e9d6a64c6a3b21 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Tue, 14 Jun 2011 12:29:51 -0500 Subject: rename to Sub::Exporter::Declare --- lib/Sub/Exporter/Declare.pm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 lib/Sub/Exporter/Declare.pm (limited to 'lib/Sub/Exporter/Declare.pm') diff --git a/lib/Sub/Exporter/Declare.pm b/lib/Sub/Exporter/Declare.pm new file mode 100644 index 0000000..9f20149 --- /dev/null +++ b/lib/Sub/Exporter/Declare.pm @@ -0,0 +1,38 @@ +package Sub::Exporter::Declare; +use strict; +use warnings; + +my %EXPORT_DATA; + +use Sub::Exporter 'build_exporter', -setup => { + exports => [qw(export export_default), import => \&import_generator], + groups => { + default => [qw(export export_default import)], + }, +}; + +sub export { + my @exports = @_; + my $caller = caller; + $EXPORT_DATA{$caller} ||= {}; + push @{ $EXPORT_DATA{$caller}->{exports} ||= [] }, @exports; +} + +sub export_default { + my @exports = @_; + my $caller = caller; + $EXPORT_DATA{$caller} ||= {}; + push @{ $EXPORT_DATA{$caller}->{exports} ||= [] }, @exports; + push @{ $EXPORT_DATA{$caller}->{groups}{default} ||= [] }, @exports; +} + +sub import_generator { + my ($class, $name, $arg, $col) = @_; + return sub { + my ($package) = @_; + my $import = build_exporter($EXPORT_DATA{$package}); + goto $import; + }; +} + +1; -- cgit v1.2.3-54-g00ecf