-Revision history for Stash::Manip
+Revision history for Package::Stash
0.02 2010-05-13
Need to dep on Test::Exception
-name = Stash-Manip
+name = Package-Stash
version = 0.02
author = Jesse Luehrs <doy at tozt dot net>
license = Perl_5
-package Stash::Manip;
+package Package::Stash;
use strict;
use warnings;
=head1 NAME
-Stash::Manip - routines for manipulating stashes
+Package::Stash - routines for manipulating stashes
=head1 SYNOPSIS
- my $stash = Stash::Manip->new('Foo');
+ my $stash = Package::Stash->new('Foo');
$stash->add_package_symbol('%foo', {bar => 1});
# $Foo::foo{bar} == 1
$stash->has_package_symbol('$foo') # false
=head2 new $package_name
-Creates a new C<Stash::Manip> object, for the package given as the only
+Creates a new C<Package::Stash> object, for the package given as the only
argument.
=cut
gives it an initial value of C<$value>. C<$variable> should be the name of
variable including the sigil, so
- Stash::Manip->new('Foo')->add_package_symbol('%foo')
+ Package::Stash->new('Foo')->add_package_symbol('%foo')
will create C<%Foo::foo>.
No known bugs.
Please report any bugs through RT: email
-C<bug-stash-manip at rt.cpan.org>, or browse to
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Stash-Manip>.
+C<bug-package-stash at rt.cpan.org>, or browse to
+L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Package-Stash>.
=head1 SEE ALSO
You can find this documentation for this module with the perldoc command.
- perldoc Stash::Manip
+ perldoc Package::Stash
You can also look for information at:
=item * AnnoCPAN: Annotated CPAN documentation
-L<http://annocpan.org/dist/Stash-Manip>
+L<http://annocpan.org/dist/Package-Stash>
=item * CPAN Ratings
-L<http://cpanratings.perl.org/d/Stash-Manip>
+L<http://cpanratings.perl.org/d/Package-Stash>
=item * RT: CPAN's request tracker
-L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Stash-Manip>
+L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Package-Stash>
=item * Search CPAN
-L<http://search.cpan.org/dist/Stash-Manip>
+L<http://search.cpan.org/dist/Package-Stash>
=back
use Test::More tests => 1;
package Foo;
-::use_ok('Stash::Manip')
- or ::BAIL_OUT("couldn't load Stash::Manip");
+::use_ok('Package::Stash')
+ or ::BAIL_OUT("couldn't load Package::Stash");
use Test::More;
use Test::Exception;
-use Stash::Manip;
+use Package::Stash;
-dies_ok { Stash::Manip->name } q{... can't call name() as a class method};
+dies_ok { Package::Stash->name } q{... can't call name() as a class method};
{
package Foo;
# ----------------------------------------------------------------------
## tests adding a HASH
-my $foo_stash = Stash::Manip->new('Foo');
+my $foo_stash = Package::Stash->new('Foo');
ok(!defined($Foo::{foo}), '... the %foo slot has not been created yet');
ok(!$foo_stash->has_package_symbol('%foo'), '... the object agrees');
ok(!defined($Foo::{foo}), '... checking doesn\' vivify');
our %foo = (baz => 1);
sub foo { }
open *foo, '<', $0;
- BEGIN { Stash::Manip->new(__PACKAGE__)->remove_package_symbol('&foo') }
+ BEGIN { Package::Stash->new(__PACKAGE__)->remove_package_symbol('&foo') }
}
{
- my $stash = Stash::Manip->new('Baz');
+ my $stash = Package::Stash->new('Baz');
is(${ $stash->get_package_symbol('$foo') }, 23, "got \$foo");
is_deeply($stash->get_package_symbol('@foo'), ['bar'], "got \@foo");
is_deeply($stash->get_package_symbol('%foo'), {baz => 1}, "got \%foo");
use Test::Exception;
{
- package My::Stash::Manip;
+ package My::Package::Stash;
use strict;
use warnings;
- use base 'Stash::Manip';
+ use base 'Package::Stash';
use Symbol 'gensym';
}
# No actually package Foo exists :)
-my $foo_stash = My::Stash::Manip->new('Foo');
+my $foo_stash = My::Package::Stash->new('Foo');
-isa_ok($foo_stash, 'My::Stash::Manip');
-isa_ok($foo_stash, 'Stash::Manip');
+isa_ok($foo_stash, 'My::Package::Stash');
+isa_ok($foo_stash, 'Package::Stash');
ok(!defined($Foo::{foo}), '... the %foo slot has not been created yet');
ok(!$foo_stash->has_package_symbol('%foo'), '... the foo_stash agrees');
sub bar { }
}
-use Stash::Manip;
+use Package::Stash;
{
- my $stash = Stash::Manip->new('Foo');
+ my $stash = Package::Stash->new('Foo');
ok($stash->has_package_symbol('&foo'), "has &foo");
ok($stash->has_package_symbol('foo'), "has foo");
$stash->remove_package_symbol('&foo');
}
{
- my $stash = Stash::Manip->new('Bar');
+ my $stash = Package::Stash->new('Bar');
ok($stash->has_package_symbol('&bar'), "has &bar");
ok($stash->has_package_symbol('bar'), "has bar");
$stash->remove_package_symbol('bar');
}
{
- my $stash = Stash::Manip->new('Baz');
+ my $stash = Package::Stash->new('Baz');
lives_ok {
$stash->add_package_symbol('baz', *Foo::foo{IO});
} "can add an IO symbol";
use warnings;
use Test::More;
-use Stash::Manip;
+use Package::Stash;
{
- my $stash = Stash::Manip->new('Foo');
+ my $stash = Package::Stash->new('Foo');
my $val = $stash->get_package_symbol('%foo');
is(ref($val), 'HASH', "got something");
$val->{bar} = 1;
}
{
- my $stash = Stash::Manip->new('Bar');
+ my $stash = Package::Stash->new('Bar');
my $val = $stash->get_package_symbol('@foo');
is(ref($val), 'ARRAY', "got something");
push @$val, 1;
use warnings;
use Test::More;
-use Stash::Manip;
+use Package::Stash;
{
package Foo;
package Bar;
}
-my $stash = Stash::Manip->new('Foo');
+my $stash = Package::Stash->new('Foo');
my @ISA = ('Bar');
@{$stash->get_package_symbol('@ISA')} = @ISA;
isa_ok('Foo', 'Bar');
use warnings;
use Test::More;
-use Stash::Manip;
+use Package::Stash;
-my $stash = Stash::Manip->new('Foo');
+my $stash = Package::Stash->new('Foo');
$stash->add_package_symbol('%foo', {bar => 1});
{
no warnings 'once';