Apache2::WebApp::Helper - Base class for command-line script functionality


Apache2-WebApp-Toolkit documentation Contained in the Apache2-WebApp-Toolkit distribution.

Index


Code Index:

NAME

Top

Apache2::WebApp::Helper - Base class for command-line script functionality

SYNOPSIS

Top

  use Apache2::WebApp::Helper;

  my $obj = Apache2::WebApp::Helper->new;

DESCRIPTION

Top

Base class module that implements a constructor and provides helper script functionality for writing template output to a file.

OBJECT METHODS

Top

set_vars

Set the template object attributes.

  $obj->set_vars(\%vars);

write_file

Write the template output to a file.

  $obj->write_file($file, $output);

get_source_path

Returns the path to the /webapp-toolkit source directory.

  $self->get_source_path();

error

Print errors/exceptions to STDOUT and exit.

  $self->error($mesg);

EXAMPLES

Top

Template to file processing

SCRIPT

  use Apache2::WebApp::Helper;

  my $obj = Apache2::WebApp::Helper->new;

  $obj->set_vars(
      {
          foo => 'bar',
          baz => qw( bucket1 bucket2 bucket3 ),
          qux => qw{
                     key1 => 'value1',
                     key2 => 'value2',
                     ...
                  },
          ...
       }
    );

  # program continues...

  $obj->write_file('/path/to/infile.tt','/path/to/outfile.txt');

TEMPLATE

  [% foo %]

  [% FOREACH bucket = bar %]
      [% bucket %]
  [% END %]

  [% qux.key1 %]
  [% qux.key2 %]

SEE ALSO

Top

Apache2::WebApp, Apache2::WebApp::AppConfig, Apache2::WebApp::Template

AUTHOR

Top

Marc S. Brooks, <mbrooks@cpan.org> http://mbrooks.info

COPYRIGHT

Top


Apache2-WebApp-Toolkit documentation Contained in the Apache2-WebApp-Toolkit distribution.

#----------------------------------------------------------------------------+
#
#  Apache2::WebApp::Helper - Base class for command-line script functionality
#
#  DESCRIPTION
#  Base class module that implements a constructor and provides helper
#  script functionality for writing template output to a file.
#
#  AUTHOR
#  Marc S. Brooks <mbrooks@cpan.org>
#
#  This module is free software; you can redistribute it and/or
#  modify it under the same terms as Perl itself.
#
#----------------------------------------------------------------------------+

package Apache2::WebApp::Helper;

use strict;
use warnings;
use base 'Apache2::WebApp::Base';
use Params::Validate qw( :all );

use Apache2::WebApp::AppConfig;
use Apache2::WebApp::Template;

our $VERSION = 0.06;
our $AUTOLOAD;

#~~~~~~~~~~~~~~~~~~~~~~~~~~[  OBJECT METHODS  ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

#----------------------------------------------------------------------------+
# new()
#
# Constructor method used to return new helper object.

sub new {
    my $class = shift;
    return bless({
        CONFIG   => Apache2::WebApp::AppConfig->new,
        TEMPLATE => Apache2::WebApp::Template->new,
        VARS     => {},
    }, $class);
}

#----------------------------------------------------------------------------+
# set_vars(\%vars)
#
# Set the template object attributes.

sub set_vars {
    my ($self, $vars)
      = validate_pos(@_,
          { type => OBJECT  },
          { type => HASHREF }
      );

    @{ $self->{VARS} }{keys %$vars} = values %$vars;
}

#----------------------------------------------------------------------------+
# write_file( $file, $output )
#
# Write the template output to a file.

sub write_file {
    my ($self, $file, $output)
      = validate_pos(@_,
          { type => OBJECT },
          { type => SCALAR },
          { type => SCALAR }
      );

    $self->{TEMPLATE}->process($file, $self->{VARS}, $output)
      or $self->error(
          "@{[ $self->{TEMPLATE}->error() ]} at $file"
        );

    print "created file $output\n" if ( $self->{VERBOSE} );
}

#----------------------------------------------------------------------------+
# get_source_path()
#
# Returns the path to the /webapp-toolkit source directory.

sub get_source_path {
    my $self
      = validate_pos(@_,
          { type => OBJECT }
      );

    my ($package, $filename, $line) = caller;
    $filename =~ s/^(.*)\/lib\/.*$/$1/;
    return $filename . '/share/webapp-toolkit';
}

#----------------------------------------------------------------------------+
# error($mesg)
#
# Print errors/exceptions to STDOUT and exit.

sub error {
    my ($self, $mesg)
      = validate_pos(@_,
          { type => OBJECT },
          { type => SCALAR }
      );

    print "$mesg\n";
    exit;
}

#----------------------------------------------------------------------------+
# AUTOLOAD()
#
# Provides pseudo-methods for read-only access to various internal methods.

sub AUTOLOAD {
    my $self = shift;
    my $method;
    ($method = $AUTOLOAD) =~ s/.*:://;
    return if ($method eq 'DESTROY');
    return $self->{ uc($method) };
}

1;

__END__