ce0f3ed64cfcb9dbbff8593a8755b5b1efd207a7
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / CompletionDriver / Turtles.pm
1 #!/usr/bin/perl
2
3 package Devel::REPL::Plugin::CompletionDriver::Turtles;
4 use Devel::REPL::Plugin;
5
6 with qw(
7   Devel::REPL::Plugin::Completion
8   Devel::REPL::Plugin::Turtles
9 );
10
11 around 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 =head1 NAME
42
43 Devel::REPL::Plugin::CompletionDriver::Turtles - Complete Turtles-based commands
44
45 =cut
46