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