Moritz Onken > Devel-IntelliPerl-0.02 > Devel::IntelliPerl

Download:
Devel-IntelliPerl-0.02.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
Report a bug
Module Version: 0.02   Source   Latest Release: Devel-IntelliPerl-0.04

NAME ^

Devel::IntelliPerl - Auto-completion for Perl

SYNOPSIS ^

    use Devel::IntelliPerl;

    my $source = <<'SOURCE';
    package Foo;

    use Moose;

    has foobar => ( isa => 'Str', is => 'rw' );
    has foo => ( isa => 'Foo', is => 'rw' );

    sub bar {
        my ($self, $c) = @_;
        # $c isa Catalyst
        $self->foo->
    }

    1;
    SOURCE


    my $ip = Devel::IntelliPerl->new(source => $source, line_number => 9, column => 12);
    
    my @methods = $ip->methods;

@methods contains bar, foo, and foobar amongst others. Method completion for $c works as well. Using the comment # $c isa Catalyst you can specify the variable $c as an object of the Catalyst class. This comment can be located anywhere in the current file.

ATTRIBUTES ^

line_number (Int $line_number)

Required

Line number of the cursor. Starts at 1.

column (Int $column)

Required

Position of the cursor. Starts at 1.

source (Str $source)

Required

Source code.

filename

Optional

Store the filename of the current file. If this value is set @INC is extended by all lib directories found in any parent directory. This is useful if you want to have access to modules which are not in @INC but in your local lib folder. This method sets "inc".

This value is NOT used to retrive the source code! Use "source" instead.

inc (ArrayRef[Str] $inc)

Optional

All directories specified will be prepended to @INC.

METHODS ^

error (Str $error)

If an error occurs it is accessible via this method.

line (Str $line)

Sets or gets the current line.

keyword

This represents the current keyword.

Examples (_ stands for the cursor position):

  my $foo = MyClass->_ # keyword is MyClass
  my $foo->_           # keyword is $foo
  my $foo->bar->_      # keyword is $foo->bar

prefix

Part of a method which has been typed already.

Examples (_ stands for the cursor position):

  my $foo = MyClass->foo_ # keyword is MyClass, prefix is foo
  my $foo->bar_           # keyword is $foo,    prefix is bar

methods

Returns all methods which were found for "keyword" and "prefix".

trimmed_methods

Returns "methods" truncated from the beginning by the length of "prefix".

INTERNAL METHODS ^

guess_class (Str $keyword)

Given a keyword (e.g. $foo->bar->file) this method tries to find the class from which to load the methods.

handle_class

Loads the selected class.

handle_self

Loads the current class.

handle_method

This method tries to resove the class of the returned value of a given method. It supports Moose attributes as well as MooseX::Method::Signatures.

Example for an instrospectable class:

    package Signatures;

    use Moose;
    use Path::Class::File;
    use MooseX::Method::Signatures;
    use Moose::Util::TypeConstraints;
    
    has dir => ( isa => 'Path::Class::Dir', is => 'rw' );

    BEGIN { class_type 'PathClassFile', { class => 'Path::Class::File' }; }

    method file returns (PathClassFile) {
        return new Path::Class::File;
    }

    1;

Given this class, Devel::IntelliPerl provides the following features:

  my $sig = new Signatures;
  $sig->_        # will suggest "dir" and "file" amongst others
  $sig->file->_  # will suggest all methods from Path::Class::File

handle_variable

Tries to find the variable's class using regexes. Supported syntaxes:

  $variable = MyClass->new
  $variable = MyClass->new(...)
  $variable = new MyClass
  # $variable isa MyClass

inject_statement (Str $statement)

Injects $statement at the current position.

update_inc

Trigger called by "filename".

SCREENCASTS ^

http://www.screencast.com/t/H5DdRNbQVt

http://www.screencast.com/t/djkraaYgpx

TODO ^

Support for auto completion in the POD (e.g. L <Devel::IntelliPerl/[auto complete]>)

AUTHOR ^

Moritz Onken, <onken at netcubed.de>

BUGS ^

Please report any bugs or feature requests to bug-devel-intelliperl at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Devel-IntelliPerl. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT ^

You can find documentation for this module with the perldoc command.

    perldoc Devel::IntelliPerl

You can also look for information at:

COPYRIGHT & LICENSE ^

Copyright 2009 Moritz Onken, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.