NAME
    Text::Outdent - Outdent chunks of text

SYNOPSIS
        my $foo = outdent($bar);

        my $baz = outdent_quote(q{
            this
                is
                a
            string
                that
                is
                indented
            with
                spaces
                or
                tab
        });

DESCRIPTION
    This module was created to make it easy to have large chunks of strings
    in the code. If you use a quote operator that spans over several lines
    or a "here-doc" and have an indention of the code you get leading
    whitespaces that you may or may not want. If you don't want them this
    module easily removes them.

    You can also use it for other texts that are indented.

EXPORTED FUNCTIONS
    No functions are exported by default. ":ALL" exports all.

    "outdent($str)"
        Removes the common leading whitespaces for each line. Currently
        lines with only whitespaces are ignored and left untouched; treated
        as blank lines if you like. No tab expansion is being performed; a
        tab is just a whitespace character.

        If the indention consists of both spaces and tabs then it's a good
        idea to expand the tabs first, see &expand_leading_tabs. If the mix
        of tabs and spaces is consistent, e.g. every line begins with
        "  \t ", then that is recognized as indention.

            # common leading whitespaces are removed.
            my $str = <<'_STR_';
                this
                    is
                    a
                string
                    that
                    is
                    indented
                with
                    spaces
                    or
                    tab
            _STR_

            print '* Indented: ', $str;
            print '* Outdented: ', outdent($str);

        outputs

            * Indented:
                this
                    is
                    a
                string
                    that
                    is
                    indented
                with
                    spaces
                    or
                    tab

            * Outdented:
            this
                is
                a
            string
                that
                is
                indented
            with
                spaces
                or
                tab

    "outdent_all($str)"
        Like &outdent except it doesn't treat "whitespace lines" as blank
        lines.

    "outdent_quote($str)"
        Like &outdent but with some twists to make it smooth to use a
        (possibly indented) quote operator spanning over several lines in
        your source. The arrows (that isn't part of the code) below point
        out the two issues this function takes care of.

            my $foo = q{       <--- newline and possible spaces
                foo
                    bar
                    baz
                zip
                    zap
            };                 <--- empty line with possible spaces

        First, all whitespaces uptil the first newline plus the newline
        itself are removed. This takes care of the first issue.

        Second, if the string ends with a newline followed by non-newline
        whitespaces the non-newline whitespaces are removed. This takes care
        of the second issue.

        These fixes serve to make the quote operator's semantics equivalent
        to a here-docs.

    "expand_leading_tabs($tabstop, $str)"
        Expands tabs that on a line only have whitespaces before them. Handy
        to have if you have a file with mixed tab/space indention.

AUTHOR
    Johan Lodin <lodin@cpan.org>

COPYRIGHT
    Copyright 2004-2005 Johan Lodin. All rights reserved.

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

SEE ALSO