Provided by: libconfig-model-perl_2.047-1_all bug

NAME

       Config::Model::Loader - Load serialized data into config tree

VERSION

       version 2.047

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.

   Quotes
       You can surround indexes and values with double quotes. E.g.:

         a_string="\"titi\" and \"toto\""

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.

       check
           Whether to check values while loading. Either "yes" (default), "no" or "skip".
           Loading with "skip" will discard bad values.

AUTHOR

       Dominique Dumont, (ddumont at cpan dot org)

SEE ALSO

       Config::Model,Config::Model::Node,Config::Model::Dumper

AUTHOR

       Dominique Dumont

COPYRIGHT AND LICENSE

       This software is Copyright (c) 2013 by Dominique Dumont.

       This is free software, licensed under:

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