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