package Kwiki::Registry; use Spoon::Registry '-Base'; sub add { my ($key, $value) = @_; return super unless $key eq 'preference' and @_ == 2; super($key, $value->id, object => $value); } sub not_a_plugin { my $class_name = shift; die <validate_prerequisite or return; return 1; } sub validate_prerequisite { for my $hashlet (@{$self->lookup->{plugins}}) { my $class_id = $hashlet->{id}; my $prereqs = $self->lookup->{add_order}{$class_id}{prerequisite} or next; for my $prereq (@$prereqs) { $self->missing_prerequisite($class_id, $prereq) unless defined $self->lookup->{classes}{$prereq}; } } return 1; } sub missing_prerequisite { my ($class_id, $prereq) = @_; my $class_name = $self->lookup->{classes}{$class_id}; die "Missing prerequisite plugin '$prereq' for $class_name\n"; } __DATA__ =head1 NAME Kwiki::Registry - Kwiki Registry Base Class =head1 SYNOPSIS =head1 DESCRIPTION =head1 AUTHOR Brian Ingerson =head1 COPYRIGHT Copyright (c) 2004. Brian Ingerson. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html =cut