The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#####################################################################
# This program is not guaranteed to work at all, and by using this  #
# program you release the author of any and all liability.          #
#                                                                   #
# You may use this code as long as you are in compliance with the   #
# license (see the LICENSE file) and this notice, disclaimer and    #
# comment box remain intact and unchanged.                          #
#                                                                   #
# Package:     Term::RouterCLI                                      #
# Class:       Base                                                 #
# Description: Methods for building a router (Stanford) style CLI   #
#                                                                   #
# Written by:  Bret Jordan (jordan at open1x littledot org)         #
# Created:     2011-10-06                                           #
##################################################################### 
#
#
#
#
package Term::RouterCLI::Base;

use 5.8.8;
use strict;
use warnings;
use Term::RouterCLI::Config;
use Term::RouterCLI::Debugger;

our $VERSION     = '1.00';
$VERSION = eval $VERSION;



sub new
{
    my $pkg = shift;
    my $class = ref($pkg) || $pkg;  
    
    my $self = {};
    $self->{'_sName'}                 = $pkg;        # Lets set the object name so we can use it in debugging
    bless ($self, $class);

    # Lets send any passed in arguments to the _init method
    $self->_init(@_);
    return $self;
}

sub DESTROY
{
    my $self = shift;
    $self = {};
}

sub _initDebugger
{
    my $self = shift;
    # Create an object to the debugger class
    $self->{'_oDebugger'} = new Term::RouterCLI::Debugger();
}

sub _initConfig
{
    my $self = shift;
    # Create an object to the debugger class
    $self->{'_oConfig'} = new Term::RouterCLI::Config();
}


sub _ExpandTildes
{
    my $self = shift;
    my $parameter = shift;
    
    $parameter =~ s/^~([^\/]*)/$1?(getpwnam($1))[7]:$ENV{HOME}||$ENV{LOGDIR}||(getpwuid($>))[7]/e;
    return $parameter;
}


return 1;