| Data-Phrasebook documentation | Contained in the Data-Phrasebook distribution. |
Data::Phrasebook::Loader - Plugin Loader module
my $loader = Data::Phrasebook::Loader->new( class => 'Text' );
Data::Phrasebook::Loader acts as an autoloader for phrasebook plugins.
new takes one optional named argument: the class. It returns a new
instance to the class. Any further arguments to new are given to
the new method of the appropriate class.
If no class is specified the default class of 'Text' is used.
my $loader = Data::Phrasebook::Loader->new(); OR my $loader = Data::Phrasebook::Loader->new( class => 'Text' );
Data::Phrasebook::Loader::Text, Data::Phrasebook::Loader::YAML, Data::Phrasebook::Loader::Ini, Data::Phrasebook::Loader::XML, Data::Phrasebook::Loader::DBI.
Please see the README file.
Original author: Iain Campbell Truskett (16.07.1979 - 29.12.2003) Maintainer: Barbie <barbie@cpan.org> since January 2004. for Miss Barbell Productions <http://www.missbarbell.co.uk>.
Copyright (C) 2003 Iain Truskett. Copyright (C) 2004-2010 Barbie for Miss Barbell Productions. This module is free software; you can redistribute it and/or modify it under the Artistic Licence v2.
| Data-Phrasebook documentation | Contained in the Data-Phrasebook distribution. |
package Data::Phrasebook::Loader; use strict; use warnings FATAL => 'all'; use base qw( Data::Phrasebook::Debug ); use Carp qw( croak ); use Module::Pluggable search_path => ['Data::Phrasebook::Loader']; use vars qw($VERSION); $VERSION = '0.31';
my $DEFAULT_CLASS = 'Text'; sub new { my $self = shift; my %args = @_; my $class = delete $args{class} || 'Text'; if($self->debug) { $self->store(3,"$self->new IN"); $self->store(4,"$self->new class=[$class]"); } # in the event we have been subclassed $self->search_path( add => "$self" ); my $plugin; my @plugins = $self->plugins(); for(@plugins) { $plugin = $_ if($_ =~ /\b$class$/); } croak("no loader available of that name\n") unless($plugin); eval "CORE::require $plugin"; croak "Couldn't require $plugin : $@" if $@; $self->store(4,"$self->new plugin=[$plugin]") if($self->debug); return $plugin->new( %args ); } 1; __END__