Config::Model::SearchElement(3pm)

Config::Model::SearchElement3pm

Search an element in a configuration model

Usage

 use Config::Model;
 # 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'
            },
        },
    ],
 ) ;
 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 ';
 $root->load( step => $step );
 # create searcher for manual search
 my $searcher = $root->searcher();
 # looking for foo element in the tree
 $searcher -> prepare (element => 'foo') ;
 my @next = $searcher->next_step() ;
 print "next possible steps: @next\n";
 # next possible steps: foo hash_of_nodes
 # Looking for foo below hash_of_nodes
 $searcher->choose('hash_of_nodes') ;
 @next = $searcher->next_step() ;
 print "next possible steps: @next\n";
 # next possible steps: en fr
 # Looking for foo below fr
 $searcher->choose('fr') ;
 @next = $searcher->next_step() ;
 print "next possible steps: @next\n";
 # next possible steps: foo
 # last step
 $searcher->choose('foo') ;
 my $target = $searcher->current_object;
 print "Found '",$target->location,"'\n";
 # Found 'hash_of_nodes:fr foo'
 # automatic search setup
 my $element_call_back = sub { return 'hash_of_nodes' ;} ;
 my $id_call_back      = sub { return 'en' ;} ;
 $searcher->reset ;
 $target = $searcher->auto_choose($element_call_back, $id_call_back) ;
  print "Automatic search found '",$target->location,"'\n";
 # Automatic search found 'hash_of_nodes:en foo'

Version

version 2.155

Overview

This modules provides a way to search for a configuration element in a configuration tree by exploring the configuration model.

For instance, suppose that you have a xorg.conf model and you know that you need to tune the "MergedXinerama" parameter, but you don't remember where is this parameter in the configuration tree. This module guides you through the tree to the(s) node(s) that contain this parameter.

This class should be invaluable to construct interactive user interfaces.

This module provides 2 search modes:

•

A manual search where you are guided step by step to the element you're looking for. At each step, the module returns you the possible paths to choose from. The user has to choose the correct path from the available paths. Most of the time, only one possibility is returned, so the user choice should be straightforward. In other case (more that one choice), the user has to decide the next step.

•

An automatic search where you provide call-back that resolves the ambiguities in case of multiple paths.

Constructor

The constructor should be used only by Config::Model::Node.

Methods

get_searchable_elements

Return the list of elements found in model that can be searched in the configuration tree.

prepare

Parameters: "(element => ...)"

Prepare the searcher to look for the element passed in the argument. Returns the searcher object (i.e. $self).

reset

Re-initialize the search engine to redo the search from start

searched

Returns the searched element name.

Releases

7 releases since Debian 7 (Wheezy); the text changed 6 times.

  1. 7
  2. 8
  3. 9
  4. 10
  5. 11
  6. 12
  7. 13

Author

Dominique Dumont, (ddumont at cpan dot org)

Author

Dominique Dumont

From libconfig-model-perl 2.155-1 in Debian 13 (Trixie). Parsed by carta from the page's man source.