Config::Model::Loader(User Contributed Perl DocumentatConfig::Model::Loader(3)NAMEConfig::Model::Loader - Load serialized data into config tree
VERSION
version 1.235
SYNOPSIS
use Config::Model;
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init($WARN);
# define configuration tree object
my $model = Config::Model->new;
$model->create_config_class(
name => "Foo",
element => [
[qw/foo bar/] => {
type => 'leaf',
value_type => 'string'
},
]
);
$model ->create_config_class (
name => "MyClass",
element => [
[qw/foo bar/] => {
type => 'leaf',
value_type => 'string'
},
hash_of_nodes => {
type => 'hash', # hash id
index_type => 'string',
cargo => {
type => 'node',
config_class_name => 'Foo'
},
},
[qw/lista listb/] => {
type => 'list',
cargo => {type => 'leaf',
value_type => 'string'
}
},
],
) ;
my $inst = $model->instance(root_class_name => 'MyClass' );
my $root = $inst->config_root ;
# put data
my $step = 'foo=FOO hash_of_nodes:fr foo=bonjour -
hash_of_nodes:en foo=hello
! lista=foo,bar lista:2=baz
listb:0=foo listb:1=baz';
$root->load( step => $step );
print $root->describe,"\n" ;
# name value type comment
# foo FOO string
# bar [undef] string
# hash_of_nodes <Foo> node hash keys: "en" "fr"
# lista foo,bar,baz list
# listb foo,baz list
# delete some data
$root->load( step => 'lista~2' );
print $root->describe(element => 'lista'),"\n" ;
# name value type comment
# lista foo,bar list
# append some data
$root->load( step => q!hash_of_nodes:en foo.=" world"! );
print $root->grab('hash_of_nodes:en')->describe(element => 'foo'),"\n" ;
# name value type comment
# foo "hello world" string
DESCRIPTION
This module is used directly by Config::Model::Node to load serialized
configuration data into the configuration tree.
Serialized data can be written by the user or produced by
Config::Model::Dumper while dumping data from a configuration tree.
CONSTRUCTOR
new ( )
No parameter. The constructor should be used only by
Config::Model::Node.
load string syntax
The string is made of the following items (also called "actions")
separated by spaces:
- Go up one node
! Go to the root node of the configuration tree.
xxx Go down using "xxx" element. (For "node" type element)
xxx:yy Go down using "xxx" element and id "yy" (For "hash" or "list"
element with "node" cargo_type)
xxx=~/yy/
Go down using "xxx" element and loop over the ids that match
the regex. (For "hash")
For instance, with "OpenSsh" model, you could do
Host=~/.*.debian.org/ user='foo-guest'
to set "foo-user" users for all your debian accounts.
xxx~yy Delete item referenced by "xxx" element and id "yy". For a
list, this is equivalent to "splice xxx,yy,1". This command
does not go down in the tree (since it has just deleted the
element). I.e. a '"-"' is generally not needed afterwards.
xxx=zz Set element "xxx" to value "yy". load also accepts to set
elements with a quoted string. (For "leaf" element)
For instance "foo="a quoted string"". Note that you cannot
embed double quote in this string. I.e "foo="a \"quoted\"
string"" will fail.
xxx~ Undef element "xxx"
xxx=z1,z2,z3
Set list element "xxx" to list "z1,z2,z3". Use ",," for undef
values, and "" for empty values.
I.e, for a list "('a',undef,'','c')", use "a,,"",c".
xxx:yy=zz
For "hash" element containing "leaf" cargo_type. Set the leaf
identified by key "yy" to value "zz".
Using "xxx=~/yy/=zz" is also possible.
xxx.=zzz
Will append "zzz" value to current values (valid for "leaf"
elements).
xxx#zzz or xxx:yyy#zzz
Element annotation. Can be quoted or not quoted. Note that
annotations are always placed at the end of an action item.
I.e. "foo#comment", "foo:bar#comment" or "foo:bar=baz#comment"
are valid. "foo#comment:bar" is not valid.
Methods
load ( ... )
Load data into the node tree (from the node passed with "node") and
fill values as we go following the instructions passed with "step".
("step" can also be an array ref).
Parameters are:
node
node ref of the root of the tree (of sub-root) to start the load
from.
step
A string or an array ref containing the steps to load. See above
for a description of the string.
experience
Specify the experience level used during the load (default:
"master"). The experience can be "intermediate advanced master".
The load will raise an exception if the step of the load string
tries to access an element with experience higher than user's
experience.
AUTHOR
Dominique Dumont, (ddumont at cpan dot org)
SEE ALSO
Config::Model,Config::Model::Node,Config::Model::Dumper
perl v5.14.1 2011-07-22 Config::Model::Loader(3)