The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Apache::Template;

use ExtUtils::MakeMaker;
use lib qw( lib );
use Apache::Template;
use Apache::ExtUtils qw( command_table );
use Apache::src ();


my @directives = (
    #-- parsing/style options --
    {   name         => 'TT2Tags',
        errmsg       => 'tag style or start and end tags for template directives',
        args_how     => 'TAKE12',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2PreChomp',
        errmsg       => 'flag to remove newline and whitespace before directives',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2PostChomp',
        errmsg       => 'flag to remove newline and whitespace after directives',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Trim',
        errmsg       => 'flag to trim whitespace surrounding template output',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2AnyCase',
        errmsg       => 'flag to allow directive keywords in any case',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Interpolate',
        errmsg       => 'flag to interpolate embedded variable references',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },

    #-- file/directory options --
    {   name         => 'TT2IncludePath',
        errmsg       => 'local path(s) containing templates',
        args_how     => 'ITERATE',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Absolute',
        errmsg       => 'flag to enable absolute filenames',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Relative',  
        errmsg       => 'flag to enable relative filenames',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Delimiter',
        errmsg       => 'alternative directory delimiter',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },

    #-- service template options --
    {   name         => 'TT2PreProcess',
        errmsg       => 'template(s) to process before each main template',
        args_how     => 'ITERATE',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2PostProcess',
        errmsg       => 'template(s) to process after each main template',
        args_how     => 'ITERATE',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Process',
        errmsg       => 'template(s) to process instead of each main template',
        args_how     => 'ITERATE',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Wrapper',
        errmsg       => 'template(s) to wrap around each main template',
        args_how     => 'ITERATE',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Default',
        errmsg       => 'default template to process when another template is not found',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Error',
        errmsg       => 'template to process when an uncaught error occurs',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Tolerant',
        errmsg       => 'flag to set error tolerance for providers',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },

    #-- variable options --
    {   name         => 'TT2Variable',
        errmsg       => 'define a template variable',
        args_how     => 'TAKE2',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Constant',
        errmsg       => 'define a constant variable',
        args_how     => 'TAKE2',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2ConstantsNamespace',
        errmsg       => 'define variable namespace for constants',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },

    #-- runtime template processing options --
    {   name         => 'TT2EvalPerl',
        errmsg       => 'flag to allow PERL blocks to be evaluated',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2LoadPerl',
        errmsg       => 'flag to allow regular Perl modules to be loaded as plugins',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Recursion',
        errmsg       => 'flag to enable recursion into templates',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },

    #-- plugin and filter options --
    {   name         => 'TT2PluginBase',
        errmsg       => 'packages in which to locate for plugins',
        args_how     => 'ITERATE',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },

    #-- caching options --
    {   name         => 'TT2AutoReset',
        errmsg       => 'flag to reset (clear) any BLOCK definitions before processing',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2CacheSize',
        errmsg       => 'integer limit to the number of compiled templates to cache in memory',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2CompileExt',
        errmsg       => 'filename extension for caching compiled templates back to disk',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2CompileDir',
        errmsg       => 'path to directory for caching compiled templates back to disk',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },

    #-- misc options --
    {   name         => 'TT2Debug',
        errmsg       => 'flag to enable debugging',
        args_how     => 'FLAG',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },

    # -- service options --
    {   name         => 'TT2Headers',
        errmsg       => 'list of keywords indicating HTTP headers to add',
        args_how     => 'ITERATE',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2Params',
        errmsg       => 'list of keywords indicating parameters to add as template variables',
        args_how     => 'ITERATE',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2ContentType',
        errmsg       => 'content type of generated response (default: text/html)',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
    {   name         => 'TT2ServiceModule',
        errmsg       => 'name of class which implements template service module',
        args_how     => 'TAKE1',
        req_override => 'RSRC_CONF | ACCESS_CONF',
    },
);

command_table(\@directives);
    
WriteMakefile(
    'NAME'         => 'Apache::Template',
    'VERSION_FROM' => 'lib/Apache/Template.pm',
    'PMLIBDIRS'    => [ 'lib' ],
    'INC'          => Apache::src->new->inc,
    'PREREQ_PM'    => { 
        Template             => 2.10,
        Digest::MD5          => 2.09,
        Apache::Request      => 0,
        Apache::ModuleConfig => 0 
    },
);