Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Config::Model::TermUI(User Contributed Perl DocumentatConfig::Model::TermUI(3)

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

VERSION
       version 2.140

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
       o   Auto-completion is not complete.

       o   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-2020	by Dominique Dumont.

       This is free software, licensed under:

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

perl v5.32.0			  2020-08-28	      Config::Model::TermUI(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | Dependencies | USER COMMAND SYNTAX | CONSTRUCTOR | Methods | BUGS | AUTHOR | SEE ALSO | AUTHOR | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Config::Model::TermUI&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help