[Templates-cvs] cvs commit: TT3/lib/Template Factory.pm
cvs@template-toolkit.org
cvs@template-toolkit.org
Sun, 12 Dec 2004 10:27:39 +0000
cvs 04/12/12 10:27:38
Modified: lib/Template Factory.pm
Log:
* added default option and default() method
Revision Changes Path
1.6 +45 -4 TT3/lib/Template/Factory.pm
Index: Factory.pm
===================================================================
RCS file: /template-toolkit/TT3/lib/Template/Factory.pm,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Factory.pm 2004/12/11 13:59:51 1.5
+++ Factory.pm 2004/12/12 10:27:38 1.6
@@ -18,7 +18,7 @@
# modify it under the same terms as Perl itself.
#
# REVISION
-# $Id: Factory.pm,v 1.5 2004/12/11 13:59:51 abw Exp $
+# $Id: Factory.pm,v 1.6 2004/12/12 10:27:38 abw Exp $
#
#========================================================================
@@ -30,7 +30,7 @@
use Template::Base;
use base qw( Template::Base );
-our $VERSION = sprintf("%d.%02d", q$Revision: 1.5 $ =~ /(\d+)\.(\d+)/);
+our $VERSION = sprintf("%d.%02d", q$Revision: 1.6 $ =~ /(\d+)\.(\d+)/);
our $DEBUG = 0 unless defined $DEBUG;
our $ERROR = '';
our $THROW = 'factory'; # name used for throwing errors
@@ -38,7 +38,8 @@
our $UTILS = 'Template::Utils';
our $MODULES = { } unless defined $MODULES;
our $LOADED = { } unless defined $LOADED;
-our $PATH = [ ];
+our $PATH = [ ] unless defined $PATH;
+our $DEFAULT = '' unless defined $DEFAULT;
#------------------------------------------------------------------------
@@ -78,6 +79,12 @@
$self->debug("config: ", $self->dump_hash($config), "\n");
}
+ # default option can be set to provide default module name
+ my $default = $config->{ default }
+ || $self->pkgvar( DEFAULT => $DEFAULT );
+
+ $self->default($default) if $default;
+
# extract any $config items into separate hash arrays, based on
# the keys in $modules
$self->{ config } = $UTILS->hash_extract($config, [ keys %$modules ]);
@@ -103,6 +110,37 @@
#------------------------------------------------------------------------
+# default()
+# default($name)
+#
+# Get or set the default module.
+#------------------------------------------------------------------------
+
+sub default {
+ my $self = shift;
+
+ if (@_) {
+ my $name = shift;
+ my $module;
+
+ # check it's a valid module name
+ return $self->error("default not found in $self->{ name }: $name")
+ unless ($module = $self->{ modules }->{ $name });
+ $self->{ default } = $name;
+ return $module
+ }
+ else {
+ # return current default or decline when called without args
+ my $default = ref $self
+ ? $self->{ default } # object method
+ : $self->pkgvar( DEFAULT => $DEFAULT ); # class method
+ return $default
+ || $self->decline("no default for $self->{ name }");
+ }
+}
+
+
+#------------------------------------------------------------------------
# module($name)
#
# Returns the name of the module associated with $name, loading it if
@@ -112,6 +150,9 @@
sub module {
my ($self, $name) = @_;
+ $name ||= $self->{ default }
+ || return $self->error("no name or default defined for $self->{ name }");
+
$self->debug("module($name)\n") if $DEBUG;
my $modules = $self->modules() || return;
@@ -461,7 +502,7 @@
=head1 VERSION
-$Revision: 1.5 $
+$Revision: 1.6 $
=head1 COPYRIGHT