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