[![Build Status](https://travis-ci.org/drforr/perl6-Perl6-Tidy.svg?branch=master)](https://travis-ci.org/drforr/perl6-Perl6-Tidy)

NAME
====

Perl6::Tidy - Tidy Perl 6 source code according to your guidelines

SYNOPSIS
========

    my $pt = Perl6::Tidy.new(
        :strip-comments( False ),
        :strip-pod( False ),
        :strip-documentation( False ), # Superset of documentation and pod

        :indent-style( 'k-n-r' ),

    :indent-with-spaces( False ) # Indent with k-n-r style, spaces optional.

    );
    my $tidied = $pt.tidy( Q:to[_END_] );
       code-goes-here();
       that you( $want-to, $parse );
    _END_
    say $tidied;

    Indents code to match simple tab style (mine in this case).

    Choices of tab style include:
        'tab' (aka 1-true-brace-style or k-n-r)
        'Allman'
        'GNU'
        'Whitesmiths'
        'Horstmann'
        'Pico'
        'Ratliff'
        'Lisp'

    # This *will* execute phasers such as BEGIN in your existing code.
    # This may constitute a security hole, at least until the author figures
    # out how to truly make the Perl 6 grammar standalone.

DESCRIPTION
===========

Uses [Perl6::Parser](Perl6::Parser) to parse your source into a Perl 6 data structure, then walks the data structure and prints it according to your format guidelines.

Indentation
===========

Just as a reminder, here are quasi-formal names for common indentation styles.

'tab' - "One True Brace Style", "K&R":

while (x == y) { something(); somethingelse(); }

Allman:

while (x == y) { something(); somethingelse(); }

GNU:

while (x == y) { something(); somethingelse(); }

Whitesmiths:

while (x == y) { something(); somethingelse(); }

Horstmann

while (x == y) { something(); somethingelse(); }

Pico

while (x == y) { something(); somethingelse(); }

Ratliff

while (x == y) { something(); somethingelse(); }

Lisp

while (x == y) { something(); somethingelse(); }

METHODS
=======

  * tidy( Str $source )

Tidy the source code according to the guidelines set up in the constructor.