r33358 - in /branches/upstream/libexporter-lite-perl: ./ current/ current/lib/ current/lib/Exporter/ current/t/ current/t/lib/
ryan52-guest at users.alioth.debian.org
ryan52-guest at users.alioth.debian.org
Thu Apr 16 03:20:59 UTC 2009
Author: ryan52-guest
Date: Thu Apr 16 03:20:54 2009
New Revision: 33358
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=33358
Log:
[svn-inject] Installing original source of libexporter-lite-perl
Added:
branches/upstream/libexporter-lite-perl/
branches/upstream/libexporter-lite-perl/current/
branches/upstream/libexporter-lite-perl/current/MANIFEST
branches/upstream/libexporter-lite-perl/current/META.yml
branches/upstream/libexporter-lite-perl/current/Makefile.PL
branches/upstream/libexporter-lite-perl/current/SIGNATURE
branches/upstream/libexporter-lite-perl/current/lib/
branches/upstream/libexporter-lite-perl/current/lib/Exporter/
branches/upstream/libexporter-lite-perl/current/lib/Exporter/Lite.pm
branches/upstream/libexporter-lite-perl/current/t/
branches/upstream/libexporter-lite-perl/current/t/Exporter-Lite.t
branches/upstream/libexporter-lite-perl/current/t/lib/
branches/upstream/libexporter-lite-perl/current/t/lib/Dummy.pm
Added: branches/upstream/libexporter-lite-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libexporter-lite-perl/current/MANIFEST?rev=33358&op=file
==============================================================================
--- branches/upstream/libexporter-lite-perl/current/MANIFEST (added)
+++ branches/upstream/libexporter-lite-perl/current/MANIFEST Thu Apr 16 03:20:54 2009
@@ -1,0 +1,7 @@
+MANIFEST
+Makefile.PL
+lib/Exporter/Lite.pm
+t/Exporter-Lite.t
+t/lib/Dummy.pm
+META.yml Module meta-data (added by MakeMaker)
+SIGNATURE Public-key signature (added by MakeMaker)
Added: branches/upstream/libexporter-lite-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libexporter-lite-perl/current/META.yml?rev=33358&op=file
==============================================================================
--- branches/upstream/libexporter-lite-perl/current/META.yml (added)
+++ branches/upstream/libexporter-lite-perl/current/META.yml Thu Apr 16 03:20:54 2009
@@ -1,0 +1,12 @@
+--- #YAML:1.0
+name: Exporter-Lite
+version: 0.02
+abstract: ~
+license: perl
+generated_by: ExtUtils::MakeMaker version 6.31
+distribution_type: module
+requires:
+ Test::More: 0.34
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.2.html
+ version: 1.2
Added: branches/upstream/libexporter-lite-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libexporter-lite-perl/current/Makefile.PL?rev=33358&op=file
==============================================================================
--- branches/upstream/libexporter-lite-perl/current/Makefile.PL (added)
+++ branches/upstream/libexporter-lite-perl/current/Makefile.PL Thu Apr 16 03:20:54 2009
@@ -1,0 +1,54 @@
+#!/usr/bin/perl -w
+
+use ExtUtils::MakeMaker;
+
+$PACKAGE = 'Exporter::Lite';
+($PACKAGE_FILE = $PACKAGE) =~ s|::|/|g;
+$LAST_API_CHANGE = 0;
+
+eval "require $PACKAGE";
+
+unless ($@) { # Make sure we did find the module.
+ print <<"CHANGE_WARN" if ${$PACKAGE.'::VERSION'} < $LAST_API_CHANGE;
+
+NOTE: There have been API changes between this version and any older
+than version $LAST_API_CHANGE! Please read the Changes file if you
+are upgrading from a version older than $LAST_API_CHANGE.
+
+CHANGE_WARN
+}
+
+WriteMakefile(
+ NAME => $PACKAGE,
+ VERSION_FROM => "lib/$PACKAGE_FILE.pm", # finds $VERSION
+ PREREQ_PM => {
+ Test::More => 0.34
+ },
+ ($ExtUtils::MakeMaker::VERSION <= 6.31 ? (LICENSE => 'perl') : ()),
+);
+
+
+{
+ package MY;
+
+ sub test_via_harness {
+ my($self, $orig_perl, $tests) = @_;
+
+ my @perls = ($orig_perl);
+ push @perls, qw(bleadperl
+ perl5.6.1
+ perl5.6.0
+ perl5.005_03
+ perl5.004_05
+ perl5.004_04
+ perl5.004)
+ if $ENV{PERL_TEST_ALL};
+
+ my $out;
+ foreach my $perl (@perls) {
+ $out .= $self->SUPER::test_via_harness($perl, $tests);
+ }
+
+ return $out;
+ }
+}
Added: branches/upstream/libexporter-lite-perl/current/SIGNATURE
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libexporter-lite-perl/current/SIGNATURE?rev=33358&op=file
==============================================================================
--- branches/upstream/libexporter-lite-perl/current/SIGNATURE (added)
+++ branches/upstream/libexporter-lite-perl/current/SIGNATURE Thu Apr 16 03:20:54 2009
@@ -1,0 +1,29 @@
+This file contains message digests of all files listed in MANIFEST,
+signed via the Module::Signature module, version 0.55.
+
+To verify the content in this distribution, first make sure you have
+Module::Signature installed, then type:
+
+ % cpansign -v
+
+It will check each file's integrity, as well as the signature's
+validity. If "==> Signature verified OK! <==" is not displayed,
+the distribution may already have been compromised, and you should
+not run its Makefile.PL or Build.PL.
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+SHA1 37dc36a06aa00dbfc85d43390ce4d03e25b3eddd MANIFEST
+SHA1 a938d857885a4ac9421bc3b640568f24a0d9ca2d META.yml
+SHA1 68983e2578d6936968dc147d0d19c12e99aefa66 Makefile.PL
+SHA1 f1ff6ad424b0ba6a4dc03b1bbfa4152b6a1ad3cc lib/Exporter/Lite.pm
+SHA1 89a622e04817b25dae1cdf51b56f25c7b3432fbd t/Exporter-Lite.t
+SHA1 7154c027605cbb43345a88a80d5fd82184d68652 t/lib/Dummy.pm
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.5 (Darwin)
+
+iD8DBQFFVma6WMohlhD1QycRAp2KAKC9vpMDK40IyF3Xqer6JdArbkaBxACfWbyw
+4inSb0Z1PP7eFQezUIWYGOg=
+=G7lI
+-----END PGP SIGNATURE-----
Added: branches/upstream/libexporter-lite-perl/current/lib/Exporter/Lite.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libexporter-lite-perl/current/lib/Exporter/Lite.pm?rev=33358&op=file
==============================================================================
--- branches/upstream/libexporter-lite-perl/current/lib/Exporter/Lite.pm (added)
+++ branches/upstream/libexporter-lite-perl/current/lib/Exporter/Lite.pm Thu Apr 16 03:20:54 2009
@@ -1,0 +1,196 @@
+package Exporter::Lite;
+
+require 5.004;
+
+# Using strict or vars almost doubles our load time. Turn them back
+# on when debugging.
+#use strict 'vars'; # we're going to be doing a lot of sym refs
+#use vars qw($VERSION @EXPORT);
+
+$VERSION = 0.02;
+ at EXPORT = qw(import); # we'll know pretty fast if it doesn't work :)
+
+
+
+sub import {
+ my($exporter, @imports) = @_;
+ my($caller, $file, $line) = caller;
+
+ unless( @imports ) { # Default import.
+ @imports = @{$exporter.'::EXPORT'};
+ }
+ else {
+ # Because @EXPORT_OK = () would indicate that nothing is
+ # to be exported, we cannot simply check the length of @EXPORT_OK.
+ # We must to oddness to see if the variable exists at all as
+ # well as avoid autovivification.
+ # XXX idea stolen from base.pm, this might be all unnecessary
+ my $eokglob;
+ if( $eokglob = ${$exporter.'::'}{EXPORT_OK} and *$eokglob{ARRAY} ) {
+ if( @{$exporter.'::EXPORT_OK'} ) {
+ # This can also be cached.
+ my %ok = map { s/^&//; $_ => 1 } @{$exporter.'::EXPORT_OK'},
+ @{$exporter.'::EXPORT'};
+
+ my($denied) = grep {s/^&//; !$ok{$_}} @imports;
+ _not_exported($denied, $exporter, $file, $line) if $denied;
+ }
+ else { # We don't export anything.
+ _not_exported($imports[0], $exporter, $file, $line);
+ }
+ }
+ }
+
+ _export($caller, $exporter, @imports);
+}
+
+
+
+sub _export {
+ my($caller, $exporter, @imports) = @_;
+
+ # Stole this from Exporter::Heavy. I'm sure it can be written better
+ # but I'm lazy at the moment.
+ foreach my $sym (@imports) {
+ # shortcut for the common case of no type character
+ (*{$caller.'::'.$sym} = \&{$exporter.'::'.$sym}, next)
+ unless $sym =~ s/^(\W)//;
+
+ my $type = $1;
+ my $caller_sym = $caller.'::'.$sym;
+ my $export_sym = $exporter.'::'.$sym;
+ *{$caller_sym} =
+ $type eq '&' ? \&{$export_sym} :
+ $type eq '$' ? \${$export_sym} :
+ $type eq '@' ? \@{$export_sym} :
+ $type eq '%' ? \%{$export_sym} :
+ $type eq '*' ? *{$export_sym} :
+ do { require Carp; Carp::croak("Can't export symbol: $type$sym") };
+ }
+}
+
+
+#"#
+sub _not_exported {
+ my($thing, $exporter, $file, $line) = @_;
+ die sprintf qq|"%s" is not exported by the %s module at %s line %d\n|,
+ $thing, $exporter, $file, $line;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Exporter::Lite - Lightweight exporting of variables
+
+=head1 SYNOPSIS
+
+ package Foo;
+ use Exporter::Lite;
+
+ # Just like Exporter.
+ @EXPORT = qw($This That);
+ @EXPORT_OK = qw(@Left %Right);
+
+
+ # Meanwhile, in another piece of code!
+ package Bar;
+ use Foo; # exports $This and &That.
+
+
+=head1 DESCRIPTION
+
+This is an alternative to Exporter intended to provide a lightweight
+subset of its functionality. It supports C<import()>, C<@EXPORT> and
+C<@EXPORT_OK> and not a whole lot else.
+
+Unlike Exporter, it is not necessary to inherit from Exporter::Lite
+(ie. no C<@ISA = qw(Exporter::Lite)> mantra). Exporter::Lite simply
+exports its import() function. This might be called a "mix-in".
+
+Setting up a module to export its variables and functions is simple:
+
+ package My::Module;
+ use Exporter::Lite;
+
+ @EXPORT = qw($Foo bar);
+
+now when you C<use My::Module>, C<$Foo> and C<bar()> will show up.
+
+In order to make exporting optional, use @EXPORT_OK.
+
+ package My::Module;
+ use Exporter::Lite;
+
+ @EXPORT_OK = qw($Foo bar);
+
+when My::Module is used, C<$Foo> and C<bar()> will I<not> show up.
+You have to ask for them. C<use My::Module qw($Foo bar)>.
+
+=head1 Methods
+
+Export::Lite has one public method, import(), which is called
+automaticly when your modules is use()'d.
+
+In normal usage you don't have to worry about this at all.
+
+=over 4
+
+=item B<import>
+
+ Some::Module->import;
+ Some::Module->import(@symbols);
+
+Works just like C<Exporter::import()> excepting it only honors
+ at Some::Module::EXPORT and @Some::Module::EXPORT_OK.
+
+The given @symbols are exported to the current package provided they
+are in @Some::Module::EXPORT or @Some::Module::EXPORT_OK. Otherwise
+an exception is thrown (ie. the program dies).
+
+If @symbols is not given, everything in @Some::Module::EXPORT is
+exported.
+
+=back
+
+=head1 DIAGNOSTICS
+
+=over 4
+
+=item '"%s" is not exported by the %s module'
+
+Attempted to import a symbol which is not in @EXPORT or @EXPORT_OK.
+
+=item 'Can\'t export symbol: %s'
+
+Attempted to import a symbol of an unknown type (ie. the leading $@% salad
+wasn't recognized).
+
+=back
+
+=head1 BUGS and CAVEATS
+
+Its not yet clear if this is actually any lighter or faster than
+Exporter. I know its at least on par.
+
+OTOH, the docs are much clearer and not having to say C<@ISA =
+qw(Exporter)> is kinda nice.
+
+=head1 AUTHORS
+
+Michael G Schwern <schwern at pobox.com>
+
+=head1 LICENSE
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See F<http://www.perl.com/perl/misc/Artistic.html>
+
+=head1 SEE ALSO
+
+L<Exporter>, L<Exporter::Simple>, L<UNIVERSAL::exports>
+
+=cut
Added: branches/upstream/libexporter-lite-perl/current/t/Exporter-Lite.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libexporter-lite-perl/current/t/Exporter-Lite.t?rev=33358&op=file
==============================================================================
--- branches/upstream/libexporter-lite-perl/current/t/Exporter-Lite.t (added)
+++ branches/upstream/libexporter-lite-perl/current/t/Exporter-Lite.t Thu Apr 16 03:20:54 2009
@@ -1,0 +1,106 @@
+#!/usr/bin/perl -w
+
+use lib qw(t/lib);
+
+use Test::More tests => 30;
+
+BEGIN { use_ok('Exporter::Lite'); }
+can_ok(__PACKAGE__, 'import');
+
+{
+ package Test1;
+ use Dummy;
+
+ ::can_ok('Dummy', 'import');
+ ::ok( defined &foo, '@EXPORT' );
+ ::is( foo, 42, ' in one piece' );
+ ::is( $foo, 'foofer', ' and variables' );
+}
+
+{
+ package YATest1;
+ use Dummy qw(foo);
+
+ ::ok( defined &foo, '@EXPORT with explicit request' );
+ ::is( foo, 42, ' in one piece' );
+}
+
+{
+ package Test2;
+ use Dummy ();
+
+ ::ok( !defined &foo, 'import with ()' );
+}
+
+{
+ package Test3;
+ eval { Dummy->import('car') };
+ ::like( $@, '/"car" is not exported by the Dummy module/',
+ 'importing non-expoted function' );
+}
+
+
+{
+ package Test4;
+ use Dummy qw(bar);
+ ::ok( defined &bar, '@EXPORT_OK' );
+ ::ok( !defined &foo, ' overrides @EXPORT' );
+ ::ok( !defined &my_sum, ' only what we asked for from @EXPORT_OK' );
+ ::is( bar, 23, ' not damaged in transport' );
+}
+
+{
+ package YATest4;
+ use Dummy qw(bar $bar);
+ ::ok( defined &bar, '@EXPORT_OK' );
+ ::ok( !defined &foo, ' overrides @EXPORT' );
+ ::ok( !defined &my_sum, ' only what we asked for from @EXPORT_OK' );
+ ::is( bar, 23, ' not damaged in transport' );
+ ::is( $bar, 'barfer', ' $bar exported' );
+}
+
+{
+ package Test5;
+
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = join '', @_ };
+ eval 'use Dummy qw(bar)';
+ eval 'use Dummy qw(&bar)';
+ ::ok( defined &bar, 'importing multiple times' );
+ ::is( $@, '', ' no errors' );
+ ::is( $warning, '', ' no warnings' );
+}
+
+{
+ package Test6;
+
+ my $warning = '';
+ local $SIG{__WARN__} = sub { $warning = join '', @_ };
+ eval 'use Dummy qw(bar &bar bar bar &bar bar)';
+ ::ok( defined &bar, 'importing duplicates' );
+ ::is( $@, '', ' no errors' );
+ ::is( $warning, '', ' no warnings' );
+}
+
+{
+ package Test7;
+ use Dummy qw(my_sum bar foo);
+
+ ::is( prototype("Dummy::my_sum"), '&@', 'imported sub has prototype' );
+ ::is( prototype("my_sum"), '&@', ' prototype preserved' );
+
+ my @list = qw(1 2 3 4);
+ my $sum = my_sum { $_[0] + $_[1] } @list;
+ ::is( $sum, 10, ' and it works' );
+}
+
+
+{
+ package Test8;
+ eval "use Dummy 0.5";
+ ::is( $@, '', 'use Foo VERSION' );
+
+ eval "use Dummy 99";
+ ::like( $@, '/Dummy version 99.* required/',
+ 'use with version check' );
+}
Added: branches/upstream/libexporter-lite-perl/current/t/lib/Dummy.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libexporter-lite-perl/current/t/lib/Dummy.pm?rev=33358&op=file
==============================================================================
--- branches/upstream/libexporter-lite-perl/current/t/lib/Dummy.pm (added)
+++ branches/upstream/libexporter-lite-perl/current/t/lib/Dummy.pm Thu Apr 16 03:20:54 2009
@@ -1,0 +1,23 @@
+package Dummy;
+
+use Exporter::Lite;
+ at EXPORT = qw(&foo $foo);
+ at EXPORT_OK = qw(&bar my_sum $bar);
+$VERSION = 0.5;
+
+$foo = 'foofer';
+sub foo { 42 }
+
+$bar = 'barfer';
+sub bar { 23 }
+
+sub my_sum (&@) {
+ my($sub, @list) = @_;
+
+ foreach (@list) { $sum = $sub->($_, $sum || 0); }
+ return $sum;
+}
+
+sub car { "yarblockos" }
+
+return 23;
More information about the Pkg-perl-cvs-commits
mailing list