Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / Tree::Simple::Visitor::FromNestedHash.3pm
CommitLineData
3fea05b9 1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.3
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "Tree::Simple::Visitor::FromNestedHash 3"
132.TH Tree::Simple::Visitor::FromNestedHash 3 "2005-07-14" "perl v5.8.7" "User Contributed Perl Documentation"
133.SH "NAME"
134Tree::Simple::Visitor::FromNestedHash \- A Visitor for creating Tree::Simple objects from nested hash trees.
135.SH "SYNOPSIS"
136.IX Header "SYNOPSIS"
137.Vb 1
138\& use Tree::Simple::Visitor::FromNestedHash;
139.Ve
140.PP
141.Vb 1
142\& my $visitor = Tree::Simple::Visitor::FromNestedHash\->new();
143.Ve
144.PP
145.Vb 10
146\& # given this nested hash tree
147\& my $hash_tree = {
148\& Root => {
149\& Child1 => {
150\& GrandChild1 => {},
151\& GrandChild2 => {}
152\& },
153\& Child2 => {}
154\& }
155\& };
156.Ve
157.PP
158.Vb 3
159\& # set the array tree we
160\& # are going to convert
161\& $visitor\->setHashTree($hash_tree);
162.Ve
163.PP
164.Vb 1
165\& $tree\->accept($visitor);
166.Ve
167.PP
168.Vb 10
169\& # this then creates the equivalent Tree::Simple object:
170\& # Tree::Simple\->new("Root")
171\& # \->addChildren(
172\& # Tree::Simple\->new("Child1")
173\& # \->addChildren(
174\& # Tree::Simple\->new("GrandChild1"),
175\& # Tree::Simple\->new("GrandChild2")
176\& # ),
177\& # Tree::Simple\->new("Child2"),
178\& # );
179.Ve
180.SH "DESCRIPTION"
181.IX Header "DESCRIPTION"
182Given a tree constructed from nested hashs, this Visitor will create the equivalent Tree::Simple heirarchy.
183.SH "METHODS"
184.IX Header "METHODS"
185.IP "\fBnew\fR" 4
186.IX Item "new"
187There are no arguments to the constructor the object will be in its default state. You can use the \f(CW\*(C`setNodeFilter\*(C'\fR methods to customize its behavior.
188.IP "\fBsetNodeFilter ($filter_function)\fR" 4
189.IX Item "setNodeFilter ($filter_function)"
190This method accepts a \s-1CODE\s0 reference as its \f(CW$filter_function\fR argument and throws an exception if it is not a code reference. This code reference is used to filter the tree nodes as they are created, the \f(CW$filter_function\fR is passed the node value extracted from the hash prior to it being inserted into the tree being built. The \f(CW$filter_function\fR is expected to return the value desired for inclusion into the tree.
191.IP "\fBsetHashTree ($hash_tree)\fR" 4
192.IX Item "setHashTree ($hash_tree)"
193This method is used to set the \f(CW$hash_tree\fR that our Tree::Simple heirarchy will be constructed from. It must be in the following form:
194.Sp
195.Vb 9
196\& {
197\& Root => {
198\& Child1 => {
199\& GrandChild1 => {},
200\& GrandChild2 => {}
201\& },
202\& Child2 => {}
203\& }
204\& }
205.Ve
206.Sp
207Basically each key in the hash is considered a node, values are ignored unless it is a hash reference with at least one key in it, in which case it is interpreted as containing the children of the node created from the key.
208.Sp
209The tree is validated prior being accepted, if it fails validation an execption will be thrown. The rules are as follows;
210.RS 4
211.IP "The hash tree must not be empty." 4
212.IX Item "The hash tree must not be empty."
213It makes not sense to create a tree out of nothing, so it is assumed that this is a sign of something wrong.
214.IP "The hash tree must be a single rooted tree." 4
215.IX Item "The hash tree must be a single rooted tree."
216The hash tree should have only one key in it's first level, if it has more than one, then it is not a single rooted tree.
217.RE
218.RS 4
219.Sp
220\&\fB\s-1NOTE:\s0\fR Hash keys are sorted ascii-betically before being added to the tree, this results in a somewhat more predictable hierarchy.
221.RE
222.IP "\fBvisit ($tree)\fR" 4
223.IX Item "visit ($tree)"
224This is the method that is used by Tree::Simple's \f(CW\*(C`accept\*(C'\fR method. It can also be used on its own, it requires the \f(CW$tree\fR argument to be a Tree::Simple object (or derived from a Tree::Simple object), and will throw and exception otherwise.
225.SH "BUGS"
226.IX Header "BUGS"
227None that I am aware of. Of course, if you find a bug, let me know, and I will be sure to fix it.
228.SH "CODE COVERAGE"
229.IX Header "CODE COVERAGE"
230See the \fB\s-1CODE\s0 \s-1COVERAGE\s0\fR section in Tree::Simple::VisitorFactory for more inforamtion.
231.SH "SEE ALSO"
232.IX Header "SEE ALSO"
233These Visitor classes are all subclasses of \fBTree::Simple::Visitor\fR, which can be found in the \fBTree::Simple\fR module, you should refer to that module for more information.
234.SH "AUTHOR"
235.IX Header "AUTHOR"
236stevan little, <stevan@iinteractive.com>
237.SH "COPYRIGHT AND LICENSE"
238.IX Header "COPYRIGHT AND LICENSE"
239Copyright 2004, 2005 by Infinity Interactive, Inc.
240.PP
241<http://www.iinteractive.com>
242.PP
243This library is free software; you can redistribute it and/or modify
244it under the same terms as Perl itself.