tighten this lib import
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / CompletionDriver / Turtles.pm
CommitLineData
1716b200 1use strict;
2use warnings;
20377446 3package Devel::REPL::Plugin::CompletionDriver::Turtles;
6f4f9516 4
20377446 5use Devel::REPL::Plugin;
b1c83802 6use Devel::REPL::Plugin::Completion; # die early if cannot load
aa8b7647 7use namespace::autoclean;
c015ad3b 8
75a08365 9sub BEFORE_PLUGIN {
10 my $self = shift;
11 $self->load_plugin('Completion');
12}
13
20377446 14around complete => sub {
15 my $orig = shift;
16 my ($self, $text, $document) = @_;
17
18 my $prefix = $self->default_command_prefix;
19 my $line_re = qr/^($prefix)(\w+)/;
20
21 my @orig = $self->$orig($text, $document);
22
23 if ( my ( $pre, $method ) = ( $text =~ $line_re ) ) {
24 my $filter = qr/^\Q$method/;
25 return (
26 @orig,
27 (
28 map { "$pre$_" }
29 grep { $_ =~ $filter }
30 map { /^expr?_command_(\w+)/ ? $1 : () }
32d646c7 31 map { $_->name }
32 $self->meta->get_all_methods
20377446 33 ),
34 );
35 } else {
36 return @orig;
37 }
38};
39
40__PACKAGE__
41
42__END__
43
cfd1094b 44=head1 NAME
45
46Devel::REPL::Plugin::CompletionDriver::Turtles - Complete Turtles-based commands
47
30b459d4 48=head1 AUTHOR
49
50Yuval Kogman E<lt>nothingmuch@woobling.orgE<gt>
51
cfd1094b 52=cut
20377446 53