SWISH::Prog::Class - base class for SWISH::Prog classes


SWISH-Prog documentation Contained in the SWISH-Prog distribution.

Index


Code Index:

NAME

Top

SWISH::Prog::Class - base class for SWISH::Prog classes

SYNOPSIS

Top

 package My::Class;
 use base qw( SWISH::Prog::Class );
 1;

 # see METHODS for what you get for free

DESCRIPTION

Top

SWISH::Prog::Class is a subclass of Class::Accessor::Fast. It's a base class useful for making simple accessor/mutator methods. SWISH::Prog::Class implements some additional methods and features useful for SWISH::Prog projects.

METHODS

Top

new( params )

Constructor. Returns a new object. May take a hash or hashref as params.

init

Override init() in your subclass to perform object maintenance at construction time. Called by new().

debug

Get/set the debug level. Default is 0.

warnings

Get/set the warnings level. Default is 0.

verbose

Get/set flags affecting the verbosity of the program.

elapsed

Returns the elapsed time in seconds since object was created.

dump( [data] )

Returns $self (and data if present) via Data::Dump::dump. Useful for peering inside an object or other scalar.

verify_isa_swish_prog_config([config])

Returns a SWISH::Prog::Config object based on config.

config may be a readable file name or a SWISH::Prog::Config object.

Will croak if config is neither of the above.

AUTHOR

Top

Peter Karman, <perl@peknet.com>

BUGS

Top

Please report any bugs or feature requests to bug-swish-prog at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=SWISH-Prog. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

Top

You can find documentation for this module with the perldoc command.

    perldoc SWISH::Prog




You can also look for information at:

* Mailing list

http://lists.swish-e.org/listinfo/users

* RT: CPAN's request tracker

http://rt.cpan.org/NoAuth/Bugs.html?Dist=SWISH-Prog

* AnnoCPAN: Annotated CPAN documentation

http://annocpan.org/dist/SWISH-Prog

* CPAN Ratings

http://cpanratings.perl.org/d/SWISH-Prog

* Search CPAN

http://search.cpan.org/dist/SWISH-Prog/

COPYRIGHT AND LICENSE

Top

SEE ALSO

Top

http://swish-e.org/


SWISH-Prog documentation Contained in the SWISH-Prog distribution.
package SWISH::Prog::Class;
use strict;
use warnings;
use base qw( Rose::ObjectX::CAF );
use Carp;
use Data::Dump qw( dump );
use SWISH::Prog::Config;
use Scalar::Util qw( blessed );

our $VERSION = '0.51';

__PACKAGE__->mk_accessors(qw( debug verbose warnings ));

sub init {
    my $self = shift;
    $self->SUPER::init(@_);
    $self->{debug} ||= $ENV{PERL_DEBUG} || 0;
    $self->{verbose} ||= $ENV{PERL_VERBOSE} || 0;
    $self->{_start} = time();
    return $self;
}

sub elapsed {
    return time() - shift->{_start};
}

sub verify_isa_swish_prog_config {
    my $self    = shift;
    my $config2 = shift;

    #carp "verify_isa_config: $config2";

    my $config2_object;
    if ( !$config2 ) {
        $config2_object = SWISH::Prog::Config->new();
    }
    elsif ( !blessed($config2) && -r $config2 ) {
        $config2_object = SWISH::Prog::Config->new($config2);
    }
    elsif ( blessed($config2) ) {
        if ( !$config2->isa('SWISH::Prog::Config') ) {
            croak
                "config object does not inherit from SWISH::Prog::Config: $config2";
        }
        else {
            $config2_object = $config2;
        }
    }
    else {
        croak "$config2 is neither an object nor a readable file";
    }

    return $config2_object;
}

1;

__END__