1Tree::Simple::VisitorFaUcsteorryC(o3n)tributed Perl DocuTmreenet:a:tSiiomnple::VisitorFactory(3)
2
3
4
6 Tree::Simple::VisitorFactory - A factory object for dispensing Visitor
7 objects
8
10 use Tree::Simple::VisitorFactory;
11
12 my $tf = Tree::Simple::VisitorFactory->new();
13
14 my $visitor = $tf->get("PathToRoot");
15
16 # or call it as a class method
17 my $visitor = Tree::Simple::VisitorFactory->getVisitor("PathToRoot");
18
20 This object is really just a factory for dispensing
21 Tree::Simple::Visitor::* objects. It is not required to use this
22 package in order to use all the Visitors, it is just a somewhat
23 convenient way to avoid having to type their long class names.
24
25 I considered making this a Singleton, but I did not because I thought
26 that some people might not want that. I know that I am very picky about
27 using Singletons, especially in multiprocess environments like
28 mod_perl, so I implemented the smallest instance I knew how to, and
29 made sure all other methods could be called as class methods too.
30
32 new Returns an minimal instance of this object, basically just a
33 reference back to the package (literally, see the source if you
34 care).
35
36 get ($visitor_type)
37 Attempts to load the $visitor_type and returns an instance of it if
38 successful. If no $visitor_type is specified an exception is
39 thrown, if $visitor_type fails to load, and exception is thrown.
40
41 getVisitor ($visitor_type)
42 This is an alias of "get".
43
45 This distribution provides a number of Visitor objects which can be
46 loaded just by giving their name. Below is a description of the
47 available Visitors and a sort description of what they do. I have
48 attempted to classify the Visitors into groups which are related to
49 their use.
50
51 This factory will load any module contained inside the
52 Tree::Simple::Visitor::* namespace. Given a name, it will attempt to
53 "require" the module Tree::Simple::Visitor::<Name>.pm. This allows
54 others to create Visitors which can be accessed with this factory,
55 without needed to include them in this distribution.
56
57 Search/Path Related Visitors
58 PathToRoot
59 Given a Tree::Simple object, this Visitor will find the path back
60 to the tree's root node.
61
62 FindByPath
63 Given a path and Tree::Simple hierarchy, this Visitor will attempt
64 to find the node specified by the path.
65
66 FindByUID
67 Given a UID and Tree::Simple hierarchy, this Visitor will attempt
68 to find the node with the same UID.
69
70 FindByNodeValue
71 Given a node value and Tree::Simple hierarchy, this Visitor will
72 attempt to find the node with the same node value.
73
74 Traversal Visitors
75 BreadthFirstTraversal
76 This implements a breadth-first traversal of a Tree::Simple
77 hierarchy.
78
79 PostOrderTraversal
80 Post-order traversal is a variation of the depth-first traversal in
81 which the sub-tree's are processed before the parent.
82
83 PreOrderTraversal
84 Pre-order traversal is a depth-first traversal method in which the
85 sub-tree's are processed after the parent.
86
87 FileSystem Visitors
88 LoadDirectoryTree
89 This visitor can be used to load a directory tree into a
90 Tree::Simple hierarchy.
91
92 CreateDirectoryTree
93 This visitor can be used to create a set of directories and files
94 from a Tree::Simple object hierarchy.
95
96 Conversion Visitors
97 FromNestedArray
98 Given a tree constructed from nested arrays, this Visitor will
99 create the equivalent Tree::Simple hierarchy.
100
101 ToNestedArray
102 Given a Tree::Simple hierarchy, this Visitor will create the
103 equivalent tree constructed from nested arrays.
104
105 FromNestedHash
106 Given a tree constructed from nested hashs, this Visitor will
107 create the equivalent Tree::Simple hierarchy.
108
109 ToNestedHash
110 Given a Tree::Simple hierarchy, this Visitor will create the
111 equivalent tree constructed from nested hashes.
112
113 Reflective Visitors
114 LoadClassHierarchy
115 Given a class name or instance, this Visitor will create a
116 Tree::Simple hierarchy which models the classes inheritance
117 hierarchy.
118
119 Misc. Visitors
120 GetAllDescendents
121 Given a Tree::Simple instance this Visitor will return all the
122 descendents recursively on down the hierarchy.
123
124 Sort
125 This implements a multi-level sort of a Tree::Simple hierarchy.
126
127 VariableDepthClone
128 A Visitor for cloning parts of Tree::Simple hierarchy
129
131 None that I am aware of. Of course, if you find a bug, let me know, and
132 I will be sure to fix it.
133
135 I use Devel::Cover to test the code coverage of my tests, below is the
136 Devel::Cover report on this module test suite.
137
138 -------------------------------------------- ------ ------ ------ ------ ------ ------ ------
139 File stmt branch cond sub pod time total
140 -------------------------------------------- ------ ------ ------ ------ ------ ------ ------
141 Tree/Simple/VisitorFactory.pm 100.0 100.0 n/a 100.0 100.0 0.4 100.0
142 Tree/Simple/Visitor/BreadthFirstTraversal.pm 100.0 100.0 66.7 100.0 100.0 2.5 96.3
143 Tree/Simple/Visitor/PostOrderTraversal.pm 100.0 100.0 77.8 100.0 100.0 1.7 96.3
144 Tree/Simple/Visitor/PreOrderTraversal.pm 100.0 n/a 33.3 100.0 100.0 0.7 90.5
145 Tree/Simple/Visitor/CreateDirectoryTree.pm 100.0 85.7 86.7 100.0 100.0 3.4 95.8
146 Tree/Simple/Visitor/LoadClassHierarchy.pm 100.0 73.1 33.3 100.0 100.0 4.9 89.2
147 Tree/Simple/Visitor/LoadDirectoryTree.pm 100.0 89.3 85.2 100.0 100.0 26.1 94.7
148 Tree/Simple/Visitor/FindByNodeValue.pm 100.0 100.0 86.7 100.0 100.0 3.1 98.3
149 Tree/Simple/Visitor/FindByPath.pm 100.0 100.0 66.7 100.0 100.0 1.2 97.9
150 Tree/Simple/Visitor/FindByUID.pm 100.0 100.0 86.7 100.0 100.0 2.9 98.3
151 Tree/Simple/Visitor/GetAllDescendents.pm 100.0 100.0 77.8 100.0 100.0 2.3 97.1
152 Tree/Simple/Visitor/PathToRoot.pm 100.0 87.5 75.0 100.0 100.0 0.8 95.1
153 Tree/Simple/Visitor/Sort.pm 100.0 100.0 77.8 100.0 100.0 8.8 98.1
154 Tree/Simple/Visitor/ToNestedArray.pm 100.0 100.0 66.7 100.0 100.0 1.5 96.5
155 Tree/Simple/Visitor/ToNestedHash.pm 100.0 100.0 66.7 100.0 100.0 1.4 96.5
156 Tree/Simple/Visitor/FromNestedArray.pm 100.0 94.4 81.8 100.0 100.0 8.1 96.6
157 Tree/Simple/Visitor/FromNestedHash.pm 100.0 91.7 77.8 100.0 100.0 4.8 95.9
158 Tree/Simple/Visitor/VariableDepthClone.pm 100.0 100.0 66.7 100.0 100.0 25.5 97.3
159 -------------------------------------------- ------ ------ ------ ------ ------ ------ ------
160 Total 100.0 93.8 76.3 100.0 100.0 100.0 96.1
161 -------------------------------------------- ------ ------ ------ ------ ------ ------ ------
162
164 These Visitor classes are meant to work with Tree::Simple hierarchies,
165 you should refer to that module for more information.
166
168 <https://github.com/ronsavage/Tree-Simple-VisitorFactory>
169
171 Bugs should be reported via the CPAN bug tracker at
172
173 <https://github.com/ronsavage/Tree-Simple-VisitorFactory/issues>
174
176 stevan little, <stevan@iinteractive.com>
177
178 Ron Savage <ron@savage.net.au> has taken over maintenance as of V 0.11.
179
181 Copyright 2004, 2005 by Infinity Interactive, Inc.
182
183 <http://www.iinteractive.com>
184
185 This library is free software; you can redistribute it and/or modify it
186 under the same terms as Perl itself.
187
188
189
190perl v5.36.0 2022-07-22 Tree::Simple::VisitorFactory(3)