### ### Copyright 2002-2003 University of Illinois Board of Trustees ### Copyright 2002-2003 Mark D. Roth ### All rights reserved. ### ### Config::Objective::List - list data type for Config::Objective ### ### Mark D. Roth ### Campus Information Technologies and Educational Services ### University of Illinois at Urbana-Champaign ### package Config::Objective::List; use strict; use Config::Objective::DataType; our @ISA = qw(Config::Objective::DataType); ############################################################################### ### default is add() method ############################################################################### sub default { my ($self, $value) = @_; $self->add($value); } ############################################################################### ### unset method ############################################################################### sub unset { my ($self) = @_; $self->{'value'} = []; return 1; } ############################################################################### ### set method ############################################################################### sub set { my ($self, $value) = @_; # print "==> List::set($value)\n"; $self->unset(); return $self->add($value); } ############################################################################### ### add method ############################################################################### sub add { my ($self, $value) = @_; $value = $self->_scalar_or_list($value); $self->{'value'} = [] if (!defined($self->{'value'})); push(@{$self->{'value'}}, @$value); return 1; } ############################################################################### ### add_top method ############################################################################### sub add_top { my ($self, $value) = @_; $value = $self->_scalar_or_list($value); $self->{'value'} = [] if (!defined($self->{'value'})); unshift(@{$self->{'value'}}, @$value); return 1; } ############################################################################### ### delete method ############################################################################### sub delete { my ($self, $value) = @_; my ($val); $value = $self->_scalar_or_list($value); $self->{'value'} = [] if (!defined($self->{'value'})); foreach $val (@$value) { $self->{'value'} = [ grep !/$val/, @{$self->{'value'}} ]; } return 1; } ############################################################################### ### cleanup and documentation ############################################################################### 1; __END__ =head1 NAME Config::Objective::List - list data type class for Config::Objective =head1 SYNOPSIS use Config::Objective; use Config::Objective::List; my $conf = Config::Objective->new('filename', { 'listobj' => Config::Objective::List->new() }); =head1 DESCRIPTION The B module provides a class that represents a list in an object so that it can be used with B. Its methods can be used to manipulate the encapsulated list from the config file. The B class is derived from the B class, but it defines/overrides the following methods: =over 4 =item add() Adds the supplied value to the end of the object's list. The value can be a scalar or a reference to a list, in which case the values in the referenced list are added to the object's list. =item unset() Sets the object's value to an empty list. =item set() The same as add(), except that the existing list is emptied by calling the unset() method before adding the new data. =item default() Calls the add() method. =item add_top() Same as add, but adds to the front of the list instead of the end. =item delete() Deletes elements from the list that match its argument. Matching is performed by using the argument as a regular expression. The argument can be a scalar or a reference to a list, in which case each item of the referenced list is used to check the values in the object's list. =back =head1 AUTHOR Mark D. Roth Eroth@uiuc.eduE =head1 SEE ALSO L L L =cut