Perl::Critic::Document man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

Perl::Critic::DocumentUser Contributed Perl DocumentaPerl::Critic::Document(3)

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(-source => $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?

INTERFACE SUPPORT
       This is considered to be a public class.	 Any changes to its interface
       will go through a deprecation cycle.

CONSTRUCTOR
       "new(-source => $source_code, '-filename-override' => $filename,
       '-program-extensions' => [program_extensions])"
	   Create a new instance referencing a PPI::Document instance.	The
	   $source_code can be the name of a file, a reference to a scalar
	   containing actual source code, or a PPI::Document or
	   PPI::Document::File.

	   In the event that $source_code is a reference to a scalar
	   containing actual source code or a PPI::Document, the resulting
	   Perl::Critic::Document will not have a filename.  This may cause
	   Perl::Critic::Document to incorrectly classify the source code as a
	   module or script.  To avoid this problem, you can optionally set
	   the "-filename-override" to force the Perl::Critic::Document to
	   have a particular $filename.	 Do not use this option if
	   $source_code is already the name of a file, or is a reference to a
	   PPI::Document::File.

	   The '-program-extensions' argument is optional, and is a reference
	   to a list of strings and/or regular expressions. The strings will
	   be made into regular expressions matching the end of a file name,
	   and any document whose file name matches one of the regular
	   expressions will be considered a program.

	   If -program-extensions is not specified, or if it does not
	   determine the document type, the document will be considered to be
	   a program if the source has a shebang line or its file name (if
	   any) matches "m/ [.] PL \z /smx".

METHODS
       "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.

       "find($wanted)"
       "find_first($wanted)"
       "find_any($wanted)"
	   Caching wrappers around the PPI methods.  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.

       "namespaces()"
	   Returns a list of the namespaces (package names) in the document.

       "subdocuments_for_namespace($namespace)"
	   Returns a list of sub-documents containing the elements in the
	   given namespace.  For example, given that the current document is
	   for the source

	       foo();
	       package Foo;
	       package Bar;
	       package Foo;

	   this method will return two Perl::Critic::Documents for a parameter
	   of "Foo".  For more, see "split_ppi_node_by_namespace" in
	   PPIx::Utilities::Node.

       "ppix_regexp_from_element($element)"
	   Caching wrapper around "PPIx::Regexp->new($element)".  If $element
	   is a "PPI::Element" the cache is employed, otherwise it just
	   returns the results of "PPIx::Regexp->new()".  In either case, it
	   returns "undef" unless the argument is something that PPIx::Regexp
	   actually understands.

       "filename()"
	   Returns the filename for the source code if applicable
	   (PPI::Document::File) or "undef" otherwise (PPI::Document).

       "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.

       "highest_explicit_perl_version()"
	   Returns a version object for the highest Perl version requirement
	   declared in the document via a "use" or "require" statement.
	   Returns nothing if there is no version statement.

       "uses_module($module_or_pragma_name)"
	   Answers whether there is a "use", "require", or "no" of the given
	   name in this document.  Note that there is no differentiation of
	   modules vs. pragmata here.

       "process_annotations()"
	   Causes this Document to scan itself and mark which lines & policies
	   are disabled by the "## no critic" annotations.

       "line_is_disabled_for_policy($line, $policy_object)"
	   Returns true if the given $policy_object or $policy_name has been
	   disabled for at $line in this Document.  Otherwise, returns false.

       "add_annotation( $annotation )"
	   Adds an $annotation object to this Document.

       "annotations()"
	   Returns a list containing all the Perl::Critic::Annotations that
	   were found in this Document.

       "add_suppressed_violation($violation)"
	   Informs this Document that a $violation was found but not reported
	   because it fell on a line that had been suppressed by a "## no
	   critic" annotation. Returns $self.

       "suppressed_violations()"
	   Returns a list of references to all the Perl::Critic::Violations
	   that were found in this Document but were suppressed.

       "is_program()"
	   Returns whether this document is considered to be a program.

       "is_module()"
	   Returns whether this document is considered to be a Perl module.

AUTHOR
       Chris Dolan <cdolan@cpan.org>

COPYRIGHT
       Copyright (c) 2006-2011 Chris Dolan.

       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.

perl v5.14.1			  2011-07-22	     Perl::Critic::Document(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net