weave some pod, respecting overridden authors/legal
[p5sagit/Devel-REPL.git] / lib / Devel / REPL / Plugin / CompletionDriver / Turtles.pm
CommitLineData
1716b200 1use strict;
2use warnings;
20377446 3package Devel::REPL::Plugin::CompletionDriver::Turtles;
9d2a4940 4# ABSTRACT: Complete Turtles-based commands
6f4f9516 5
54beb05d 6our $VERSION = '1.003027';
7
20377446 8use Devel::REPL::Plugin;
b1c83802 9use Devel::REPL::Plugin::Completion; # die early if cannot load
aa8b7647 10use namespace::autoclean;
c015ad3b 11
75a08365 12sub BEFORE_PLUGIN {
13 my $self = shift;
14 $self->load_plugin('Completion');
15}
16
20377446 17around 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 : () }
32d646c7 34 map { $_->name }
35 $self->meta->get_all_methods
20377446 36 ),
37 );
38 } else {
39 return @orig;
40 }
41};
42
43__PACKAGE__
44
45__END__
46
9d2a4940 47=pod
cfd1094b 48
30b459d4 49=head1 AUTHOR
50
51Yuval Kogman E<lt>nothingmuch@woobling.orgE<gt>
52
cfd1094b 53=cut