NAME

Object::Meta::Plugin::ExportList - an implementation of a very simple, string only export list.

SYNOPSIS

# the proper way

my $plugin = GoodPlugin->new();
$host->plug($plugin);

package GoodPlugin;

# ...

sub exports {
	qw/some methods/;
}

sub init {
	my $self = shift;
	return Object::Meta::Plugin::ExportList->new($self};
}

# or if you prefer.... *drum roll*
# the naughty way

my $plugin = BadPlugin->new();	# doesn't need to be a plugin per se, since
								# it's not verified by plug(). All it needs
								# is to have a working can(). the export
								# list is responsible for the rest.
								# in short, this way init() needn't be defined.

my $export = Object::Meta::Plugin::ExportList->new($plugin, qw/foo bar/);

$host->register($export);

DESCRIPTION

An export list is an object a plugin hands over to a host, stating what it is going to give it. This is a very basic implementation, providing only the bare minimum methods needed to register a plugin. Unregistering one requires even less.

METHODS

new PLUGIN [ METHODS ... ]

Creates a new export list object. When passed only a plugin, and no method names as additional arguments,

plugin

Returns the reference to the plugin object it represents.

exists METHOD

Returns truth if the method stated is exported.

list METHOD

Returns a list of exported method names.

merge EXPORTLIST

Performs an OR with the methods of the argued export list.

unmerge EXPORTLIST

Performs an AND of the COMPLEMENT of the argued export list.

CAVEATS

  • Relies on the plugin implementation to provide a non-mandatory extension - the exports method. This method is available in all the Object::Meta::Plugin::Useful variants, and since Object::Meta::Plugin is not usable on it's own this is probably ok.

BUGS

Not that I know of, for the while being at least.

COPYRIGHT & LICENSE

Copyright 2003 Yuval Kogman. All rights reserved.
This program is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.

AUTHOR

Yuval Kogman <nothingmuch@woobling.org>

SEE ALSO

Object::Meta::Plugin, Object::Meta::Plugin::Useful, Object::Meta::Plugin::Host