diff options
Diffstat (limited to 'lib/Exporter/Shiny.pm')
-rw-r--r-- | lib/Exporter/Shiny.pm | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/lib/Exporter/Shiny.pm b/lib/Exporter/Shiny.pm new file mode 100644 index 0000000..063cb47 --- /dev/null +++ b/lib/Exporter/Shiny.pm @@ -0,0 +1,111 @@ +package Exporter::Shiny; + +use 5.006001; +use strict; +use warnings; + +use Exporter::Tiny (); + +our $AUTHORITY = 'cpan:TOBYINK'; +our $VERSION = '0.042'; + +sub import { + my $me = shift; + my $caller = caller; + + (my $nominal_file = $caller) =~ s(::)(/)g; + $INC{"$nominal_file\.pm"} ||= __FILE__; + + if (@_ == 2 and $_[0] eq -setup) + { + my (undef, $opts) = @_; + @_ = @{ delete($opts->{exports}) || [] }; + + if (%$opts) { + Exporter::Tiny::_croak( + 'Unsupported Sub::Exporter-style options: %s', + join(q[, ], sort keys %$opts), + ); + } + } + + ref($_) && Exporter::Tiny::_croak('Expected sub name, got ref %s', $_) for @_; + + no strict qw(refs); + push @{"$caller\::ISA"}, 'Exporter::Tiny'; + push @{"$caller\::EXPORT_OK"}, @_; +} + +1; + +__END__ + +=pod + +=encoding utf-8 + +=head1 NAME + +Exporter::Shiny - shortcut for Exporter::Tiny + +=head1 SYNOPSIS + + use Exporter::Shiny qw( foo bar ); + +Is a shortcut for: + + use base "Exporter::Tiny"; + push our(@EXPORT_OK), qw( foo bar ); + +For compatibility with L<Sub::Exporter>, the following longer syntax is +also supported: + + use Exporter::Shiny -setup => { + exports => [qw( foo bar )], + }; + +=head1 DESCRIPTION + +This is a very small wrapper to simplify using L<Exporter::Tiny>. + +It does the following: + +=over + +=item * Marks your package as loaded in C<< %INC >>; + +=item * Pushes any function names in the import list onto your C<< @EXPORT_OK >>; and + +=item * Pushes C<< "Exporter::Tiny" >> onto your C<< @ISA >>. + +=back + +It doesn't set up C<< %EXPORT_TAGS >> or C<< @EXPORT >>, but there's +nothing stopping you doing that yourself. + +=head1 BUGS + +Please report any bugs to +L<http://rt.cpan.org/Dist/Display.html?Queue=Exporter-Tiny>. + +=head1 SEE ALSO + +L<Exporter::Tiny>. + +=head1 AUTHOR + +Toby Inkster E<lt>tobyink@cpan.orgE<gt>. + +=head1 COPYRIGHT AND LICENCE + +This software is copyright (c) 2014 by Toby Inkster. + +This is free software; you can redistribute it and/or modify it under +the same terms as the Perl 5 programming language system itself. + +=head1 DISCLAIMER OF WARRANTIES + +THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. + |