Config::Model::Iterator - Iterates forward or backward a configuration tree
version 2.137
use Config::Model; # define configuration tree object my $model = Config::Model->new; $model->create_config_class( name => "Foo", element => [ [qw/bar baz/] => { type => 'leaf', value_type => 'string', level => 'important' , }, ] ); $model->create_config_class( name => "MyClass", element => [ foo_nodes => { type => 'hash', # hash id index_type => 'string', level => 'important' , cargo => { type => 'node', config_class_name => 'Foo' }, }, ], ); my $inst = $model->instance( root_class_name => 'MyClass' ); # create some Foo objects $inst->config_root->load("foo_nodes:foo1 - foo_nodes:foo2 ") ; my $my_leaf_cb = sub { my ($iter, $data_r,$node,$element,$index, $leaf_object) = @_ ; print "leaf_cb called for ",$leaf_object->location,"\n" ; } ; my $my_hash_cb = sub { my ($iter, $data_r,$node,$element,@keys) = @_ ; print "hash_element_cb called for element $element with keys @keys\n" ; } ; my $iterator = $inst -> iterator ( leaf_cb => $my_leaf_cb, hash_element_cb => $my_hash_cb , ); $iterator->start ; ### prints # hash_element_cb called for element foo_nodes with keys foo1 foo2 # leaf_cb called for foo_nodes:foo1 bar # leaf_cb called for foo_nodes:foo1 baz # leaf_cb called for foo_nodes:foo2 bar # leaf_cb called for foo_nodes:foo2 baz
This module provides a class that is able to iterate forward or backward a configuration tree. The iterator stops and calls back user defined subroutines on one of the following condition:
A configuration item contains an error (mostly undefined mandatory values)
A configuration item contains warnings and the constructor's argument call_back_on_warning was set.
call_back_on_warning
A configuration item has a important level and the constructor's argument call_back_on_important was set.. See level parameter for details.
important
call_back_on_important
The iterator supports going forward and backward (to support back and next buttons on a wizard widget).
back
next
The constructor should be used only by Config::Model::Instance with the iterator method.
A iterator requires at least two kind of call-back: a call-back for leaf elements and a call-back for hash elements (which is also used for list elements).
These call-back must be passed when creating the iterator (the parameters are named leaf_cb and hash_element_cb)
leaf_cb
hash_element_cb
Here are the the parameters accepted by iterator:
iterator
Whether to call back when an important element is found (default 0).
Whether to call back when an item with warnings is found (default 0).
Specifies the status of the element scanned by the wizard (default 'standard').
Subroutine called backed for leaf elements. See "Callback prototypes" in Config::Model::ObjTreeScanner for signature and details. (mandatory)
Subroutine called backed for hash elements. See "Callback prototypes" in Config::Model::ObjTreeScanner for signature and details. (mandatory)
By default, leaf_cb is called for all types of leaf elements (i.e enum. integer, strings, ...). But you can provide dedicated call-back for each type of leaf:
enum_value_cb, integer_value_cb, number_value_cb, boolean_value_cb, uniline_value_cb, string_value_cb
Likewise, you can also provide a call-back dedicated to list elements with list_element_cb
list_element_cb
Start the scan and perform call-back when needed. This function returns when the scan is completely done.
When called, a variable is set so that all call_backs returns as soon as possible. Used to abort wizard.
Set wizard in forward (default) mode.
Set wizard in backward mode.
Dominique Dumont, (ddumont at cpan dot org)
Config::Model, Config::Model::Instance, Config::Model::Node, Config::Model::HashId, Config::Model::ListId, Config::Model::Value, Config::Model::CheckList, Config::Model::ObjTreeScanner,
Dominique Dumont
This software is Copyright (c) 2005-2019 by Dominique Dumont.
This is free software, licensed under:
The GNU Lesser General Public License, Version 2.1, February 1999
To install Config::Model, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Config::Model
CPAN shell
perl -MCPAN -e shell install Config::Model
For more information on module installation, please visit the detailed CPAN module installation guide.