Devel-Trepan
view release on metacpan or search on metacpan
lib/Devel/Trepan/Complete.pm view on Meta::CPAN
# -*- coding: utf-8 -*-
# Copyright (C) 2011-2012, 2014 Rocky Bernstein <rocky@cpan.org>
use warnings; use strict; use utf8;
use Exporter;
package Devel::Trepan::Complete;
=head1 SUMMARY
Completion routines for L<Devel::Trepan>
=cut
use vars qw(@ISA @EXPORT); @ISA = qw(Exporter);
@EXPORT = qw(
complete_builtins complete_subs complete_packages
complete_token complete_token_with_next
next_token signal_complete
complete_token_filtered_with_next);
use constant BUILTIN_CONST => qw(__FILE__ __LINE__ __PACKAGE__);
use constant BUILTIN_FNS => qw(
abs accept alarm
and atan2 bind binmode bless caller
chdir chmod chown chr chroot close
closedir cmp connect continue cos crypt
dbmclose dbmopen die dump endgrent
endhostent endnetent endprotoent endpwent
endservent eof eq exec exit exp fcntl
fileno flock fork formline ge getc
getgrent getgrgid getgrnam gethostbyaddr
gethostbyname gethostent getlogin
getnetbyaddr getnetbyname getnetent
getpeername getpgrp getppid getpriority
getprotobyname getprotobynumber getprotoent
getpwent getpwnam getpwuid getservbyname
getservbyport getservent getsockname
getsockopt glob gmtime gt hex index int
ioctl join kill lc lcfirst le length
link listen localtime lock log lstat lt
mkdir msgctl msgget msgrcv msgsnd ne
not oct open opendir or ord pack pipe
quotemeta rand read readdir readline
readlink readpipe recv ref rename require
reset reverse rewinddir rindex rmdir seek
seekdir select semctl semget semop send
setgrent sethostent setnetent setpgrp
setpriority setprotoent setpwent setservent
setsockopt shmctl shmget shmread shmwrite
shutdown sin sleep socket socketpair
sprintf sqrt srand stat substr symlink
syscall sysopen sysread system syswrite tell
telldir time times truncate uc ucfirst
umask unlink unpack utime values vec
wait waitpid wantarray warn write x xor
);
use constant BUILTIN_CORE_FNS => map { 'CORE::' . $_ } BUILTIN_FNS;
=head2 Subroutines
=head3 complete_token
Return an list of string, I<$complete_ary>, which start out with
String I<$prefix>.
=cut
sub complete_token($$)
{
my ($complete_ary, $prefix) = @_;
my @result = ();
for my $cmd (@$complete_ary) {
if (0 == index($cmd, $prefix)) {
push @result, $cmd ;
}
}
sort @result;
}
sub complete_token_with_next($$;$)
{
my ($complete_hash, $prefix, $cmd_prefix) = @_;
$cmd_prefix ='' if scalar(@_) < 3;
my $cmd_prefix_len = length($cmd_prefix);
my @result = ();
( run in 1.995 second using v1.01-cache-2.11-cpan-5b529ec07f3 )