Provided by: libconfig-model-perl_2.153-3_all bug

NAME

       Config::Model::TermUI - Interactive command line interface for cme

VERSION

       version 2.153

SYNOPSIS

        use Config::Model;
        use Config::Model::TermUI ;

        # 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 $steps = 'foo=FOO hash_of_nodes:fr foo=bonjour -
          hash_of_nodes:en foo=hello ';
        $root->load( steps => $steps );

        my $ui = Config::Model::TermUI->new(
            root => $root ,
            title => 'My class ui',
            prompt => 'class ui',
        );

        # engage in user interaction
        $ui -> run_loop ;

        print $root->dump_tree ;

       Once the synopsis above has been saved in "my_test.pl", you can achieve the same
       interactions as with "Config::Model::SimpleUI". Except that you can use TAB completion:

        class ui:$ ls
        foo  bar  hash_of_nodes
        class ui:$ ll hash_of_nodes
        name         value        type         comment
        hash_of_nodes <Foo>        node hash    keys: "en" "fr"

        class ui:$ cd hash_of_nodes:en
        class ui: hash_of_nodes:en $ ll
        name         value        type         comment
        foo          hello        string
        bar          [undef]      string

        class ui: hash_of_nodes:en $ set bar=bonjour
        class ui: hash_of_nodes:en $ ll
        name         value        type         comment
        foo          hello        string
        bar          bonjour      string

        class ui: hash_of_nodes:en $ ^D

       At the end, the test script dumps the configuration tree. The modified "bar" value can be
       found in there:

        foo=FOO
        hash_of_nodes:en
          foo=hello
          bar=bonjour -
        hash_of_nodes:fr
          foo=bonjour - -

DESCRIPTION

       This module provides a helper to construct pure ASCII user interface on top of
       Term::ReadLine. To get better interaction you must install either Term::ReadLine::Gnu or
       Term::ReadLine::Perl.

       Depending on your installation, either Term::ReadLine::Gnu or Term::ReadLine::Perl is
       used. See Term::ReadLine to override default choice.

Dependencies

       This module is optional and depends on Term::ReadLine to work. To reduce the dependency
       list of Config::Model, "Term::ReadLine" is only recommended. cme gracefully degrades to
       Config::Model::SimpleUI when necessary.

USER COMMAND SYNTAX

       See "USER COMMAND SYNTAX" in Config::Model::SimpleUI.

CONSTRUCTOR

   parameters
       root
           Root node of the configuration tree

       title
           UI title

       prompt
           UI prompt. The prompt will be completed with the location of the current node.

Methods

   run_loop
       Engage in user interaction until user enters '^D' (CTRL-D).

BUGS

       •   Auto-completion is not complete.

       •   Auto-completion provides wrong choice when you try to "cd" in a hash where the index
           contains a white space. I.e. the correct command is "cd foo:"a b"" instead of "cd foo:
           "a b"" as proposed by auto completion.

AUTHOR

       Dominique Dumont, (ddumont at cpan dot org)

SEE ALSO

       Config::Model, Config::Model::Instance, Config::Model::Node,

AUTHOR

       Dominique Dumont

COPYRIGHT AND LICENSE

       This software is Copyright (c) 2005-2022 by Dominique Dumont.

       This is free software, licensed under:

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