Add CompletionDriver::Turtles
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / CompletionDriver / Turtles.pm
CommitLineData
20377446 1#!/usr/bin/perl
2
3package Devel::REPL::Plugin::CompletionDriver::Turtles;
4use Devel::REPL::Plugin;
5
6with qw(
7 Devel::REPL::Plugin::Completion
8 Devel::REPL::Plugin::Turtles
9);
10
11around complete => sub {
12 my $orig = shift;
13 my ($self, $text, $document) = @_;
14
15 my $prefix = $self->default_command_prefix;
16 my $line_re = qr/^($prefix)(\w+)/;
17
18 my @orig = $self->$orig($text, $document);
19
20 if ( my ( $pre, $method ) = ( $text =~ $line_re ) ) {
21 my $filter = qr/^\Q$method/;
22 return (
23 @orig,
24 (
25 map { "$pre$_" }
26 grep { $_ =~ $filter }
27 map { /^expr?_command_(\w+)/ ? $1 : () }
28 map { $_->{name} }
29 $self->meta->compute_all_applicable_methods
30 ),
31 );
32 } else {
33 return @orig;
34 }
35};
36
37__PACKAGE__
38
39__END__
40
41