Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Config::Model::IteratoUser Contributed Perl DocumentConfig::Model::Iterator(3)

NAME
       Config::Model::Iterator - Iterates forward or backward a	configuration
       tree

VERSION
       version 2.140

SYNOPSIS
	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

DESCRIPTION
       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:

       o   A configuration item	contains an error (mostly undefined mandatory
	   values)

       o   A configuration item	contains warnings and the constructor's
	   argument "call_back_on_warning" was set.

       o   A configuration item	has a "important" level	and the	constructor's
	   argument "call_back_on_important" was set.. See level parameter for
	   details.

       The iterator supports going forward and backward	(to support "back" and
       "next" buttons on a wizard widget).

CONSTRUCTOR
       The constructor should be used only by Config::Model::Instance with the
       iterator	method.

Creating an iterator
       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")

       Here are	the the	parameters accepted by "iterator":

   call_back_on_important
       Whether to call back when an important element is found (default	0).

   call_back_on_warning
       Whether to call back when an item with warnings is found	(default 0).

   status
       Specifies the status of the element scanned by the wizard (default
       'standard').

   leaf_cb
       Subroutine called backed	for leaf elements. See "Callback prototypes"
       in Config::Model::ObjTreeScanner	for signature and details. (mandatory)

   hash_element_cb
       Subroutine called backed	for hash elements. See "Callback prototypes"
       in Config::Model::ObjTreeScanner	for signature and details. (mandatory)

Custom callbacks
       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"

Methods
   start
       Start the scan and perform call-back when needed. This function returns
       when the	scan is	completely done.

   bail_out
       When called, a variable is set so that all call_backs returns as	soon
       as possible. Used to abort wizard.

   go_forward
       Set wizard in forward (default) mode.

   go_backward
       Set wizard in backward mode.

AUTHOR
       Dominique Dumont, (ddumont at cpan dot org)

SEE ALSO
       Config::Model, Config::Model::Instance, Config::Model::Node,
       Config::Model::HashId, Config::Model::ListId, Config::Model::Value,
       Config::Model::CheckList, Config::Model::ObjTreeScanner,

AUTHOR
       Dominique Dumont

COPYRIGHT AND LICENSE
       This software is	Copyright (c) 2005-2020	by Dominique Dumont.

       This is free software, licensed under:

	 The GNU Lesser	General	Public License,	Version	2.1, February 1999

perl v5.32.0			  2020-08-28	    Config::Model::Iterator(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | CONSTRUCTOR | Creating an iterator | Custom callbacks | Methods | AUTHOR | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Config::Model::Iterator&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help