1Graph::Easy::Group(3) User Contributed Perl DocumentationGraph::Easy::Group(3)
2
3
4
6 Graph::Easy::Group - A group of nodes (aka subgraph) in Graph::Easy
7
9 use Graph::Easy;
10
11 my $bonn = Graph::Easy::Node->new('Bonn');
12
13 $bonn->set_attribute('border', 'solid 1px black');
14
15 my $berlin = Graph::Easy::Node->new( name => 'Berlin' );
16
17 my $cities = Graph::Easy::Group->new(
18 name => 'Cities',
19 );
20 $cities->set_attribute('border', 'dashed 1px blue');
21
22 $cities->add_nodes ($bonn);
23 # $bonn will be ONCE in the group
24 $cities->add_nodes ($bonn, $berlin);
25
27 A "Graph::Easy::Group" represents a group of nodes in an "Graph::Easy"
28 object. These nodes are grouped together on output.
29
31 new()
32 my $group = Graph::Easy::Group->new( $options );
33
34 Create a new, empty group. $options are the possible options, see
35 Graph::Easy::Node for a list.
36
37 error()
38 $last_error = $group->error();
39
40 $group->error($error); # set new messages
41 $group->error(''); # clear error
42
43 Returns the last error message, or '' for no error.
44
45 as_ascii()
46 my $ascii = $group->as_ascii();
47
48 Return the group as a little box drawn in ASCII art as a string.
49
50 name()
51 my $name = $group->name();
52
53 Return the name of the group.
54
55 id()
56 my $id = $group->id();
57
58 Returns the group's unique ID number.
59
60 set_attribute()
61 $group->set_attribute('border-style', 'none');
62
63 Sets the specified attribute of this (and only this!) group to the
64 specified value.
65
66 add_member()
67 $group->add_member($node);
68 $group->add_member($group);
69
70 Add the specified object to this group and returns this member. If the
71 passed argument is a scalar, will treat it as a node name.
72
73 Note that each object can only be a member of one group at a time.
74
75 add_node()
76 $group->add_node($node);
77
78 Add the specified node to this group and returns this node.
79
80 Note that each object can only be a member of one group at a time.
81
82 add_edge(), add_edge_once()
83 $group->add_edge($edge); # Graph::Easy::Edge
84 $group->add_edge($from, $to); # Graph::Easy::Node or
85 # Graph::Easy::Group
86 $group->add_edge('From', 'To'); # Scalars
87
88 If passed an Graph::Easy::Edge object, moves the nodes involved in this
89 edge to the group.
90
91 if passed two nodes, adds these nodes to the graph (unless they already
92 exist) and adds an edge between these two nodes. See add_edge_once() to
93 avoid creating multiple edges.
94
95 This method works only on groups that are part of a graph.
96
97 Note that each object can only be a member of one group at a time, and
98 edges are automatically a member of a group if and only if both the
99 target and the destination node are a member of the same group.
100
101 add_group()
102 my $inner = $group->add_group('Group name');
103 my $nested = $group->add_group($group);
104
105 Add a group as subgroup to this group and returns this group.
106
107 del_member()
108 $group->del_member($node);
109 $group->del_member($group);
110
111 Delete the specified object from this group.
112
113 del_node()
114 $group->del_node($node);
115
116 Delete the specified node from this group.
117
118 del_edge()
119 $group->del_edge($edge);
120
121 Delete the specified edge from this group.
122
123 add_nodes()
124 $group->add_nodes($node, $node2, ... );
125
126 Add all the specified nodes to this group and returns them as a list.
127
128 nodes()
129 my @nodes = $group->nodes();
130
131 Returns a list of all node objects that belong to this group.
132
133 edges()
134 my @edges = $group->edges();
135
136 Returns a list of all edge objects that lead to or from this group.
137
138 Note: This does not return edges between nodes that are inside the
139 group, for this see edges_within().
140
141 edges_within()
142 my @edges_within = $group->edges_within();
143
144 Returns a list of all edge objects that are inside this group, in
145 arbitrary order. Edges are automatically considered inside a group if
146 their starting and ending node both are in the same group.
147
148 Note: This does not return edges between this group and other groups,
149 nor edges between this group and nodes outside this group, for this see
150 edges().
151
152 groups()
153 my @groups = $group->groups();
154
155 Returns the contained groups of this group as Graph::Easy::Group
156 objects, in arbitrary order.
157
158 groups_within()
159 # equivalent to $group->groups():
160 my @groups = $group->groups_within(); # all
161 my @toplevel_groups = $group->groups_within(0); # level 0 only
162
163 Return the groups that are inside this group, up to the specified
164 level, in arbitrary order.
165
166 The default level is -1, indicating no bounds and thus all contained
167 groups are returned.
168
169 A level of 0 means only the direct children, and hence only the
170 toplevel groups will be returned. A level 1 means the toplevel groups
171 and their toplevel children, and so on.
172
173 as_txt()
174 my $txt = $group->as_txt();
175
176 Returns the group as Graph::Easy textual description.
177
178 _find_label_cell()
179 $group->_find_label_cell();
180
181 Called by the layouter once for each group. Goes through all cells of
182 this group and finds one where to attach the label to. Internal usage
183 only.
184
185 get_attributes()
186 my $att = $object->get_attributes();
187
188 Return all effective attributes on this object (graph/node/group/edge)
189 as an anonymous hash ref. This respects inheritance and default values.
190
191 See also raw_attributes().
192
193 raw_attributes()
194 my $att = $object->get_attributes();
195
196 Return all set attributes on this object (graph/node/group/edge) as an
197 anonymous hash ref. This respects inheritance, but does not include
198 default values for unset attributes.
199
200 See also get_attributes().
201
202 attribute related methods
203 You can call all the various attribute related methods like
204 set_attribute(), get_attribute(), etc. on a group, too. For example:
205
206 $group->set_attribute('label', 'by train');
207 my $attr = $group->get_attributes();
208
209 You can find more documentation in Graph::Easy.
210
211 layout()
212 This routine should not be called on groups, it only works on the graph
213 itself.
214
215 shape()
216 my $shape = $group->shape();
217
218 Returns the shape of the group as string.
219
220 has_as_successor()
221 if ($group->has_as_successor($other))
222 {
223 ...
224 }
225
226 Returns true if $other (a node or group) is a successor of this group,
227 e.g. if there is an edge leading from this group to $other.
228
229 has_as_predecessor()
230 if ($group->has_as_predecessor($other))
231 {
232 ...
233 }
234
235 Returns true if the group has $other (a group or node) as predecessor,
236 that is if there is an edge leading from $other to this group.
237
238 root_node()
239 my $root = $group->root_node();
240
241 Return the root node as Graph::Easy::Node object, if it was set with
242 the 'root' attribute.
243
245 None by default.
246
248 Graph::Easy, Graph::Easy::Node, Graph::Easy::Manual.
249
251 Copyright (C) 2004 - 2008 by Tels <http://bloodgate.com>
252
253 See the LICENSE file for more details.
254
255
256
257perl v5.36.0 2023-02-02 Graph::Easy::Group(3)