summaryrefslogtreecommitdiff
path: root/cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm
diff options
context:
space:
mode:
Diffstat (limited to 'cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm')
-rw-r--r--cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm210
1 files changed, 0 insertions, 210 deletions
diff --git a/cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm b/cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm
deleted file mode 100644
index 03a82487f2..0000000000
--- a/cpan/Test-Simple/lib/Test/Stream/PackageUtil.pm
+++ /dev/null
@@ -1,210 +0,0 @@
-package Test::Stream::PackageUtil;
-use strict;
-use warnings;
-
-sub confess { require Carp; goto &Carp::confess }
-
-my @SLOTS = qw/HASH SCALAR ARRAY IO FORMAT CODE/;
-my %SLOTS = map {($_ => 1)} @SLOTS;
-
-my %SIGMAP = (
- '&' => 'CODE',
- '%' => 'HASH',
- '$' => 'SCALAR',
- '*' => 'IO',
-);
-
-sub import {
- my $caller = caller;
- no strict 'refs';
- *{"$caller\::package_sym"} = \&package_sym;
- *{"$caller\::package_purge_sym"} = \&package_purge_sym;
- 1;
-}
-
-sub package_sym {
- my ($pkg, @parts) = @_;
- confess "you must specify a package" unless $pkg;
-
- my ($slot, $name);
-
- if (@parts > 1) {
- ($slot, $name) = @parts;
- }
- elsif (@parts) {
- my $sig;
- ($sig, $name) = $parts[0] =~ m/^(\W)?(\w+)$/;
- $slot = $SIGMAP{$sig || '&'};
- }
-
- confess "you must specify a symbol type" unless $slot;
- confess "you must specify a symbol name" unless $name;
-
- confess "'$slot' is not a valid symbol type! Valid: " . join(", ", @SLOTS)
- unless $SLOTS{$slot};
-
- no warnings 'once';
- no strict 'refs';
- return *{"$pkg\::$name"}{$slot};
-}
-
-sub package_purge_sym {
- my ($pkg, @pairs) = @_;
-
- for(my $i = 0; $i < @pairs; $i += 2) {
- my $purge = $pairs[$i];
- my $name = $pairs[$i + 1];
-
- confess "'$purge' is not a valid symbol type! Valid: " . join(", ", @SLOTS)
- unless $SLOTS{$purge};
-
- no strict 'refs';
- local *GLOBCLONE = *{"$pkg\::$name"};
- my $stash = \%{"${pkg}\::"};
- delete $stash->{$name};
- for my $slot (@SLOTS) {
- next if $slot eq $purge;
- *{"$pkg\::$name"} = *GLOBCLONE{$slot} if defined *GLOBCLONE{$slot};
- }
- }
-}
-
-1;
-
-__END__
-
-=pod
-
-=encoding UTF-8
-
-=head1 NAME
-
-Test::Stream::PackageUtil - Utils for manipulating package symbol tables.
-
-=head1 DESCRIPTION
-
-Collection of utilities L<Test::Stream> and friends use to manipulate package
-symbol tables. This is primarily useful when trackign things like C<$TODO>
-vars. It is also used for exporting and meta-construction of object methods.
-
-=head1 EXPORTS
-
-Both exports are exported by default, you cannot pick and choose. These work
-equally well as functions and class-methods. These will not work as object
-methods.
-
-=over 4
-
-=item $ref = package_sym($PACKAGE, $SLOT => $NAME)
-
-Get the reference to a symbol in the package. C<$PACKAGE> should be the package
-name. C<$SLOT> should be a valid typeglob slot (Supported slots: HASH SCALAR ARRAY
-IO FORMAT CODE). C<$NAME> should be the name of the symbol.
-
-=item package_purge_sym($PACKAGE, $SLOT => $NAME, $SLOT2 => $NAME2, ...)
-
-This is used to remove symbols from a package. The first argument, C<$PACKAGE>,
-should be the name of the package. The remaining arguments should be key/value
-pairs. The key in each pair should be the typeglob slot to clear (Supported
-slots: HASH SCALAR ARRAY IO FORMAT CODE). The value in the pair should be the
-name of the symbol to remove.
-
-=back
-
-=head1 SOURCE
-
-The source code repository for Test::More can be found at
-F<http://github.com/Test-More/test-more/>.
-
-=head1 MAINTAINER
-
-=over 4
-
-=item Chad Granum E<lt>exodist@cpan.orgE<gt>
-
-=back
-
-=head1 AUTHORS
-
-The following people have all contributed to the Test-More dist (sorted using
-VIM's sort function).
-
-=over 4
-
-=item Chad Granum E<lt>exodist@cpan.orgE<gt>
-
-=item Fergal Daly E<lt>fergal@esatclear.ie>E<gt>
-
-=item Mark Fowler E<lt>mark@twoshortplanks.comE<gt>
-
-=item Michael G Schwern E<lt>schwern@pobox.comE<gt>
-
-=item 唐鳳
-
-=back
-
-=head1 COPYRIGHT
-
-There has been a lot of code migration between modules,
-here are all the original copyrights together:
-
-=over 4
-
-=item Test::Stream
-
-=item Test::Stream::Tester
-
-Copyright 2014 Chad Granum E<lt>exodist7@gmail.comE<gt>.
-
-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>
-
-=item Test::Simple
-
-=item Test::More
-
-=item Test::Builder
-
-Originally authored by Michael G Schwern E<lt>schwern@pobox.comE<gt> with much
-inspiration from Joshua Pritikin's Test module and lots of help from Barrie
-Slaymaker, Tony Bowden, blackstar.co.uk, chromatic, Fergal Daly and the perl-qa
-gang.
-
-Idea by Tony Bowden and Paul Johnson, code by Michael G Schwern
-E<lt>schwern@pobox.comE<gt>, wardrobe by Calvin Klein.
-
-Copyright 2001-2008 by Michael G Schwern E<lt>schwern@pobox.comE<gt>.
-
-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>
-
-=item Test::use::ok
-
-To the extent possible under law, 唐鳳 has waived all copyright and related
-or neighboring rights to L<Test-use-ok>.
-
-This work is published from Taiwan.
-
-L<http://creativecommons.org/publicdomain/zero/1.0>
-
-=item Test::Tester
-
-This module is copyright 2005 Fergal Daly <fergal@esatclear.ie>, some parts
-are based on other people's work.
-
-Under the same license as Perl itself
-
-See http://www.perl.com/perl/misc/Artistic.html
-
-=item Test::Builder::Tester
-
-Copyright Mark Fowler E<lt>mark@twoshortplanks.comE<gt> 2002, 2004.
-
-This program is free software; you can redistribute it
-and/or modify it under the same terms as Perl itself.
-
-=back