manpagez: man pages & more
man Perl::Critic::Utils::PPI(3)
Home | html | info | man
Perl::Critic::Utils::PPI(3)



NAME

       Perl::Critic::Utils::PPI - Utility functions for dealing with PPI
       objects.


DESCRIPTION

       Provides classification of PPI::Elements.


INTERFACE SUPPORT

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


IMPORTABLE SUBS

       "is_ppi_expression_or_generic_statement( $element )"
           Answers whether the parameter is an expression or an
           undifferentiated statement.  I.e. the parameter either is a
           PPI::Statement::Expression or the class of the parameter is
           PPI::Statement and not one of its subclasses other than
           "Expression".

       "is_ppi_generic_statement( $element )"
           Answers whether the parameter is an undifferentiated statement,
           i.e.  the parameter is a PPI::Statement but not one of its
           subclasses.

       "is_ppi_statement_subclass( $element )"
           Answers whether the parameter is a specialized statement, i.e. the
           parameter is a PPI::Statement but the class of the parameter is not
           PPI::Statement.

       "is_ppi_simple_statement( $element )"
           Answers whether the parameter represents a simple statement, i.e.
           whether the parameter is a PPI::Statement, PPI::Statement::Break,
           PPI::Statement::Include, PPI::Statement::Null,
           PPI::Statement::Package, or PPI::Statement::Variable.

       "is_ppi_constant_element( $element )"
           Answers whether the parameter represents a constant value, i.e.
           whether the parameter is a PPI::Token::Number,
           PPI::Token::Quote::Literal, PPI::Token::Quote::Single, or
           PPI::Token::QuoteLike::Words, or is a PPI::Token::Quote::Double or
           PPI::Token::Quote::Interpolate which does not in fact contain any
           interpolated variables.

           This subroutine does not interpret any form of here document as a
           constant value, and may not until PPI::Token::HereDoc acquires the
           relevant portions of the PPI::Token::Quote interface.

           This subroutine also does not interpret entities created by the
           Readonly module or the constant pragma as constants, because the
           infrastructure to detect these appears not to be present, and the
           author of this subroutine (not Mr. Shank or Mr. Thalhammer) lacks
           the knowledge/expertise/gumption to put it in place.

       "is_subroutine_declaration( $element )"
           Is the parameter a subroutine declaration, named or not?

       "is_in_subroutine( $element )"
           Is the parameter a subroutine or inside one?

       "get_constant_name_element_from_declaring_statement($statement)"
           This subroutine is deprecated. You should use
           "get_constant_name_elements_from_declaring_statement()" in
           PPIx::Utilities::Statement instead.

           Given a PPI::Statement, if the statement is a "use constant" or
           Readonly declaration statement, return the name of the thing being
           defined.

           Given

               use constant 1.16 FOO => 'bar';

           this will return "FOO".  Similarly, given

               Readonly::Hash my %FOO => ( bar => 'baz' );

           this will return "%FOO".

           Caveat: in the case where multiple constants are declared using the
           same "use constant" statement (e.g. "use constant { FOO => 1, BAR
           => 2 };", this subroutine will return the declaring
           PPI::Structure::Constructor. In the case of "use constant 1.16 {
           FOO => 1, BAR => 2 };" it may return a PPI::Structure::Block
           instead of a PPI::Structure::Constructor, due to a parse error in
           PPI.

       "get_next_element_in_same_simple_statement( $element )"
           Given a PPI::Element, this subroutine returns the next element in
           the same simple statement as defined by is_ppi_simple_statement().
           If no next element can be found, this subroutine simply returns.

           If the $element is undefined or unblessed, we simply return.

           If the $element satisfies "is_ppi_simple_statement()", we return,
           unless it has a parent which is a PPI::Structure::List.

           If the $element is the last significant element in its PPI::Node,
           we replace it with its parent and iterate again.

           Otherwise, we return "$element->snext_sibling()".

       "get_previous_module_used_on_same_line( $element )"
           Given a PPI::Element, returns the PPI::Element representing the
           name of the module included by the previous "use" or "require" on
           the same line as the $element. If none is found, simply returns.

           For example, with the line

               use version; our $VERSION = ...;

           given the PPI::Token::Symbol instance for $VERSION, this will
           return "version".

           If the given element is in a "use" or <require>, the return is from
           the previous "use" or "require" on the line, if any.


AUTHOR

       Elliot Shank <perl@galumph.com>


COPYRIGHT

       Copyright (c) 2007-2011 Elliot Shank.

       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.28.2                      2019-05-24       Perl::Critic::Utils::PPI(3)

perl-critic 1.134.0 - Generated Fri Jun 7 11:24:22 CDT 2019
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.