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