make plugins be M::I features so dependencies are optional
[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
c015ad3b 6use namespace::clean -except => [ "meta" ];
7
20377446 8around complete => sub {
9 my $orig = shift;
10 my ($self, $text, $document) = @_;
11
12 my $prefix = $self->default_command_prefix;
13 my $line_re = qr/^($prefix)(\w+)/;
14
15 my @orig = $self->$orig($text, $document);
16
17 if ( my ( $pre, $method ) = ( $text =~ $line_re ) ) {
18 my $filter = qr/^\Q$method/;
19 return (
20 @orig,
21 (
22 map { "$pre$_" }
23 grep { $_ =~ $filter }
24 map { /^expr?_command_(\w+)/ ? $1 : () }
25 map { $_->{name} }
26 $self->meta->compute_all_applicable_methods
27 ),
28 );
29 } else {
30 return @orig;
31 }
32};
33
34__PACKAGE__
35
36__END__
37
cfd1094b 38=head1 NAME
39
40Devel::REPL::Plugin::CompletionDriver::Turtles - Complete Turtles-based commands
41
30b459d4 42=head1 AUTHOR
43
44Yuval Kogman E<lt>nothingmuch@woobling.orgE<gt>
45
cfd1094b 46=cut
20377446 47