.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Config::Model::Annotation 3pm" .TH Config::Model::Annotation 3pm "2023-08-19" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Config::Model::Annotation \- Read and write configuration annotations .SH "VERSION" .IX Header "VERSION" version 2.153 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Config::Model ; \& \& # define configuration tree object \& my $model = Config::Model\->new ; \& $model \->create_config_class ( \& name => "MyClass", \& element => [ \& [qw/foo bar/] => { \& type => \*(Aqleaf\*(Aq, \& value_type => \*(Aqstring\*(Aq \& }, \& baz => { \& type => \*(Aqhash\*(Aq, \& index_type => \*(Aqstring\*(Aq , \& cargo => { \& type => \*(Aqleaf\*(Aq, \& value_type => \*(Aqstring\*(Aq, \& }, \& }, \& \& ], \& ) ; \& \& my $inst = $model\->instance(root_class_name => \*(AqMyClass\*(Aq ); \& \& my $root = $inst\->config_root ; \& \& # put some data in config tree the hard way \& $root\->fetch_element(\*(Aqfoo\*(Aq)\->store(\*(Aqyada\*(Aq) ; \& $root\->fetch_element(\*(Aqbaz\*(Aq)\->fetch_with_id(\*(Aqen\*(Aq)\->store(\*(Aqhello\*(Aq) ; \& \& # put annotation the hard way \& $root\->fetch_element(\*(Aqfoo\*(Aq)\->annotation(\*(Aqenglish\*(Aq) ; \& $root\->fetch_element(\*(Aqbaz\*(Aq)\->fetch_with_id(\*(Aqen\*(Aq)\->annotation(\*(Aqalso english\*(Aq) ; \& \& # put more data the easy way \& my $steps = \*(Aqbaz:fr=bonjour#french baz:hr="dobar dan"#croatian\*(Aq; \& $root\->load( steps => $steps ) ; \& \& # dump resulting tree with annotations \& print $root\->dump_tree; \& \& # save annotations \& my $annotate_saver = Config::Model::Annotation \& \-> new ( \& config_class_name => \*(AqMyClass\*(Aq, \& instance => $inst , \& root_dir => \*(Aq/tmp/\*(Aq, # for test \& ) ; \& $annotate_saver\->save ; \& \& # now check content of /tmp/config\-model/MyClass\-note.pl .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module provides an object that read and write annotations (a bit like comments) to and from a configuration tree and save them in a file (not configuration file). This module can be used to save annotation for configuration files that do not support comments. .PP THis module should not be used for configuration files that support comments. .PP Depending on the effective id of the process, the annotation is saved in: .IP "\(bu" 4 \&\f(CW\*(C`/var/lib/config\-model/\-note.yml\*(C'\fR for root (\s-1EUID\s0 == 0) .IP "\(bu" 4 \&\f(CW\*(C`~/.config\-model/\-note.yml\*(C'\fR for normal user (\s-1EUID\s0 > 0) .SH "CONSTRUCTOR" .IX Header "CONSTRUCTOR" Quite standard. The constructor is passed a Config::Model::Instance object. .SH "METHODS" .IX Header "METHODS" .SS "save" .IX Subsection "save" Save annotations in a file (See \s-1DESCRIPTION\s0) .SS "load" .IX Subsection "load" Loads annotations from a file (See \s-1DESCRIPTION\s0) .SH "CAVEATS" .IX Header "CAVEATS" This module is currently not used. .SH "AUTHOR" .IX Header "AUTHOR" Dominique Dumont, (ddumont at cpan dot org) .SH "SEE ALSO" .IX Header "SEE ALSO" Config::Model, Config::Model::Node, Config::Model::Loader, Config::Model::Searcher, Config::Model::Value, .SH "AUTHOR" .IX Header "AUTHOR" Dominique Dumont .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is Copyright (c) 2005\-2022 by Dominique Dumont. .PP This is free software, licensed under: .PP .Vb 1 \& The GNU Lesser General Public License, Version 2.1, February 1999 .Ve