Commit | Line | Data |
20377446 |
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 | |