| Config::Model::AnyId - Base class for hash or list element |
fetch_all()get_all_indexes()clear()
Config::Model::AnyId - Base class for hash or list element
$model ->create_config_class ( ... element => [ bounded_hash => { type => 'hash', # hash id index_type => 'integer',
# hash boundaries
min => 1, max => 123, max_nb => 2 ,
cargo_type => 'leaf',
cargo_args => {value_type => 'string'},
},
bounded_list
=> { type => 'list', # list id
max => 123,
cargo_type => 'leaf',
cargo_args => {value_type => 'string'},
},
hash_of_nodes
=> { type => 'hash', # hash id
index_type => 'integer',
cargo_type => 'node',
config_class_name => 'Foo' ,
},
]
) ;
This class provides hash or list elements for a the Config::Model::Node manpage.
The hash index can either be en enumerated type, a boolean, an integer or a string.
AnyId object should not be created directly.
A hash or list element must be declared with the following parameters:
Mandatory element type. Must be hash or list to have a
collection element. The actual element type must be specified by
cargo_type (See CAVEATS).
Either integer or string. Mandatory for hash.
Whether to keep the order of the hash keys (default no). (a bit like the Tie::IxHash manpage). The hash keys are ordered along their creation. The order can be modified with swap, move_up or move_down.
Specifies the type of cargo held by the hash of list. Can be node
or leaf (default).
Constructor arguments passed to the cargo object. See
the Config::Model::Node manpage when cargo_type is node. See
the Config::Model::Value manpage when cargo_type is leaf.
Specifies the type of configuration object held in the hash. Only
valid when cargo_type is node.
Specify the minimum value (optional, only for hash and for integer index)
Specify the maximum value (optional, only for integer index)
Specify the maximum number of indexes. (hash only, optional, may also be used with string index type)
When set, the default parameter (or set of parameters) are used as default keys hashes and created automatically when the keys or exists functions are used on an empty hash.
You can use default_keys => 'foo',
or default_keys => ['foo', 'bar'].
To perform special set-up on children nodes you can also use
default_with_init => { 'foo' => 'X=Av Y=Bv' , 'bar' => 'Y=Av Z=Cv' }
Specifies that the keys of the hash follow the keys of another hash in the configuration tree. In other words, the hash you're creating will always have the same keys as the other hash.
follow_keys_from => '- another_hash'
Specifies authorized keys:
allow_keys => ['foo','bar','baz']
A bit like the follow_keys_from parameters. Except that the hash pointed to
by allow_keys_from specified the authorized keys for this hash.
allow_keys_from => '- another_hash'
When set, the default parameter (or set of parameters) are used as keys hashes and created automatically.
Called with auto_create => 'foo', or
auto_create => ['foo', 'bar'].
For list, auto_create indicated the number of elements to
create. E.g. auto_create => 4 will initialize the list with 4
undef elements.
See Warp: dynamic value configuration below.
By default, value checking is done while setting or reading a value.
You can use push_no_value_check() or pop_no_value_check() from the Config::Model::Instance manpage to modify this behavior.
The Warp functionnality enables an HashId or
ListId object to change its default settings
(e.g. min, max or max_nb parameters) dynamically according to
the value of another Value object. (See
the Config::Model::WarpedThing manpage for explanation on warp mechanism)
For instance, with this model:
$model ->create_config_class ( name => 'Root', 'element' => [ macro => { type => 'leaf', value_type => 'enum', name => 'macro', choice => [qw/A B C/], }, warped_hash => { type => 'hash', index_type => 'integer', max_nb => 3, warp => { follow => '- macro', rules => { A => { max_nb => 1 }, B => { max_nb => 2 } } }, cargo_type => 'node', config_class_name => 'Dummy' }, ] );
Setting macro to A will mean that warped_hash can only accept
one instance of Dummy.
Setting macro to B will mean that warped_hash will accept two
instances of Dummy.
Like other warped class, a HashId or ListId can have multiple warp masters (See Warp follow argument in the Config::Model::WarpedThing manpage:
warp => { follow => { m1 => '- macro1', m2 => '- macro2' }, rules => [ '$m1 eq "A" and $m2 eq "A2"' => { max_nb => 1}, '$m1 eq "A" and $m2 eq "B2"' => { max_nb => 2} ], }
When a warp is applied with auto_create parameter, the auto_created
items are created if they are not already present. But this warp will
never remove items that were previously auto created.
For instance, if a tied hash is created with
auto_create => [a,b,c], the hash contains (a,b,c).
Then if a warp is applied with auto_create => [c,d,e], the hash
will contain (a,b,c,d,e). The items created by the first
auto_create are not removed.
When a warp is applied, the items that do not fit the constraint (e.g. min, max) are removed.
For the max_nb constraint, an exception will be raised if a warp leads to a nb of items greater than the max_nb constraint.
The following methods returns the current value stored in the Id object (as declared in the model unless they were warped):
get_cargo_type()Returns the object type contained by the hash or list (i.e. returns
cargo_type).
Returns a list ref of the current default keys. These keys can be set
by the default_keys or default_with_init parameters or by the
other hash pointed by follow_keys_from parameter.
name()Returns the object name. The name finishes with ' id'.
config_class_name()Returns the config_class_name of collected elements. Valid only for collection of nodes.
This method will return undef if cargo_type is not node.
Fetch the collected element held by the hash or list.
Move an element within the hash or list.
Deep copy an element within the hash or list. If the element contained by the hash or list is a node, all configuration informations are copied from one node to another.
fetch_all()Returns an array containing all elements held by the hash or list.
Returns an array containing all values held by the hash or list.
With a parameter, this method will return either:
The value entered by the user
The value entered in preset mode
The value entered in preset mode or checked by default.
The default value (defined by the configuration model)
get_all_indexes()Returns an array containing all indexes of the hash or list. Hash keys are sorted alphabetically, except for ordered hashed.
Returns true if the value held at index is defined.
Returns true if the value held at index exists (i.e the key exists
but the value may be undefined). This method may not make sense for
list element.
Delete the indexed value
clear()Delete all values.
Dominique Dumont, ddumont [AT] cpan [DOT] org
the Config::Model manpage, the Config::Model::Instance manpage, the Config::Model::Node manpage, the Config::Model::WarpedNode manpage, the Config::Model::HashId manpage, the Config::Model::ListId manpage, the Config::Model::CheckList manpage, the Config::Model::Value manpage
| Config::Model::AnyId - Base class for hash or list element |