increment $VERSION after 1.003029 release
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / FindVariable.pm
CommitLineData
1716b200 1use strict;
2use warnings;
e93892cd 3package Devel::REPL::Plugin::FindVariable;
9d2a4940 4# ABSTRACT: Finds variables by name
e93892cd 5
77327851 6our $VERSION = '1.003030';
54beb05d 7
6a5409bc 8use Devel::REPL::Plugin;
aa8b7647 9use namespace::autoclean;
e93892cd 10
11sub find_variable {
12 my ($self, $name) = @_;
13
06df0767 14 return \$self if $name eq '$_REPL';
15
6d22063d 16 # XXX: this code needs to live in LexEnv
17 if ($self->can('lexical_environment')) {
18 return \( $self->lexical_environment->get_context('_')->{$name} )
19 if exists $self->lexical_environment->get_context('_')->{$name};
20 }
21
e93892cd 22 my $sigil = $name =~ s/^([\$\@\%\&\*])// ? $1 : '';
23
24 my $default_package = $self->can('current_package')
25 ? $self->current_package
26 : 'main';
27 my $package = $name =~ s/^(.*)(::|')// ? $1 : $default_package;
28
29 my $meta = Class::MOP::Class->initialize($package);
30
86f22c23 31 # Class::MOP::Package::has_package_symbol method *requires* a sigil
32 return unless length($sigil) and $meta->has_package_symbol("$sigil$name");
e93892cd 33 $meta->get_package_symbol("$sigil$name");
34}
35
361;
37
cfd1094b 38__END__
39
9d2a4940 40=pod
cfd1094b 41
30b459d4 42=head1 AUTHOR
43
44Shawn M Moore, C<< <sartak at gmail dot com> >>
45
cfd1094b 46=cut