package Excel::Template::Base; use strict; use Excel::Template::Factory; sub new { my $class = shift; push @_, %{shift @_} while ref $_[0] eq 'HASH'; (@_ % 2) and die "$class->new() called with odd number of option parameters\n"; my %x = @_; # Do not use a hashref-slice here because of the uppercase'ing my $self = {}; $self->{uc $_} = $x{$_} for keys %x; bless $self, $class; } *isa = *isa = \&Excel::Template::Factory::isa; *is_embedded = *is_embedded = \&Excel::Template::Factory::is_embedded; #sub calculate { ($_[1])->get(@_[0,2]) } #{ # my $self = shift; # my ($context, $attr) = @_; # # return $context->get($self, $attr); #} sub enter_scope { ($_[1])->enter_scope($_[0]) } #{ # my $self = shift; # my ($context) = @_; # # return $context->enter_scope($self); #} sub exit_scope { ($_[1])->exit_scope($_[0], $_[2]) } #{ # my $self = shift; # my ($context, $no_delta) = @_; # # return $context->exit_scope($self, $no_delta); #} sub deltas { # my $self = shift; # my ($context) = @_; return {}; } # Everyone seems to have their own versions. # Maybe, it's part of the API to require that you have the right one of these # defined? #sub resolve #{ # my $self = shift; # my ($context) = @_; # # ''; #} # #sub render #{ # my $self = shift; # my ($context) = @_; # # 1; #} 1; __END__ =head1 NAME Excel::Template::Base - Excel::Template::Base =head1 PURPOSE Base class for all Excel::Template classes =head1 NODE NAME None =head1 INHERITANCE None =head1 ATTRIBUTES None =head1 CHILDREN None =head1 EFFECTS None =head1 DEPENDENCIES None =head1 METHODS =head2 calculate This is a wrapper around Excel::Template::Context->get() =head2 isa This is a wrapper around Excel::Template::Factory->isa() =head2 is_embedded This is a wrapper around Excel::Template::Factory->is_embedded() =head1 AUTHOR Rob Kinyon (rob.kinyon@gmail.com) =head1 SEE ALSO =cut