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.

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

DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.