package Lire::Config::PluginSpec; use strict; =pod =head1 NAME Lire::Config::PluginSpec - SelectSpec with variable properties. =head1 DESCRIPTION Lire::Config::TypeSpec that represents a configuration variable which defines additional properties based on the value which is currently selected. This can be used for extensible type like DlfConverter or OutputFormat. =cut use base qw/Lire::Config::SelectSpec/; use Lire::Config::Plugin; use Lire::Config::RecordSpec; use Carp; =pod =head2 new() Create a Lire::Config::SectionSpec object. =cut sub new { my $self = shift->SUPER::new( @_ ); $self->{'_no_properties_spec'} = new Lire::Config::RecordSpec( 'name' => $self->name() . "_no_properties" ); return $self; } sub instance_class { return 'Lire::Config::Plugin'; } =pod =head2 get_properties_spec( $option ) Returns the TypeSpec that specifies the properties of the $option. This method will return an empty RecordSpec when the plugin didn't define any properties. One can also use the has_properties() method to check if the Plugin defined configuration properties. =cut sub get_properties_spec { my ( $self, $option ) = @_; return $self->{'_no_properties_spec'} unless defined $option; my $name = $self->normalize( $option ); croak "no option '$option' in this specification" unless defined $name; $name .= '_properties'; my $spec = Lire::Config->config_spec(); return $spec->get( $name ) if $spec->has_component( $name ); return $self->{'_no_properties_spec'}; } 1; __END__ =pod =head1 VERSION $Id: PluginSpec.pm,v 1.6 2006/07/23 13:16:30 vanbaal Exp $ =head1 AUTHORS Francis J. Lacoste Wolfgang Sourdeau =head1 COPYRIGHT Copyright (C) 2002-2004 Stichting LogReport Foundation LogReport@LogReport.org This file is part of Lire. Lire is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program (see COPYING); if not, check with http://www.gnu.org/copyleft/gpl.html. =cut