Rechercher une page de manuel
Perl::Critic::Document.3pm
Langue: en
Version: 2008-03-08 (mandriva - 01/05/08)
Section: 3 (Bibliothèques de fonctions)
NAME
Perl::Critic::Document - Caching wrapper around a PPI::Document.SYNOPSIS
use PPI::Document; use Perl::Critic::Document; my $doc = PPI::Document->new('Foo.pm'); $doc = Perl::Critic::Document->new($doc); ## Then use the instance just like a PPI::Document
DESCRIPTION
Perl::Critic does a lot of iterations over the PPI document tree via the "PPI::Document::find()" method. To save some time, this class pre-caches a lot of the common "find()" calls in a single traversal. Then, on subsequent requests we return the cached data.This is implemented as a facade, where method calls are handed to the stored "PPI::Document" instance.
CAVEATS
This facade does not implement the overloaded operators from PPI::Document (that is, the "use overload ..." work). Therefore, users of this facade must not rely on that syntactic sugar. So, for example, instead of "my $source = "$doc";" you should write "my $source = $doc-"content();>Perhaps there is a CPAN module out there which implements a facade better than we do here?
METHODS
- $pkg->new($doc)
- Create a new instance referencing a PPI::Document instance.
- $self->ppi_document()
- Accessor for the wrapped PPI::Document instance. Note that altering this instance in any way can cause unpredictable failures in Perl::Critic's subsequent analysis because some caches may fall out of date.
- $self->find($wanted)
- $self->find_first($wanted)
- $self->find_any($wanted)
- If $wanted is a simple PPI class name, then the cache is employed. Otherwise we forward the call to the corresponding method of the "PPI::Document" instance.
- $self->filename()
- Returns the filename for the source code if applicable (PPI::Document::File) or "undef" otherwise (PPI::Document).
- $self->isa( $classname )
- To be compatible with other modules that expect to get a PPI::Document, the Perl::Critic::Document class masquerades as the PPI::Document class.
AUTHOR
Chris Dolan <cdolan@cpan.org>COPYRIGHT
Copyright (c) 2006-2008 Chris Dolan. All rights reserved.This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license can be found in the LICENSE file included with this module.
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre