/usr/local/CPAN/hub-standard/Hub/Parse/Template.pm


package Hub::Parse::Template;
use strict;

use Hub qw/:lib/;

push our @ISA, qw/Hub::Base::Object/;

our $VERSION        = '4.00043';
our @EXPORT         = qw//;
our @EXPORT_OK      = qw//;

# ------------------------------------------------------------------------------
# refresh - Reset to initial state (persistent object method)
#
# refresh FILESPEC
# ------------------------------------------------------------------------------

sub refresh {
    my ($self,$opts) = Hub::objopts( \@_ );
    my $spec = shift;
    $self->{'parser'} = mkinst( 'FileParser', $spec );
    Hub::merge( $self->{'public:'}, @_ ) if @_;
}#refresh

# ------------------------------------------------------------------------------
# comptv - Compose template value
#
# comptv ADDRESS, FILESPEC, [VALUE]
# ------------------------------------------------------------------------------

sub comptv {
    my ($self,$opts) = Hub::objopts( \@_ );
    my ($k,$template) = (shift,shift);
    map {
        my $template = Hub::mkinst( 'Template', $template, $_ );
        Hub::happendv( $self->{'public:'}, $k, $template, '-asa=1' );
    } @_;
}#comptv

# ------------------------------------------------------------------------------
# compfv - Compose formatted value
#
# compfv ADDRESS, FORMAT, [VALUE]
# ------------------------------------------------------------------------------

sub compfv {
    my ($self,$opts) = Hub::objopts( \@_ );
    my ($k,$format) = (shift,shift);
    map {
        my $template = {
            'text'  => $format,
            'value' => $_,
        };
        Hub::happendv( $self->{'public:'}, $k, $template, '-asa=1' );
    } @_;
}#compfv

# ------------------------------------------------------------------------------
# compdv - Compose data value
#
# compdv ADDRESS, VALUE...
# ------------------------------------------------------------------------------

sub compdv {
    my ($self,$opts) = Hub::objopts( \@_ );
    my $k = shift;
    map { Hub::happendv( $self->{'public:'}, $k, $_, '-asa=1' ) } @_;
}#compdv

# ------------------------------------------------------------------------------
# populate - Return a populated version of this template.
#
# populate [\HASH]...
# ------------------------------------------------------------------------------

sub populate {
    my ($self,$opts) = Hub::objopts( \@_ );
    return $self->{'parser'}->populate(
        $self->{'public:'}, @_, -opts => $opts );
}#populate

# ------------------------------------------------------------------------------
1;