Tweaks to complete package names and variables
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / FindVariable.pm
1 package Devel::REPL::Plugin::FindVariable;
2
3 use Moose::Role;
4 use namespace::clean -except => [ 'meta' ];
5
6 sub find_variable {
7     my ($self, $name) = @_;
8
9     my $sigil = $name =~ s/^([\$\@\%\&\*])// ? $1 : '';
10
11     my $default_package = $self->can('current_package')
12                         ? $self->current_package
13                         : 'main';
14     my $package = $name =~ s/^(.*)(::|')// ? $1 : $default_package;
15
16     my $meta = Class::MOP::Class->initialize($package);
17
18     return unless $meta->has_package_symbol("$sigil$name");
19     $meta->get_package_symbol("$sigil$name");
20 }
21
22 1;
23