VERSION

version 0.07

SYNOPSIS

    use Any::Template::ProcessDir;

    # Process templates and generate result files in a single directory
    #
    my $pd = Any::Template::ProcessDir->new(
        dir => '/path/to/dir',
        process_text => sub {
            my $template = Any::Template->new( Backend => '...', String => $_[0] );
            $template->process({ ... });
        }
    );
    $pd->process_dir();

    # Process templates and generate result files to a separate directory
    #
    my $pd = Any::Template::ProcessDir->new(
        source_dir => '/path/to/source/dir',
        dest_dir   => '/path/to/dest/dir',
        process_file => sub {
            my $file = $_[0];
            # do something with $file, return content
        }
    );
    $pd->process_dir();

DESCRIPTION

Recursively processes a directory of templates, generating a set of result files in the same directory or in a parallel directory. Each file in the source directory may be template-processed, copied, or ignored depending on its pathname.

CONSTRUCTOR

Specifying directory/directories

  • If you want to generate the result files in the same directory as the templates, just specify dir. my $pd = Any::Template::ProcessDir->new( dir => '/path/to/dir', ... );

  • If you want to generate the result files in a separate directory from the templates, specify source_dir and dest_dir. my $pd = Any::Template::ProcessDir->new( source_dir => '/path/to/source/dir', source_dir => '/path/to/dest/dir', ... );

Specifying how to process templates

process_file

A code reference that takes the full template filename and the \*(C`Any::Template::ProcessDir\*(C' object as arguments, and returns the result string. This can use Any::Template or another method altogether. By default it calls \*(L"process_text\*(R" on the contents of the file.

process_text

A code reference that takes the template text and the \*(C`Any::Template::ProcessDir\*(C' object as arguments, and returns the result string. This can use Any::Template or another method altogether.

Optional parameters

dir_create_mode

Permissions mode to use when creating destination directories. Defaults to 0775. No effect if you are using a single directory.

file_create_mode

Permissions mode to use when creating destination files. Defaults to 0444 (read-only), so that destination files are not accidentally edited.

ignore_files

Coderef which takes a full pathname and returns true if the file should be ignored. By default, all files will be considered.

readme_filename

Name of a \s-1README\s0 file to generate in the destination directory - defaults to \*(L"\s-1README\s0\*(R". No file will be generated if you pass undef or if you are using a single directory.

template_file_suffix

Suffix of template files in source directory. Defaults to \*(L".src\*(R". This will be removed from the destination file name. Any file in the source directory that does not have this suffix (or \*(L"ignore_file_suffix\*(R") will simply be copied to the destination.

METHODS

process_dir

Process the directory. If using multiple directories, the destination directory will be removed completely and recreated, to eliminate any old files from previous processing.

RELATED TO Any::Template::ProcessDir…

Any::Template

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Jonathan Swartz.

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