Acme-PPIx-MetaSyntactic

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

NAME
    Acme::PPIx::MetaSyntactic - rename functions and variables in a
    PPI::Document using Acme::MetaSyntactic

SYNOPSIS
     my $acme = "Acme::PPIx::MetaSyntactic"->new(document => \<<'END');
     use v5.010;
     use constant PLACE => "World";
 
     sub join_spaces {
        return join " ", @_;
     }
 
     my @greetings = qw(Hello);
 
     say join_spaces($greetings[0], PLACE);
     END
 
     say $acme->document;

    Example output:

     use v5.010;
     use constant VULTURE => "World";
 
     sub fraud {
        return join " ", @_;
     }
 
     my @gang_of_thieves = qw(Hello);
 
     say fraud($gang_of_thieves[0], VULTURE);

DESCRIPTION
    This module uses PPI to parse some Perl source code, find all the
    variables and function names defined in it, and reassign them random names
    using Acme::MetaSyntactic.

  Constructor
    This module is object-oriented, though there's really very little reason
    for it to be.

    `new(%attributes)`
        Moose-style constructor.

  Attributes
    All attributes are read-only.

    `document`
        The PPI::Document that will be munged.

        Can be coerced from a `Str` (filename), `ScalarRef[Str]` (string of
        Perl source), `ArrayRef[Str]` (lines of Perl source) or `FileHandle`.

        Required.

        Once the `document` attribute has been set, a trigger automatically
        runs the relabelling.

    `theme`
        The Acme::MetaSyntactic object that will be used to obtain new names.
        If your source code is more than a couple of lines; choose one that
        provides a large selection of names.

        Can be coerced from `Str` (theme name).

        Defaults to the "haddock" theme.

    `local_subs`
        HashRef where the keys are the names of subs which are considered
        locally defined (i.e. not Perl built-ins, and not imported) and thus
        available for relabelling. Values are expected to all be "1".

        Can be coerced from `ArrayRef[Str]`.

        Defaults to a list built by scanning the `document` with PPI.

    `names`
        HashRef mapping old names to new names. This will be populated by the
        relabelling process, but you may supply some initial values.

        Defaults to empty hashref.

    `already_used`
        HashRef keeping track of names already used in remapping, to avoid
        renaming two variables the same thing.

        Defaults to a hashref populated from `names`.

        This attribute cannot be provided to the constructor.

BUGS
    Please report any bugs to
    <http://rt.cpan.org/Dist/Display.html?Queue=Acme-PPIx-MetaSyntactic>.

SEE ALSO
    PPI, Acme::MetaSyntactic, Acme::MetaSyntactic::RefactorCode.

AUTHOR
    Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE
    This software is copyright (c) 2013 by Toby Inkster.



( run in 0.563 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )