Move to Moo for fast bootstrapping.
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / FindVariable.pm
index 6dbf4ca..66eb920 100644 (file)
@@ -1,11 +1,14 @@
 package Devel::REPL::Plugin::FindVariable;
 
-use Moose::Role;
-use namespace::clean -except => [ 'meta' ];
+use Devel::REPL::Plugin;
+use namespace::sweep;
+use Package::Stash;
 
 sub find_variable {
     my ($self, $name) = @_;
 
+    return \$self if $name eq '$_REPL';
+
     # XXX: this code needs to live in LexEnv
     if ($self->can('lexical_environment')) {
         return \( $self->lexical_environment->get_context('_')->{$name} )
@@ -19,11 +22,24 @@ sub find_variable {
                         : 'main';
     my $package = $name =~ s/^(.*)(::|')// ? $1 : $default_package;
 
-    my $meta = Class::MOP::Class->initialize($package);
+    my $meta = Package::Stash->new($package);
 
-    return unless $meta->has_package_symbol("$sigil$name");
-    $meta->get_package_symbol("$sigil$name");
+    # Package::Stash::has_symbol method *requires* a sigil
+    return unless length($sigil) and $meta->has_symbol("$sigil$name");
+    $meta->get_symbol("$sigil$name");
 }
 
 1;
 
+__END__
+
+=head1 NAME
+
+Devel::REPL::Plugin::FindVariable - Finds variables by name
+
+=head1 AUTHOR
+
+Shawn M Moore, C<< <sartak at gmail dot com> >>
+
+=cut
+