Graph-Easy-0.75000755000764000764 012322253245 13702 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/TODO000444000764000764 2220612322253245 14551 0ustar00shlomifshlomif000000000000Graph-Easy ========== See Graph::Easy under LIMITATIONS for some hot topics. In addition: Important short-term TODO: * sort_sub is no longer used in Heap, but the Layouter uses it (find out why) * add for edges: + weight, + taillabel, taillink, tailtitle, headlabel, headlink, headtitle (or should these be startlabel, endlabel etc.?) + a method to set the direction to bidirectional/undirected * graphviz parsing roundtrip: + anon nodes lose their " " label + border-width is wrongly dropped + t/in/dot/9_edge_styles.dot is wrong + nodes with HTML-like labels lose their outer shape (the label itself can have a border on the TABLE, as well as the node outside as well as the individual TD elements) * Combining table cells goes wrong if there is a "hole" in a row of cells. We need to gather them with their coordinates and only combine cells that are next to each other. * setting "size" as class attribute doesn't work * setting "offset: -2,0;" causes problems for multi-row nodes because the offset is taken into effect before growing the node * [ a ] { label: a; } - remove the superflous label upon parsing * VCG/GDL + debug, finish the attribute remapping and add more test cases + implement support for \fn \fb \fI \fu \fB (bold underline etc.) + implement support for \f03 (colors) + implement support for \f- (hor line) + implement full color-remapping support (in both directions) + support subgraphs + support regions + support "nearedges:no" + generally handle all attribute names without "_", too + add support for "anchor" + GDL has portsharing only as attributes for the top graph, while in Graph::Easy this attribute can be set for each edge * layouter: + head/tail label/title and link are currently ignored + implement autosplit and autojoin for edges + don't build chains across groups + route multiple edges to/from a node in the proper order (shortest first) + edges without a specific start/end port should not block ports that are reserved for edges with a start/end port number + placing a node with an origin/offset inside another node results in endless loops as this condition is not checked and the placement of the grandparent node will thus always fail + last-resort placing of node should first try to place it more near to where the edge(s) are connected + allow end/start without specifying a side: "[ A ]--> { end: 0; } [ B ]" + t/in/5_joint.txt - the rendering order is C,A,B, so that the edge from A to Z comes before B to Z. And since the layouter "knows" it should not block the last port on B, it makes a bend. In this case, tho, it could just go along B, because the edges join each other anyway. + handle the special case where a node relative to another belongs to a different group than the parent/child Recursive layouter: + an empty group should consist of one cell (with the label and border) + lay out all groups first, then interlink them together * as_graphviz(): + links to/from empty groups fail + attributes should be always checked against the default attribute and output if necessary, to make setting attributes in classes work - currently doing edge { color: blue; } will be ignored + finish HTML-like labels (esp. with borders) These things seem to be actually not possible in Graphviz: + border-styles: wave, dot-dot-dash and dot-dash + edge-styles: wave, dot-dot-dash and dot-dash + text-styles: underline, overline, strike-through, italic and bold * Parser/Graphviz: + see also the section CAVEATS in Graph::Easy::Parser::Graphviz + style=filled should result in color => fillcolor, not color => fontcolor + parse input in Latin1 charset + parse "A|{ B|C }" (record shape with hor/ver nesting) + nodes with shape record, but an edge going from the aggregate node have the edges rendered in dot starting/ending *somewhere* on the node with the record shape. We always (re-)connect these edges to the first part of the autosplit node. Maybe we should balance them to use parts with as little edges as possible. (The entire feature is quite bogus, since it is not clear from the resulting image where the edge really starts/ends, at the aggregate node or at the specific part where the arrow/line ends up pointing to/from...:-/ + attributes unknown to dot, but valid under Graph::Easy (like "labelpos") cause an error instead of a warning + autosplit nodes (record) lose their attributes, these need to be carried over from the temp. node. + parse nested tables * as_ascii: + better support for different shapes (circle, box, polygon etc) + implement pod-formatted labels (*bold*, /italic/, _underline_, -l-i-n-e-t-h-r-o-u-g-h-, ~overline~, "code") + rendering of "(group)" is empty (need a recursive layouter for that, since the current layouter doesn't add any group cells if a group doesn't have any node or edge at all) * as_html: + fill on edges + v-- and --^ edges (mis-aligned arrows) (complete edge-arrow alignment in HTML) + shift arrows on hor edge end/starts (non-short) left/right, too + output of node-clusters is slightly wrong + there is no space between two nodes placed next (with filler cell) to each other. Make filler cells output a  ? + bidir. self-loops are rendered with only one arrow: [A] <--> [A] + define missing HTML edge pieces: CROSS sections with end/start points + define JOINTs with start/end pieces (6 for each joints, making 24 types) + implement HTML nodes as triangles, house, etc. using slanted edges * fix nesting with pod-formatted labels * edges between groups (ala "( 1 [A ]) -> ( 2 [B] )") or between a node and a group are missing in HTML, ASCII, BOXART and SVG. * It would be good if we could remove Node::Empty (it blocks a cell just to draw the right/bottom border pieces) (we might put these "invisible" nodes into a different "cells" field, which will be rendered, but not queried for path finding etc) Output: * selfloop edges should counter the general flow: Until done +------------+ v | +-------+ +----------------+ +-----+ | Start | --> | Main | --> | End | +-------+ +----------------+ +-----+ versus (loop still going left): Until done +------------+ v | +-----+ +----------------+ +-------+ | End | <-- | Main | <-- | Start | +-----+ +----------------+ +-------+ * support two different arrow shapes on bidirectional edges * as_txt(): + output of node clusters and node chains is not optimal + links between groups are missing * as_ascii() and others: grow cells around point-shaped nodes to intrude: ........................... : : | : : : : : | : : : : : v : : : ........................... : : : : : :-----> : * : <---- : : : : : : : ........................... (at least the edge pieces could omit their left/right spacer in ASCII) * as_boxart has some incorrect corner pieces: echo "[A|B|C||D]" | perl examples/as_boxart ┌───┐───┐───┐ │ A │ B │ C │ └───┘───┘───┘ │ D │ └───┘ echo "[A| |C||D| |E]" |perl examples/as_boxart ┌───┐ ┌───┐ │ A │ │ C │ └───┘ └───┘ │ │ │ │ │ D │ │ E │ └───┘ └───┘ Layout: * allow user to specify max graph width (in cells) to avoid overly wide graphs * auto-grow nodes to be multicelled depending on the dimensions of their label ("main page" gets 2x1, while "a \nb \nc \nd \ne \n" gets 1x2 cells) This currently causes problems and wierd layouts. * Use the seed to generate randomized layouts Rendering/Layout: * allow "align: center, middle|top|bottom" for vertical alignment of labels. * add padding attributes (especially usefull for HTML/SVG output) * add "shape" for groups: + rect + compact (the default, what it is now) + none (no background, no border, no label) * add attribute "opacity" to set alpha channel on entire objects more easily * add attribute "shrink" (yes, no) to nodes to make them as compact as poss. General: * allow multiple subclasses ala CSS: node.red { color: red; } node.green { color: green; } [ Red ] { class: red green; } -> [ Green ] { class: green red; } * Implement more class selectors: + #id (object with ID id) * implement pseudo-class "step" for animations (see POD) * add some possibility to have different fonts, sizes and colors inside one label ala (when labelstyle=pod): FG BG FS<2em|big text> Optimizing: * put framebuffer related routines into own package (Graph::Easy::As_ascii) to avoid the dilemma that we need them from both Node and Graph. Likewise, some routines used by objects (e.g. graph, node etc) should be in a super-package and inherited) * improve the after-layout optimizer * less memory: store border and edge styles as ints instead of "solid" etc Graph-Easy-0.75/LICENSE000444000764000764 4236712322253245 15100 0ustar00shlomifshlomif000000000000=pod =head1 LICENSES =head2 Colorschemes This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/). The following license applies to them: Apache-Style Software License for ColorBrewer Color Schemes v1.1 Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State University. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions as source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: This product includes color specifications and designs developed by Cynthia Brewer (http://colorbrewer.org/). Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 3. The name "ColorBrewer" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact Cynthia Brewer at cbrewer at psu dot edu. 4. Products derived from this software may not be called "ColorBrewer", nor may "ColorBrewer" appear in their name, without prior written permission of Cynthia Brewer. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CYNTHIA BREWER, MARK HARROWER, OR THE PENNSYLVANIA STATE UNIVERSITY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =head2 All other things included in this package To the rest of the code, documentation, scripts etc. the following license applies: GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS =cut Graph-Easy-0.75/MANIFEST000444000764000764 4055212322253245 15216 0ustar00shlomifshlomif000000000000bench/bench.pl bench/serie.pl bench/stress.pl bench/test.dot bench/test.txt bin/graph-easy Build.PL CHANGES examples/as_ascii examples/as_boxart examples/as_boxart_html examples/as_graphviz examples/as_html examples/as_svg examples/as_txt examples/ascii.pl examples/base.css examples/common.pl examples/complex.txt examples/fun.tpl examples/history.txt examples/html.pl examples/parse examples/syntax.pl examples/syntax.tpl examples/wikicrawl.pl inc/Test/Run/Builder.pm INSTALL lib/Graph/Easy.pm lib/Graph/Easy/As_ascii.pm lib/Graph/Easy/As_graphml.pm lib/Graph/Easy/As_graphviz.pm lib/Graph/Easy/As_txt.pm lib/Graph/Easy/As_vcg.pm lib/Graph/Easy/Attributes.pm lib/Graph/Easy/Base.pm lib/Graph/Easy/Edge.pm lib/Graph/Easy/Edge/Cell.pm lib/Graph/Easy/Group.pm lib/Graph/Easy/Group/Anon.pm lib/Graph/Easy/Group/Cell.pm lib/Graph/Easy/Layout.pm lib/Graph/Easy/Layout/Chain.pm lib/Graph/Easy/Layout/Force.pm lib/Graph/Easy/Layout/Grid.pm lib/Graph/Easy/Layout/Path.pm lib/Graph/Easy/Layout/Repair.pm lib/Graph/Easy/Layout/Scout.pm lib/Graph/Easy/Node.pm lib/Graph/Easy/Node/Anon.pm lib/Graph/Easy/Node/Cell.pm lib/Graph/Easy/Node/Empty.pm lib/Graph/Easy/Parser.pm lib/Graph/Easy/Parser/Graphviz.pm lib/Graph/Easy/Parser/VCG.pm lib/Graph/Easy/Util.pm LICENSE Makefile.PL MANIFEST This list of files MANIFEST.SKIP README scripts/bump-version-number.pl t/anon.t t/anon_group.t t/as_txt.t t/as_vcg.t t/ascii.t t/astar.t t/attributes.t t/base.t t/boxart.t t/cell.t t/chain.t t/class.t t/cluster.t t/copy.t t/custom.t t/delete.t t/dot/4_loose.dot t/drop.t t/easypm.t t/edge.t t/edge_cell.t t/fb.t t/fun/0000.txt t/fun/0010.txt t/fun/0011.txt t/fun/0020.txt t/fun/0030.txt t/fun/0131.txt t/fun/0200.txt t/fun/biofuel.txt t/fun/geek_dating.txt t/fun/overview.txt t/gdl.t t/graph-maker.t t/graph.t t/graphml.t t/graphml_yed.t t/graphviz.t t/group.t t/group/0010.txt t/group/0131.txt t/group/0230.txt t/gv.t t/heap.t t/html.t t/in/0_empty_group.txt t/in/0_empty_groups.txt t/in/10_repair.txt t/in/10borders.txt t/in/18_multiples.txt t/in/1_bidi_loop.txt t/in/1_empty_group.txt t/in/1_selfloop.txt t/in/1_selfloop_2.txt t/in/1_selfloop_label.txt t/in/1_undirected_loop.txt t/in/1node.txt t/in/25_autosplit_empty.txt t/in/2_autolabel.txt t/in/2_autosplit_empty.txt t/in/2_autosplit_escaped.txt t/in/2_bidi_astar.txt t/in/2_bidi_endpoint.txt t/in/2_class.txt t/in/2_classes.txt t/in/2_cluster.txt t/in/2_cluster_2.txt t/in/2_cluster_3.txt t/in/2_dot.txt t/in/2_dot_dot_dash.txt t/in/2_edges.txt t/in/2_flow.txt t/in/2_graph_label.txt t/in/2_group.txt t/in/2_group_labelpos.txt t/in/2_group_multicell.txt t/in/2_group_no_border.txt t/in/2_invisible_left.txt t/in/2_invisible_right.txt t/in/2_label.txt t/in/2_label_align.txt t/in/2_list_attr.txt t/in/2_long_labels.txt t/in/2_newlines.txt t/in/2_selfloop.txt t/in/2_selfloop_flow_down.txt t/in/2_split_bug.txt t/in/2_wrap.txt t/in/2_zeros.txt t/in/2nodes.txt t/in/3_autosplit_hang.txt t/in/3_bend_bug.txt t/in/3_cache_bug.txt t/in/3_cluster.txt t/in/3_colors.txt t/in/3_corrupt.txt t/in/3_edge_labels_from_class.txt t/in/3_edge_repair.txt t/in/3_edge_start.txt t/in/3_empty_group.txt t/in/3_flow.txt t/in/3_group_align_center.txt t/in/3_inherit.txt t/in/3_invisible_both.txt t/in/3_joining.txt t/in/3_joint.txt t/in/3_joint_short.txt t/in/3_list_attr.txt t/in/3_lists.txt t/in/3_nodes_5_edges.txt t/in/3_selfloop.txt t/in/3_selfloop_flip.txt t/in/3_selfloop_flow_down.txt t/in/3_selfloop_flow_left.txt t/in/3_selfloop_flow_up.txt t/in/3_split_attribute.txt t/in/3nodes.txt t/in/4_2x2nodes.txt t/in/4_att.txt t/in/4_autosplit_class.txt t/in/4_autosplit_empty.txt t/in/4_autosplit_offset.txt t/in/4_autosplit_shape.txt t/in/4_bend_bug.txt t/in/4_bug_basename.txt t/in/4_bug_joint_2.txt t/in/4_collapse.txt t/in/4_comma.txt t/in/4_cross.txt t/in/4_cross_inv.txt t/in/4_cross_split.txt t/in/4_cross_split_hor.txt t/in/4_edge_cross.txt t/in/4_edge_labels.txt t/in/4_edge_types.txt t/in/4_endless_loop.txt t/in/4_endless_loop_2.txt t/in/4_flow.txt t/in/4_flow_chain.txt t/in/4_invisible.txt t/in/4_joint.txt t/in/4_joint_bug_flags.txt t/in/4_list_attr.txt t/in/4_lists.txt t/in/4_minlen.txt t/in/4_near.txt t/in/4_node_edge.txt t/in/4_nodes_5_edges.txt t/in/4_nodes_6_edges.txt t/in/4_nodes_edge.txt t/in/4groups.txt t/in/4groups_class.txt t/in/4nodes.txt t/in/5_a-star_bug.txt t/in/5_arrow_styles.txt t/in/5_flow.txt t/in/5_group_repair.txt t/in/5_group_split.txt t/in/5_joint.txt t/in/5_joint_bug2.txt t/in/5_joint_label.txt t/in/5_long_edge_labels.txt t/in/5_multicell.txt t/in/5_offsets.txt t/in/5_offsets_2.txt t/in/5_rounded.txt t/in/5_tree_joint.txt t/in/6_autosplit_class.txt t/in/6_chain_10_edges.txt t/in/6_chained.txt t/in/6_empty_row.txt t/in/6_fanout.txt t/in/6_group_align.txt t/in/6_joint.txt t/in/6_multicell.txt t/in/6_multicell_offset.txt t/in/6_nested_groups.txt t/in/6_ranks.txt t/in/6_split_join_loop.txt t/in/7_cluster.txt t/in/7_star.txt t/in/7_tree.txt t/in/8_align.txt t/in/8_basename.txt t/in/8_chain.txt t/in/8_endless_loop.txt t/in/8_flow.txt t/in/8_invisible.txt t/in/8_labels.txt t/in/8_optimize_bend.txt t/in/8_points.txt t/in/9_chain.txt t/in/9_cross.txt t/in/9_flow_south.txt t/in/dot/0_empty.dot t/in/dot/10_numbers.dot t/in/dot/16_split.dot t/in/dot/2_bool.dot t/in/dot/2_comment_inside_attr.dot t/in/dot/2_graph_label_bottom.dot t/in/dot/2_group_labelloc.dot t/in/dot/2_ignore.dot t/in/dot/2_linewidth.dot t/in/dot/2_no_spaces.dot t/in/dot/2_nospace.dot t/in/dot/2_ports.dot t/in/dot/2_setlinewidth.dot t/in/dot/2_square_bracket_in_attr.dot t/in/dot/2_strict.dot t/in/dot/3_colors.dot t/in/dot/3_empty_record.dot t/in/dot/3_empty_record_LR.dot t/in/dot/3_graph_label_long.dot t/in/dot/3_ids.dot t/in/dot/3_invis.dot t/in/dot/3_node_label.dot t/in/dot/3_output_lone.dot t/in/dot/4_cluster_labeljust.dot t/in/dot/4_compass.dot t/in/dot/4_html_like.dot t/in/dot/4_record.dot t/in/dot/4_strings.dot t/in/dot/4_uppercase.dot t/in/dot/5_scope_atr.dot t/in/dot/5_scopes.dot t/in/dot/5_scopes_chain.dot t/in/dot/5_scopes_uni.dot t/in/dot/6_2_cluster.dot t/in/dot/6_comments.dot t/in/dot/6_group_align.dot t/in/dot/7_record.dot t/in/dot/9_back.dot t/in/dot/9_edge_styles.dot t/in/dot/9_stacking.dot t/in/dot/9_tree.dot t/in/gdl/1_color_code.gdl t/in/gdl/2_bottom_to_top.gdl t/in/gdl/2_left_to_right.gdl t/in/gdl/2_right_to_left.gdl t/in/gdl/2_top_to_bottom.gdl t/in/README t/layers.t t/layout.t t/layout_r.t t/layouter.t t/layouter/edge_label.txt t/layouter/layouter.txt t/layouter/layouter_chain.txt t/layouter/layouter_loop.txt t/layouter/multiples.txt t/layouter/state.txt t/messages.t t/nesting.t t/node.t t/node_mc.t t/out/0_empty_group.txt t/out/0_empty_groups.txt t/out/10_repair.txt t/out/10borders.txt t/out/18_multiples.txt t/out/1_bidi_loop.txt t/out/1_empty_group.txt t/out/1_selfloop.txt t/out/1_selfloop_2.txt t/out/1_selfloop_label.txt t/out/1_undirected_loop.txt t/out/1node.txt t/out/25_autosplit_empty.txt t/out/2_autolabel.txt t/out/2_autosplit_empty.txt t/out/2_autosplit_escaped.txt t/out/2_bidi_astar.txt t/out/2_bidi_endpoint.txt t/out/2_class.txt t/out/2_classes.txt t/out/2_cluster.txt t/out/2_cluster_2.txt t/out/2_cluster_3.txt t/out/2_dot.txt t/out/2_dot_dot_dash.txt t/out/2_edges.txt t/out/2_flow.txt t/out/2_graph_label.txt t/out/2_group.txt t/out/2_group_labelpos.txt t/out/2_group_multicell.txt t/out/2_group_no_border.txt t/out/2_invisible_left.txt t/out/2_invisible_right.txt t/out/2_label.txt t/out/2_label_align.txt t/out/2_list_attr.txt t/out/2_long_labels.txt t/out/2_newlines.txt t/out/2_nodes_inv.txt t/out/2_selfloop.txt t/out/2_selfloop_flow_down.txt t/out/2_split_bug.txt t/out/2_wrap.txt t/out/2_zeros.txt t/out/2nodes.txt t/out/3_autosplit_hang.txt t/out/3_bend_bug.txt t/out/3_cache_bug.txt t/out/3_cluster.txt t/out/3_colors.txt t/out/3_corrupt.txt t/out/3_edge_labels_from_class.txt t/out/3_edge_repair.txt t/out/3_edge_start.txt t/out/3_empty_group.txt t/out/3_flow.txt t/out/3_group_align_center.txt t/out/3_inherit.txt t/out/3_invisible_both.txt t/out/3_joining.txt t/out/3_joint.txt t/out/3_joint_short.txt t/out/3_list_attr.txt t/out/3_lists.txt t/out/3_nodes_5_edges.txt t/out/3_selfloop.txt t/out/3_selfloop_flip.txt t/out/3_selfloop_flow_down.txt t/out/3_selfloop_flow_left.txt t/out/3_selfloop_flow_up.txt t/out/3_split_attribute.txt t/out/3nodes.txt t/out/4_2x2nodes.txt t/out/4_att.txt t/out/4_autosplit_class.txt t/out/4_autosplit_empty.txt t/out/4_autosplit_offset.txt t/out/4_autosplit_shape.txt t/out/4_bend_bug.txt t/out/4_bug_basename.txt t/out/4_bug_joint_2.txt t/out/4_collapse.txt t/out/4_comma.txt t/out/4_cross.txt t/out/4_cross_inv.txt t/out/4_cross_split.txt t/out/4_cross_split_hor.txt t/out/4_edge_cross.txt t/out/4_edge_labels.txt t/out/4_edge_types.txt t/out/4_endless_loop.txt t/out/4_endless_loop_2.txt t/out/4_flow.txt t/out/4_flow_chain.txt t/out/4_invisible.txt t/out/4_joint.txt t/out/4_joint_bug_flags.txt t/out/4_list_attr.txt t/out/4_lists.txt t/out/4_minlen.txt t/out/4_near.txt t/out/4_node_edge.txt t/out/4_nodes_5_edges.txt t/out/4_nodes_6_edges.txt t/out/4_nodes_edge.txt t/out/4groups.txt t/out/4groups_class.txt t/out/4nodes.txt t/out/5_a-star_bug.txt t/out/5_arrow_styles.txt t/out/5_flow.txt t/out/5_group_repair.txt t/out/5_group_split.txt t/out/5_joint.txt t/out/5_joint_bug2.txt t/out/5_joint_label.txt t/out/5_long_edge_labels.txt t/out/5_multicell.txt t/out/5_offsets.txt t/out/5_offsets_2.txt t/out/5_rounded.txt t/out/5_tree_joint.txt t/out/6_autosplit_class.txt t/out/6_chain_10_edges.txt t/out/6_chained.txt t/out/6_empty_row.txt t/out/6_fanout.txt t/out/6_group_align.txt t/out/6_joint.txt t/out/6_multicell.txt t/out/6_multicell_offset.txt t/out/6_nested_groups.txt t/out/6_ranks.txt t/out/6_split_join_loop.txt t/out/7_cluster.txt t/out/7_star.txt t/out/7_tree.txt t/out/8_align.txt t/out/8_basename.txt t/out/8_chain.txt t/out/8_endless_loop.txt t/out/8_flow.txt t/out/8_invisible.txt t/out/8_labels.txt t/out/8_optimize_bend.txt t/out/8_points.txt t/out/9_chain.txt t/out/9_cross.txt t/out/9_flow_south.txt t/out/dot/0_empty.txt t/out/dot/10_numbers.txt t/out/dot/16_split.txt t/out/dot/2_bool.txt t/out/dot/2_comment_inside_attr.txt t/out/dot/2_graph_label_bottom.txt t/out/dot/2_group_labelloc.txt t/out/dot/2_ignore.txt t/out/dot/2_linewidth.txt t/out/dot/2_no_spaces.txt t/out/dot/2_nospace.txt t/out/dot/2_ports.txt t/out/dot/2_setlinewidth.txt t/out/dot/2_square_bracket_in_attr.txt t/out/dot/2_strict.txt t/out/dot/3_colors.txt t/out/dot/3_empty_record.txt t/out/dot/3_empty_record_LR.txt t/out/dot/3_graph_label_long.txt t/out/dot/3_ids.txt t/out/dot/3_invis.txt t/out/dot/3_node_label.txt t/out/dot/3_output_lone.txt t/out/dot/4_cluster_labeljust.txt t/out/dot/4_compass.txt t/out/dot/4_html_like.txt t/out/dot/4_loose.txt t/out/dot/4_record.txt t/out/dot/4_strings.txt t/out/dot/4_uppercase.txt t/out/dot/5_scope_atr.txt t/out/dot/5_scopes.txt t/out/dot/5_scopes_chain.txt t/out/dot/5_scopes_uni.txt t/out/dot/6_2_cluster.txt t/out/dot/6_comments.txt t/out/dot/6_group_align.txt t/out/dot/7_record.txt t/out/dot/9_back.txt t/out/dot/9_edge_styles.txt t/out/dot/9_stacking.txt t/out/dot/9_tree.txt t/out/drop_result.txt t/out/gdl/1_color_code.txt t/out/gdl/2_bottom_to_top.txt t/out/gdl/2_left_to_right.txt t/out/gdl/2_right_to_left.txt t/out/gdl/2_top_to_bottom.txt t/parse_att.t t/parse_edge.t t/parser.t t/parser_dot.t t/parser_dot_html.t t/path.t t/pod.t t/pod_cov.t t/re_layout.t t/split.t t/stress/0001.txt t/stress/0002.txt t/stress/0003.txt t/stress/0004.txt t/stress/0005.txt t/stress/0006.txt t/stress/0010.txt t/stress/0011.txt t/stress/0012.txt t/stress/0020.txt t/stress/anon.txt t/stress/drop.txt t/syntax/0000.txt t/syntax/0001.txt t/syntax/0002.txt t/syntax/0003.txt t/syntax/0010.txt t/syntax/0011.txt t/syntax/0020.txt t/syntax/0021.txt t/syntax/0030.txt t/syntax/0040.txt t/syntax/0050.txt t/syntax/0060.txt t/syntax/0061.txt t/syntax/0062.txt t/syntax/0063.txt t/syntax/0070.txt t/syntax/0080.txt t/syntax/0090.txt t/syntax/0100.txt t/syntax/0102.txt t/syntax/0110.txt t/syntax/0120.txt t/syntax/0130.txt t/syntax/0131.txt t/syntax/0140.txt t/syntax/0150.txt t/syntax/0160.txt t/syntax/0170.txt t/syntax/0171.txt t/syntax/0180.txt t/syntax/0190.txt t/syntax/0200.txt t/syntax/0210.txt t/syntax/0220.txt t/syntax/0230.txt t/syntax/0240.txt t/syntax/0250.txt t/syntax/0251.txt t/syntax/0252.txt t/syntax/0254.txt t/txt/0_empty_group.txt t/txt/0_empty_groups.txt t/txt/10_repair.txt t/txt/10borders.txt t/txt/18_multiples.txt t/txt/1_empty_group.txt t/txt/1_undirected_loop.txt t/txt/25_autosplit_empty.txt t/txt/2_autolabel.txt t/txt/2_autosplit_empty.txt t/txt/2_autosplit_escaped.txt t/txt/2_class.txt t/txt/2_classes.txt t/txt/2_cluster.txt t/txt/2_cluster_2.txt t/txt/2_cluster_3.txt t/txt/2_dot.txt t/txt/2_dot_dot_dash.txt t/txt/2_edges.txt t/txt/2_flow.txt t/txt/2_graph_label.txt t/txt/2_group.txt t/txt/2_group_labelpos.txt t/txt/2_group_multicell.txt t/txt/2_group_no_border.txt t/txt/2_invisible_left.txt t/txt/2_invisible_right.txt t/txt/2_label.txt t/txt/2_label_align.txt t/txt/2_list_attr.txt t/txt/2_long_labels.txt t/txt/2_newlines.txt t/txt/2_selfloop.txt t/txt/2_selfloop_flow_down.txt t/txt/2_split_bug.txt t/txt/2_wrap.txt t/txt/2_zeros.txt t/txt/2nodes.txt t/txt/3_autosplit_hang.txt t/txt/3_cache_bug.txt t/txt/3_cluster.txt t/txt/3_colors.txt t/txt/3_corrupt.txt t/txt/3_edge_labels_from_class.txt t/txt/3_edge_repair.txt t/txt/3_edge_start.txt t/txt/3_empty_group.txt t/txt/3_flow.txt t/txt/3_group_align_center.txt t/txt/3_inherit.txt t/txt/3_invisible_both.txt t/txt/3_joining.txt t/txt/3_joint.txt t/txt/3_joint_short.txt t/txt/3_list_attr.txt t/txt/3_lists.txt t/txt/3_nodes_5_edges.txt t/txt/3_selfloop.txt t/txt/3_selfloop_flip.txt t/txt/3_selfloop_flow_down.txt t/txt/3_selfloop_flow_left.txt t/txt/3_selfloop_flow_up.txt t/txt/3_split_attribute.txt t/txt/3nodes.txt t/txt/4_2x2nodes.txt t/txt/4_att.txt t/txt/4_autosplit_class.txt t/txt/4_autosplit_empty.txt t/txt/4_autosplit_offset.txt t/txt/4_autosplit_shape.txt t/txt/4_bug_basename.txt t/txt/4_bug_joint_2.txt t/txt/4_collapse.txt t/txt/4_comma.txt t/txt/4_cross.txt t/txt/4_cross_inv.txt t/txt/4_cross_split.txt t/txt/4_cross_split_hor.txt t/txt/4_edge_cross.txt t/txt/4_edge_labels.txt t/txt/4_edge_types.txt t/txt/4_endless_loop.txt t/txt/4_endless_loop_2.txt t/txt/4_flow.txt t/txt/4_flow_chain.txt t/txt/4_invisible.txt t/txt/4_joint.txt t/txt/4_joint_bug_flags.txt t/txt/4_list_attr.txt t/txt/4_lists.txt t/txt/4_minlen.txt t/txt/4_near.txt t/txt/4_node_edge.txt t/txt/4_nodes_5_edges.txt t/txt/4_nodes_6_edges.txt t/txt/4_nodes_edge.txt t/txt/4groups.txt t/txt/4groups_class.txt t/txt/4nodes.txt t/txt/5_arrow_styles.txt t/txt/5_flow.txt t/txt/5_group_repair.txt t/txt/5_group_split.txt t/txt/5_joint.txt t/txt/5_joint_bug2.txt t/txt/5_joint_label.txt t/txt/5_long_edge_labels.txt t/txt/5_multicell.txt t/txt/5_offsets.txt t/txt/5_offsets_2.txt t/txt/5_rounded.txt t/txt/5_tree_joint.txt t/txt/6_autosplit_class.txt t/txt/6_chain_10_edges.txt t/txt/6_chained.txt t/txt/6_empty_row.txt t/txt/6_fanout.txt t/txt/6_group_align.txt t/txt/6_joint.txt t/txt/6_multicell.txt t/txt/6_multicell_offset.txt t/txt/6_nested_groups.txt t/txt/6_ranks.txt t/txt/6_split_join_loop.txt t/txt/7_cluster.txt t/txt/7_star.txt t/txt/7_tree.txt t/txt/8_align.txt t/txt/8_basename.txt t/txt/8_chain.txt t/txt/8_endless_loop.txt t/txt/8_flow.txt t/txt/8_invisible.txt t/txt/8_labels.txt t/txt/8_optimize_bend.txt t/txt/8_points.txt t/txt/9_chain.txt t/txt/9_cross.txt t/txt/9_flow_south.txt t/txt/dot/0_empty.txt t/txt/dot/10_numbers.txt t/txt/dot/16_split.txt t/txt/dot/2_bool.txt t/txt/dot/2_comment_inside_attr.txt t/txt/dot/2_graph_label_bottom.txt t/txt/dot/2_group_labelloc.txt t/txt/dot/2_ignore.txt t/txt/dot/2_linewidth.txt t/txt/dot/2_no_spaces.txt t/txt/dot/2_nospace.txt t/txt/dot/2_ports.txt t/txt/dot/2_setlinewidth.txt t/txt/dot/2_square_bracket_in_attr.txt t/txt/dot/2_strict.txt t/txt/dot/3_colors.txt t/txt/dot/3_empty_record.txt t/txt/dot/3_empty_record_LR.txt t/txt/dot/3_graph_label_long.txt t/txt/dot/3_ids.txt t/txt/dot/3_invis.txt t/txt/dot/3_node_label.txt t/txt/dot/3_output_lone.txt t/txt/dot/4_cluster_labeljust.txt t/txt/dot/4_compass.txt t/txt/dot/4_html_like.txt t/txt/dot/4_loose.txt t/txt/dot/4_record.txt t/txt/dot/4_strings.txt t/txt/dot/4_uppercase.txt t/txt/dot/5_scope_atr.txt t/txt/dot/5_scopes.txt t/txt/dot/5_scopes_chain.txt t/txt/dot/5_scopes_uni.txt t/txt/dot/6_2_cluster.txt t/txt/dot/6_comments.txt t/txt/dot/6_group_align.txt t/txt/dot/7_record.txt t/txt/dot/9_back.txt t/txt/dot/9_edge_styles.txt t/txt/dot/9_stacking.txt t/txt/dot/9_tree.txt t/txt/gdl/1_color_code.txt t/txt/gdl/2_bottom_to_top.txt t/txt/gdl/2_left_to_right.txt t/txt/gdl/2_right_to_left.txt t/txt/gdl/2_top_to_bottom.txt t/use_class.t t/vcg.t TODO META.yml META.json Graph-Easy-0.75/Build.PL000444000764000764 220112322253245 15326 0ustar00shlomifshlomif000000000000# We need at least Perl 5.8.2 for proper Unicode support use 5.008002; use strict; use warnings; use File::Spec; use lib File::Spec->catdir(File::Spec->curdir(), "inc"); # recommends 'Graph::Easy::As_svg' => 0.23; use Test::Run::Builder; my $build = Test::Run::Builder->new( 'module_name' => "Graph::Easy", configure_requires => { 'Module::Build' => '0.36', }, build_requires => { 'Test::More' => '0.62', }, 'requires' => { 'Scalar::Util' => '1.13', 'perl' => '5.8.2', 'strict' => 0, 'warnings' => 0, 'vars' => 0, }, 'recommends' => { 'Graph::Easy::As_svg' => 0.23 }, 'license' => "gpl", meta_merge => { resources => { repository => "https://bitbucket.org/shlomif/perl-graph-easy", }, keywords => [ 'generation', 'graph', 'graphviz', 'text generation', 'text', ], }, create_makefile_pl => 'traditional', 'scripts' => [ 'bin/graph-easy', ], ); $build->create_build_script; Graph-Easy-0.75/Makefile.PL000444000764000764 105512322253245 16012 0ustar00shlomifshlomif000000000000# Note: this file was auto-generated by Module::Build::Compat version 0.4205 require 5.008002; use ExtUtils::MakeMaker; WriteMakefile ( 'NAME' => 'Graph::Easy', 'VERSION_FROM' => 'lib/Graph/Easy.pm', 'PREREQ_PM' => { 'Scalar::Util' => '1.13', 'Test::More' => '0.62', 'strict' => 0, 'vars' => 0, 'warnings' => 0 }, 'INSTALLDIRS' => 'site', 'EXE_FILES' => [ 'bin/graph-easy' ], 'PL_FILES' => {} ) ; Graph-Easy-0.75/META.yml000444000764000764 625312322253245 15316 0ustar00shlomifshlomif000000000000--- abstract: 'Convert or render graphs (as ASCII, HTML, SVG or via Graphviz)' author: - unknown build_requires: Test::More: '0.62' configure_requires: Module::Build: '0.36' dynamic_config: 1 generated_by: 'Module::Build version 0.4205, CPAN::Meta::Converter version 2.140640' keywords: - generation - graph - graphviz - 'text generation' - text license: gpl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Graph-Easy provides: Graph::Easy: file: lib/Graph/Easy.pm version: '0.75' Graph::Easy::As_ascii: file: lib/Graph/Easy/As_ascii.pm version: '0.75' Graph::Easy::As_graphml: file: lib/Graph/Easy/As_graphml.pm version: '0.75' Graph::Easy::As_graphviz: file: lib/Graph/Easy/As_graphviz.pm version: '0.75' Graph::Easy::As_txt: file: lib/Graph/Easy/As_txt.pm version: '0.75' Graph::Easy::As_vcg: file: lib/Graph/Easy/As_vcg.pm version: '0.75' Graph::Easy::Attributes: file: lib/Graph/Easy/Attributes.pm version: '0.75' Graph::Easy::Base: file: lib/Graph/Easy/Base.pm version: '0.75' Graph::Easy::Edge: file: lib/Graph/Easy/Edge.pm version: '0.75' Graph::Easy::Edge::Cell: file: lib/Graph/Easy/Edge/Cell.pm version: '0.75' Graph::Easy::Edge::Cell::Empty: file: lib/Graph/Easy/Edge/Cell.pm version: '0.75' Graph::Easy::Group: file: lib/Graph/Easy/Group.pm version: '0.75' Graph::Easy::Group::Anon: file: lib/Graph/Easy/Group/Anon.pm version: '0.75' Graph::Easy::Group::Cell: file: lib/Graph/Easy/Group/Cell.pm version: '0.75' Graph::Easy::Heap: file: lib/Graph/Easy/Layout/Scout.pm Graph::Easy::Layout: file: lib/Graph/Easy/Layout.pm version: '0.75' Graph::Easy::Layout::Chain: file: lib/Graph/Easy/Layout/Chain.pm version: '0.75' Graph::Easy::Layout::Force: file: lib/Graph/Easy/Layout/Force.pm version: '0.75' Graph::Easy::Layout::Grid: file: lib/Graph/Easy/Layout/Grid.pm version: '0.75' Graph::Easy::Layout::Path: file: lib/Graph/Easy/Layout/Path.pm version: '0.75' Graph::Easy::Layout::Repair: file: lib/Graph/Easy/Layout/Repair.pm version: '0.75' Graph::Easy::Layout::Scout: file: lib/Graph/Easy/Layout/Scout.pm version: '0.75' Graph::Easy::Node: file: lib/Graph/Easy/Node.pm version: '0.75' Graph::Easy::Node::Anon: file: lib/Graph/Easy/Node/Anon.pm version: '0.75' Graph::Easy::Node::Cell: file: lib/Graph/Easy/Node/Cell.pm version: '0.75' Graph::Easy::Node::Empty: file: lib/Graph/Easy/Node/Empty.pm version: '0.75' Graph::Easy::Parser: file: lib/Graph/Easy/Parser.pm version: '0.75' Graph::Easy::Parser::Graphviz: file: lib/Graph/Easy/Parser/Graphviz.pm version: '0.75' Graph::Easy::Parser::VCG: file: lib/Graph/Easy/Parser/VCG.pm version: '0.75' Graph::Easy::Util: file: lib/Graph/Easy/Util.pm recommends: Graph::Easy::As_svg: '0.23' requires: Scalar::Util: '1.13' perl: v5.8.2 strict: '0' vars: '0' warnings: '0' resources: license: http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt repository: https://bitbucket.org/shlomif/perl-graph-easy version: '0.75' Graph-Easy-0.75/INSTALL000444000764000764 314112322253245 15067 0ustar00shlomifshlomif000000000000 =pod =head1 Graph-Easy I This package was formerly known as Graph::Simple. =head1 INSTALLATION =head2 Linux, Unix, and similiar systems: To install this module type the following: Untar the package: tar -xzf Graph-Easy-x.xx.tar.gz where x.xx is the current revision. Then change into the directory: chdir Graph-Easy-x.xx/ Verify the package: cpansign --verify If the package fails to verify, do NOT run Makefile.pl nor install it and notify me immidiately. B<< YOUR SYSTEM MIGHT GET COMPROMISED! >> When the package verified okay, then proceed with creating the make file and running the testsuite: perl Makefile.PL make test If all tests pass, install the package as root user: sudo make install =head2 Windows You need two things under Windows: =over 2 =item Perl You can get it from ActiveState: http://activestate.com/store/activeperl/download =item nmake See here for how to get and install nmake: http://johnbokma.com/perl/make-for-windows.html =back After installing C and C, you can install Graph::Easy normally, just replacing C with C in the install instructions above: perl Makefile.PL nmake nmake test nmake install =head1 SEE ALSO You also might want to install the following packages from CPAN: Graph::Easy::As_svg provide SVG (Scalable Vector Graphics) output Graph::Easy::Manual comprehensive manual in POD and HTML =head1 AUTHOR Copyright (C) 2004 - 2007 by Tels L This library is free software; you can redistribute it and/or modify it under the same terms of the GPL version 2. =cut Graph-Easy-0.75/MANIFEST.SKIP000444000764000764 43212322253245 15714 0ustar00shlomifshlomif000000000000^Build\z ^_build/ ^blib.* ^fun\z ^gdl ^Graph-Easy-[0-9] ^Makefile.(old|bak)\z ^Makefile\z ^MYMETA\.yml\z ^MYMETA\.json\z ^[^\\\/]*\.pl pm_to_blib \.svn .*\.tar\.gz tmon.out ^todos[\\\/] ^[\w\._-]+\.(html|txt|png|gif|dot|pl|svg|old|bak|org|vcg|gdl|ps|graphml) ^wikicrawl ~\z .*\.swp Graph-Easy-0.75/META.json000444000764000764 1134612322253245 15505 0ustar00shlomifshlomif000000000000{ "abstract" : "Convert or render graphs (as ASCII, HTML, SVG or via Graphviz)", "author" : [], "dynamic_config" : 1, "generated_by" : "Module::Build version 0.4205", "keywords" : [ "generation", "graph", "graphviz", "text generation", "text" ], "license" : [ "gpl_1" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "Graph-Easy", "prereqs" : { "build" : { "requires" : { "Test::More" : "0.62" } }, "configure" : { "requires" : { "Module::Build" : "0.36" } }, "runtime" : { "recommends" : { "Graph::Easy::As_svg" : "0.23" }, "requires" : { "Scalar::Util" : "1.13", "perl" : "v5.8.2", "strict" : "0", "vars" : "0", "warnings" : "0" } } }, "provides" : { "Graph::Easy" : { "file" : "lib/Graph/Easy.pm", "version" : "0.75" }, "Graph::Easy::As_ascii" : { "file" : "lib/Graph/Easy/As_ascii.pm", "version" : "0.75" }, "Graph::Easy::As_graphml" : { "file" : "lib/Graph/Easy/As_graphml.pm", "version" : "0.75" }, "Graph::Easy::As_graphviz" : { "file" : "lib/Graph/Easy/As_graphviz.pm", "version" : "0.75" }, "Graph::Easy::As_txt" : { "file" : "lib/Graph/Easy/As_txt.pm", "version" : "0.75" }, "Graph::Easy::As_vcg" : { "file" : "lib/Graph/Easy/As_vcg.pm", "version" : "0.75" }, "Graph::Easy::Attributes" : { "file" : "lib/Graph/Easy/Attributes.pm", "version" : "0.75" }, "Graph::Easy::Base" : { "file" : "lib/Graph/Easy/Base.pm", "version" : "0.75" }, "Graph::Easy::Edge" : { "file" : "lib/Graph/Easy/Edge.pm", "version" : "0.75" }, "Graph::Easy::Edge::Cell" : { "file" : "lib/Graph/Easy/Edge/Cell.pm", "version" : "0.75" }, "Graph::Easy::Edge::Cell::Empty" : { "file" : "lib/Graph/Easy/Edge/Cell.pm", "version" : "0.75" }, "Graph::Easy::Group" : { "file" : "lib/Graph/Easy/Group.pm", "version" : "0.75" }, "Graph::Easy::Group::Anon" : { "file" : "lib/Graph/Easy/Group/Anon.pm", "version" : "0.75" }, "Graph::Easy::Group::Cell" : { "file" : "lib/Graph/Easy/Group/Cell.pm", "version" : "0.75" }, "Graph::Easy::Heap" : { "file" : "lib/Graph/Easy/Layout/Scout.pm" }, "Graph::Easy::Layout" : { "file" : "lib/Graph/Easy/Layout.pm", "version" : "0.75" }, "Graph::Easy::Layout::Chain" : { "file" : "lib/Graph/Easy/Layout/Chain.pm", "version" : "0.75" }, "Graph::Easy::Layout::Force" : { "file" : "lib/Graph/Easy/Layout/Force.pm", "version" : "0.75" }, "Graph::Easy::Layout::Grid" : { "file" : "lib/Graph/Easy/Layout/Grid.pm", "version" : "0.75" }, "Graph::Easy::Layout::Path" : { "file" : "lib/Graph/Easy/Layout/Path.pm", "version" : "0.75" }, "Graph::Easy::Layout::Repair" : { "file" : "lib/Graph/Easy/Layout/Repair.pm", "version" : "0.75" }, "Graph::Easy::Layout::Scout" : { "file" : "lib/Graph/Easy/Layout/Scout.pm", "version" : "0.75" }, "Graph::Easy::Node" : { "file" : "lib/Graph/Easy/Node.pm", "version" : "0.75" }, "Graph::Easy::Node::Anon" : { "file" : "lib/Graph/Easy/Node/Anon.pm", "version" : "0.75" }, "Graph::Easy::Node::Cell" : { "file" : "lib/Graph/Easy/Node/Cell.pm", "version" : "0.75" }, "Graph::Easy::Node::Empty" : { "file" : "lib/Graph/Easy/Node/Empty.pm", "version" : "0.75" }, "Graph::Easy::Parser" : { "file" : "lib/Graph/Easy/Parser.pm", "version" : "0.75" }, "Graph::Easy::Parser::Graphviz" : { "file" : "lib/Graph/Easy/Parser/Graphviz.pm", "version" : "0.75" }, "Graph::Easy::Parser::VCG" : { "file" : "lib/Graph/Easy/Parser/VCG.pm", "version" : "0.75" }, "Graph::Easy::Util" : { "file" : "lib/Graph/Easy/Util.pm" } }, "release_status" : "stable", "resources" : { "license" : [ "http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt" ], "repository" : { "url" : "https://bitbucket.org/shlomif/perl-graph-easy" } }, "version" : "0.75" } Graph-Easy-0.75/README000444000764000764 413012322253245 14715 0ustar00shlomifshlomif000000000000Graph-Easy ========== This module lets you create graphs (nodes/vertices connected by edges/arcs, not pie charts!) and then lay them out on a flat surface. Once laid out, the graph can be converted into various output formats like ASCII art, HTML or SVG. You can also output the graph in graphviz format and let dot/neato/circo etc. do the layout for you. Graphs can be either generated by Perl code, parsed from a simple text format that is human readable and maintainable, or parsed from Graphviz code. For instance this input: [ Bonn ] -> [ Berlin ] [ Berlin ] -> [ Frankfurt ] { border: 1px dotted black; } [ Frankfurt ] -> [ Dresden ] [ Berlin ] ..> [ Potsdam ] [ Potsdam ] => [ Cottbus ] would be rendered in ASCII as: +------+ +--------+ ............. +---------+ | Bonn | --> | Berlin | --> : Frankfurt : --> | Dresden | +------+ +--------+ ............. +---------+ : : v +---------+ +---------+ | Potsdam | ==> | Cottbus | +---------+ +---------+ The HTML or SVG output would look similiar except be more pretty :o) Manual ====== The manual is contained in the extra package Graph::Easy::Manual, which also contains a Pod2HTML converter, that can handle embedded graphs in POD files. You can also view the manual online at: http://bloodgate.com/perl/graph/manual/ Many more examples and documentation, especially on integrating this into a Mediawiki installation, can be found at: http://bloodgate.com/perl/graph/ Have fun! SVG Output ========== You also might want to install Graph::Easy::As_svg from CPAN, it provides you with the ability to generate SVG (Scalable Vector Graphics) files. Installation ============ See INSTALL on how to install this module. AUTHOR ====== Copyright (C) 2004 - 2008 by Tels http://bloodgate.com/ This library is free software; you can redistribute it and/or modify it under the same terms of the GPL version 2. This module was formerly known as Graph-Simple, but has been renamed because it can also easily create non-simple graphs. Graph-Easy-0.75/CHANGES000444000764000764 31012112322253245 15070 0ustar00shlomifshlomif000000000000Revision history for Graph::Easy (formerly known as Graph::Simple): 2014-04-12 v0.75 Shlomi Fish 2938 tests * Remove "./Build" from the distribution (CPANTS error). * Got rid of an implicit dependency on IO::All for the tests (CPANTS error). - it was not a real dependency. * Got rid of no_index so we will have provides (CPANTS error). - the no_index was a leftover from Module-Install and did not contain anything important of no indexing. 2014-04-10 v0.74 Shlomi Fish 2938 tests * Remove leftover files from the MANIFEST (CPANTS error). * All the versions of the .pm files are now consistent (CPANTS error). - Add scripts/bump-version-number.pl to facilitate that. * Add "use warnings;" to all modules (CPANTS error). * Convert to Build.PL and Module::Build for "provides" (CPANTS error). 2013-05-25 v0.73 Shlomi Fish 2938 tests * Got the tests to pass on perl-5.18.0 (and hopefully above). - Done by making sure hash traversals (each/keys/values) are only done by lexicographical order of the keys. 2012-10-20 v0.72 Shlomi Fish 2938 tests * Update Module-Install from version 1.04 (which is broken on perl-5.16.x). - http://weblog.bulknews.net/post/33907905561/do-not-ship-modules-with-module-install-1-04 - Thanks to MIYAGAWA for the report. 2011-12-23 v0.71 Shlomi Fish 2938 tests * Fix the SIGNATURE file. - https://rt.cpan.org/Ticket/Display.html?id=58892 - Thanks to ANDK for reporting it. 2010-11-05 v0.70 Shlomi Fish * Fix "GraphML: end tag of nodes before definition of their attributes" - https://rt.cpan.org/Public/Bug/Display.html?id=46992 - Thanks to a patch by ironcamel ( https://github.com/ironcamel ) * Got rid of a warning in recent Perls for doing tr/\t/ /d due to /d being usless in that case. 2010-07-01 v0.69 Shlomi Fish 2938 tests * Add support for GraphViz subgraphs. - Thanks to a patch by Yves Agostini ( http://www.crium.univ-metz.fr/ ) 2010-06-28 v0.68 Shlomi Fish 2933 tests * Add .*\.swp to the MANIFEST.SKIP in order to skip vim temporary files. * Fixed the signature file. - https://rt.cpan.org/Ticket/Display.html?id=58892 - Thanks to Andreas Koenig (ANDK). 2010-05-28 v0.67 Shlomi Fish 2933 tests * Fix the as_vcg() vs. as_vcg_file() test that sometimes failed due to timestamp offsets in both files. - See: http://www.cpantesters.org/cpan/report/07338331-b19f-3f77-b713-d32bba55d77f 2010-05-23 v0.66 Shlomi Fish 2933 tests * Removed the leftover .orig files by request of a Debian maintainer (by private E-mail). 2010-05-23 v0.65 Shlomi Fish 2933 tests * Partial fix to bug #27663 + Fix the name of the function in the code excerpt of as_graphviz() + Mark as_graphviz() and as_graphviz() as for internal use. + Make sure to indicate that one needs to load Graph::Easy::As_graphviz beforehand. * Fix for https://rt.cpan.org/Ticket/Display.html?id=48657 + Specify what the default timeout is in the POD of Graph::Easy. + Thanks to MTHURN for reporting it. * Fix for https://rt.cpan.org/Ticket/Display.html?id=51820 + Changed C<..> to C<< ... >>> for correct POD rendering. * Applied patch from https://rt.cpan.org/Ticket/Display.html?id=57777 + Spelling errors. 2008-08-10 v0.64 Tels 2933 tests * fix bug #37534 - overwrites input without warning (Thanx C. Khan!) * fix bug #37566 - Graphviz (v2.16) output broken (Thanx C. Khan!) * fix bug #37842 - typo in README (Thanx Craig Sparks!) * fix add_nodes(), would return instead of skipping existing nodes * as_graphml: + fix #36533: GraphML end tag (Thanx Thiago M. Venancio!) + fix indent and endtag of groups (Thanx Thiago M. Venancio!) + properly escape special characters in group/graph names + add format => 'yED' to output as yED compatible (Thanx to Thiago M. Venancio for requesting and testing this!) * Groups: + nodes added to the group are also put into the same graph as the group + add_node('A') etc. (add with non-object) works now + add_node('A') returns node, not group + add_edge('A','B) and add_edge_once('A','B') work now * Graph::Easy: + add compatibility methods to mimick the interface of Graph: add_edges, add_cycle, add_path, add_vertices, add_vertex, set_vertex_attribute, and has_edge (Thanx to Matt Spear for requesting this!) 2008-05-22 v0.63 Tels 2895 tests * require Perl v5.8.2 (it fails badly on 5.8.1; due to hash order?) * add examples/wikicrawl.pl - thanx integral from forum.xkcd.com! * Parser/Graphviz: + HTML-like attributes can also appear in lower-case + generate the base name for HTML-like nodes from the actual name, this allows things like "11 [ label=<<..>> ]\n 11:e -> 1" to work + try to handle tags inside HTML-like labels * graph-easy: + change default timeout to 240 seconds + --version also prints Perl and Graph::Easy::As_svg versions + handle UTF-8 output when piping to graphviz renders * Base: + fix main_class() (caused lost group attributes in graphviz output) * Group: + class for inner cells is "group gi", not "groupgi" + adding a node to a group via add_node() or add_member() also sets the "group" attribute on that node + add_nodes() correctly registers nodes with the group * Node: + add get_raw_attribute() as alias for raw_attribute() * Attributes: also accept "auto-title", "auto-link" and "auto-label" * _class_styles: fix graph class attribute output for SVG * Layout: + A*: when we can't find a path, warn and continue gracefully + A*: raise max. number of tries from 50_000 to 2_000_000 + make Heap do binary search upon insert, instead of sort upon extract, this makes complex layouts much faster because the A* algorithm does no longer spent 90% of its time to manage the heap + streamline _astar_distance() to be 50% faster * as_graphviz(): + quote "name":"portname" for HTML-like nodes + properly output arrows on bidirectional edges that join/split (aka no more arrow heads on the invisible helper node) + put invisible helper nodes for join/split edges into the subcluster if both from/to are in the same cluster + fix output of spacer TDs in HTML-like labels for relative nodes 2008-03-30 v0.62 Tels 2813 tests * graph-easy: + better error handling, now dies on errors in the input text * added the following options to graph-easy: + --jpg, --ps, --bmp etc.: support a lot more formats for dot + --renderer: set the program to render PNG, JPG etc. output (to change "dot" to "neato" etc.) * Parser: + fix autosplitting nodes with "empty" parts like "| |" (was also broken in DOT parsing as the same code was used) + don't remove spaces at front of lines to support "\n || B" * Parser/Graphviz: + detect missing "}" at end of file + bail out if "digraph {" is found twice in the input + better parsing of attributes in scopes (inside "{" and "}") + support ".7" (no leading zero) in color notation + fix parsing of shape=record labels like "{A||B}" * Parser/VCG (also for GDL): + "layout_segments" is actually "linear_segments" + support "status" attribute for subgraphs + support "textmode" attribute for nodes + support "orientation" attribute on graphs + support "invisible" on nodes + handle "colorentry 7: ..." (more than one space) + port_sharing, inport_sharing and outport_sharing => autojoin/autosplit + fix attribute remapping to go through custom filter + strip out \\f- (hor line), \\f01 (colors) for now until we can support them for real + improve detection of multi-line labels + better support for node shapes + handle both "0x0c" (aka ^L) and \\f in input * as_vcg()/as_gdl(): + remap flow to orientation for graph flows + remap align to textmode + output class attributes for edges/nodes + support "invisible" nodes * as_graphviz(): + handle "align" attribute on nodes properly * unify error handling for unknown attributes * remove Build.PL support (updated Module::Build to 0.71) 2008-03-16 v0.61 Tels 2778 tests * graph-easy: + reject unknown input format specifications + support --from_vcg and --from_gdl, too * various POD fixes * relax rules for custom attributes by also allowing digits anywhere * fix bug #32206: Fix for as_vcg.t test failures when disk io is very slow * fix bug #31958: Missing methods in Edge class + add as_ascii() (and simplify it) + add as_txt() stub (require Graph::Easy::As_txt and call _as_txt) + add nodes() + remove the to_nodes() and from_nodes() POD entries * disallow border attributes on edges (it was ignored in all output formats) * make it possible to call Graph::Easy->new('[A]->[B]'); * add: + $graph->copy() - clone the entire graph + get_custom_attributes() + merge_nodes() takes a third parameter: the string to join the label of the second node to the label of the first node (thanx Brad Bowman!) * Parser/Graphviz: + handle "border: 0" + handle graph attributes: maxiter, minquit and pagedir + handle edge attribute: weight + better parsing of attributes on HTML-like labels (no longer generates bogus attribute names like "balign" and warns about unknown ones) + convert
in HTML-like labels to line breaks + re-connect edges between nodes with HTML-like labels to the generated autosplit parts (formerly, these edges were simply lost) * Parser/VGC: + attributes like "node.color:" are valid for all following nodes only * as_graphviz(): + suppress style and peripheries for borderwidth == 0 2007-11-19 v0.60 Tels 2700 tests * Base: + prepend 'Warning: ' to warnings * Graph::Easy: + add add_anon_node() + _class_styles(): allow extra class names in overlay (for SVG) + fix typo in SYNOPSIS (thanx skim!) * Graph::Easy::Node: + set attributes for origin/offset properly, too, so that get_attribute() works for these (Thanx Amanda B Hickman!) + allow numbers on custom attributes so "infoname1" in VCG works correctly * Parser: + warn on nodes with offset, but no origin (Thanx Amanda B Hickman!) * Parser/VCG: + allow "layoutalgorithm" (Thanx Sid Touati for the report!) + handle 'classname 1: "foo"' correctly (Thanx Sid Touati again!) * Layout: + remove one call to ->attribute() per Node by re-using the shape + fix A* boundaries cache: create it if it doesn't exist yet, otherwise edges went missing (see t/in/3_cache_bug.txt for an example) * as_vcg: + output classname attributes correctly (Thanx Sid Touati!) * as_graphviz: + remap "\c" to "\n" since graphviz doesn't know "\c" * Tests: + fix test failures in t/graphml.t when second changes while comparing as_graphml() and as_graphml_file() output + fix test failures with Pod-Coverage v0.19 - a few alias routines in Graph::Easy::Node need to have POD replicated from Graph::Easy + require Pod-Coverage v0.19 2007-09-10 v0.59 Tels 2686 tests * fix test failures in t/graphml.t (oops) 2007-09-09 v0.58 Tels 2686 tests * add Graph/Easy/As_graphml.pm - output graph as GraphML text * bin/graph-easy: + make "graph-easy --png input.txt output.png" work + fix POD structure for example outputs + expand section about conversion limits and problems * Parser: speed up all parsers by: + making the regexp for empty/commented lines simpler and by combining two regexps to replace/remove tabs and 0x0d into one tr// (~ 5%) + cache regexps needed for _parse_attributes() as these calls can be expensive and occur frequently per graph (~ 10% for Graphviz) * Parser/VCG: + about 3x as fast by swapping out the matchstack while we are in matching multi-line labels. The speedup depends on how many lines are in multi-line labels compared to the rest of the graph. * Graph: + fix rename_node() to work with plain node names * Graph::Easy and Graph::Easy::Group: + add: root_node(), type() * Base: + add: + catch_messages(), catch_errors(), catch_warnings(), errors(), warnings() * Layout: + add a stub for force-directed layouts (doesn't work yet) + fix bug #29039: hang in path-straighten code (Thanx mperilstein!) (also fixes the hang reported in bug #27759) * as_html: + fix undef warning in Graph/Easy.pm line 1038 2007-08-12 v0.57 Tels 2673 tests * bin/graph-easy: + don't die on non-fatal parser errors (good for unknown dot attributes) + warn if both --as=txt and --as_foo or more than one --as_foo are given + add --stats option: output various statistics about the input graph * Graph: + add rename_group() + rename_node() turns anon nodes into normal nodes (with a name) * Graph/Group: + add a groups_within() method that returns recursively the contained groups up to the specified level (-1 - infinite, 0 => level 0 etc.) * Group: + fix add_group() when called with a scalar as group name * Parser: + parse nested groups: "( Outer ( Inner [ A ] ) [ B ] )" * Parser/VCG: + support for multi-line labels (Thanx Ohad Ben-Cohen for the testcase) + work around faulty inputs with unescaped double quotes in labels (gconv, I am looking at you!) (Thanx Ohad Ben-Cohen for the testcase) + speed up parsing of large graphs by ca. 50% by simplifying regexps + add support for \fi065 (ISO-8859-1 characters) + support subgraphs (aka nested graphs) * Parser/Graphviz: + speed up parsing of large graphs by ca. 45% by direct attribute lookup * as_vcg: + generate classname attribute for edge classes if nec. * Attributes: !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ATTENTION !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! The attribute "pointstyle" has been redefined as to make it consistent with "arrowshape" and "arrowstyle". The attribute "pointstyle" is now one of "closed", or "filled" and the shape can be set with "pointshape" as "diamond", "cross" etc. !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ATTENTION !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * Misc: + fix SYNOPSIS (Thanx Donuvi Tanoga!) 2007-07-22 v0.56 Tels 2650 tests * bin/graph-easy: + add --version * Parser/VCG: + support more attributes, remap unknown/unsupported ones to "x-vcg-foo" * Parser/Graphviz: + allow style="setlinewidth(0.1)" (fractions) in attributes + translate unknown or unsupported attributes into "x-dot-foo" style * the following methods in Groups/Edges are only usefull during the layout phase and are now internal and thus were renamed with an underscore in front of them: + add_cell, del_cell, clear_cells, cells * POD: + fix a few typos and duplicate some documentation into the various POD files, as well as add some more doc * Graph::Easy: + add add_nodes(), is_simple(), is_directed(), is_undirected(), edges_within() * Graph::Easy::Group: + fix add_nodes(), edges() + add edges_within(), has_as_predecessor(), has_as_successor() * Graph::Easy::Node: + add has_as_predecessor(), has_as_successor() * Misc: + save a bit memory by not setting default values for edges and nodes * Attributes: + support "type" for graphs (directed or undirected) + support custom attributes named like "x-foo", "x-bar-baz", "x-f-o-o" * as_graphviz: + use "--" for edges for undirected graphs + translate "x-dot-foo" attributes back to "foo", making it round-trip * as_vcg: + translate "x-vcg-foo" attributes back to "foo", making it round-trip + first stab at attribute remapping 2007-05-05 v0.55 Tels 2433 tests * bin/graph-easy: + as_png and as=png + add support for VCG/GDL + do not clobber output file if we cannot read input file + make --help work under older Pod::Usage versions + make "echo '[A]' | graph-easy" work while "graph-easy" outputs help + optimize startup to be about 10% faster if we don't have arguments * add support for VCG/GDL (Parser/VCG) * remove a few stray "use utf8;" in files with no high-bit bytes (Thanx Juerd!) * add rename_node() * Attributes: + an unset attribute in a subclass will cause the attribute to be looked up in the base class, and not just use blindly the default attribute from the base class: node { align: left; } [ L ] { class: foo; } # L is be left-aligned and not center! Due to the way CSS inheritance works and HTML+CSS is emitted, this bug showed only up in as_ascii() + properly support \N, \E, \G, \T, and \H in labels, links and titles + support \L links and titles * as_txt(): + quote characters like '[' for autosplit nodes, too + remove spaces inside autosplit nodes to normalize their text output: "[ Some || test | B ]" becomes "[ Some || test | B ]" + attributes for autosplit nodes were not properly output, especially if they were something like "color|" or "red|blue" * as_html(): + fix undirected edges (unitialized warning and edges sticking too close to the start node) + adjust alignment of the edge arrows by using more relative positioning + make the spacing of edges smaller, so they don't inflate node sizes * as_graphviz(): + fix fillcolor on nodes with shape plaintext + adjust the linewidth style to not be that overly huge + handle fill for nodes with subclasses correctly * Parser: + support "\]" in node names like so: "[ char\[\] ]" + attributes ending in '|' like "color|;" on autosplit nodes were ignored + autosplit nodes with the attributes following on the next line had any set basename attribute ignored (see t/in/4_bug_basename.txt) * Parser/Graphviz: + a lone "node:port" did not result in "node" to be created + set the graph name as the default graph title + handle a semicolon after "}" for subgraphs and graphs + handle the variant "graph { A--B }" + support the "output" attribute (for the Mediawiki integration) + adjust for the changed linewidth styles + remove the replacement of \E, \N, \T, \H and \G now that Graph::Easy knows these, too. Allows proper roundtrips of these escapes. * as_html()/as_svg: + setting a colorscheme on the graph and some class color attribute to the color "1" didn't result in the real color, but in "color: 1;" in the generated CSS code * Layouter: + fix endless loop in the bend-optimizer due to a swapped X and Y 2007-03-18 v0.54 Tels 2349 tests * add some examples to bin/graph-easy * fix borders on rounded/circle/ellipse nodes outside groups * fix fill on edge class * Parser/Graphviz: + handle multi-line comments inside attributes * handle an unquoted/unescaped "]" inside (HTML-like) attributes * handle an multi-line comment followed by space as the last part * Attributes: add labelpos (top/bottom) for groups * as_graphviz(): + reinsert the labels on edges 2007-02-19 v0.53 Tels 2342 tests * add --timeout=N to graph-easy and set the default to 120 seconds * handle "\|" inside nodes properly: "[ A \| B | C ]" works now * add MANIFEST.SKIP to enable "make manifest" * remove todos/ * add attribute "comment" for graphs, edges, nodes and groups * add support for hsv() and hsl() colors * add support for transparency (alpha channel) in colors * colors are stored as input (but normalized), fixes the problem that hsv() colors in graphviz were converted to RGB and thus lost precision * add attribute "arrowshape" for edges, allowing triangle, dot, box, line, inv, cross, x and diamond shaped arrows * Base: setting a new subclass did not invalidate the cache * as_html: + use again "position: relative" to shift arrows to the proper place (needs to be done for for most edge parts, tho) + implement a few more missing edge pieces * parser/Graphviz: + groups have slightly different defaults in DOT, so set these: (Thanx Michael Goldshteyn!) + transparent background + center aligned label * as_graphviz: + don't generate needless label attributes + compound=true is the default, so we can omit it + do not needless quote "#" characters + handle fractional fontsizes better, and do not output wrongly "11px" + output correct "labeljust" for groups (Thanx Michael Goldshteyn!) + HSV colors are now preserved (formerly they were converted to RGB) + the alpha channel on colors is no preserved if possible * as_html/as_box_art: + use LOGICAL AND and LOGICAL OR for open up/down arrows + replace open arrows with nicer looking Unicode chars + nodes with shape circle, rounded or ellipse are now rendered correctly when having a different background color (or when inside a group) + don't generate labels for nodes with empty labels (like anon nodes) + default fill is white, so set it in CSS for pages with some backdrop * Graph::Easy objects are now about 4K smaller (min. size was 6.5K on 64bit) 2007-01-28 v0.52 Tels 2305 tests * format INSTALL in POD and add notes about Windows * Group::Cell: cache attributes to avoid overly many attribute() calls * attribute(): do not call class() unless neccessary * Layouter: + cache the boundaries of the cells array for A*, avoid excessive recalculaion of the used area (make big layouts about 30% faster) + fix _optimize_layout() for reversed edges, that finally fixes the garbled HTML output * as_html(): + "vertical-align: center" must be "vertical-align: middle" - argh! + better alignment of arrows on some edge/end pieces + insert missing style="..." in all edge pieces (fixes missing group backgrounds on some edge cells) * remove dead code in Graph::Easy::Node::Empty 2007-01-05 v0.51 Tels 2305 tests * bin/graph-easy: add --parse option * Parser: + fix bug #24133: empty groups were wrongly put on the group stack, thus aquiring some of the following nodes (Thanx to Paul Biggar!) + allow class selector ".foo { ... }" - set attributes on all objects (edges/nodes/groups) of subclass "foo" + allow lists of class selectors like ".foo, node.bar, group { ... }" * as_html: + fix joint W_N_S (Thanx Florian Lindner!) * as_graphviz: + fix wrong output of group fill colors and style (Thanx Paul Biggar!) + workaround the inability of DOT to have attributes for all subclusters * attributes: + setting the attribute "class" on a primary class puts all objects without a specifically set class attributes into that class, so: node { class: red; } node.red { color: green; } colors all nodes without a specific subclass red. 2006-12-17 v0.50 Tels 2273 tests * added bin/graph-easy and make the build process install it into the system This adds the ability to simple run "graph-easy" from anywhere * attributes: + textwrap: the default is inherit, to make setting it on a graph work + allow "textwrap: N;" to wrap text automatically at N characters * Base: + add error_as_html() - return error message as escaped HTML * Group: + add add_nodes() - add multiple nodes to the group * Graph: + add flip_edges($A,$B); - transpose all edges going from A to B + add flow() - return the flow of the graph in degrees * Node: + edges() returns all the edges at that node; fix doc for it + rename grow() to _grow() to make clear it is a private method * Edge: + add edge_flow() - return flow of this edge * modifying an edge via the following methods did not invalidate the layout: + flip(), bidirectional(), undirected(), start_at(), end_at() * add a dummy shape() method for groups and group cells * as_graphviz(): + don't output autolabel, rows, columns or group attributes * as_html(): + output linebreaks as simple "
" + support for textwrap: 10; * as_ascii(): + write our own text wrap routine to replace the buggy Text::Wrap + rewrote the border-collapse algorithm, as well as the logic to determine if we need to draw a border. This makes nodes next to each other (like via autosplit, or with origin/offset) work even when their borders are different (like none/solid, dotted/solid etc). (Thanx Nick Jenkins!) * Layouter: + Rewrite the rank assigning code: + for cycles in the graph, the rank assignment code did sort the nodes alphabetically and put the node with the "lowest" in the first rank. Now it uses the order in which the nodes were defined, thus this: [ B ] -> [ C ] --> [ A ] --> [ B ] starts now the layout with "B", instead of "A", as humans expect it. + use a heap instead of ARRAY, so does less work but is more correct + correctly assign user ranks and automatic ranks to nodes + the layouter keeps track of where it placed the first node of a rank, and then places nodes with the same user-set rank in the same column/row + on nodes with more than one edge leading out, where one of the edges has a flow, stop the chain tracking there. This prevents the non-flow edge to be laid out first if its chain is longer than the flow-edge, and thus prevents the non-flow edge from blocking the flow-edge. + self-loops were not tried in the right order, unless the flow at the node was east (Thanx Stéphane Bortzmeyer!) + A*: don't put edge labels on EDGE_CROSS cells as they aren't rendered there (Thanx Stéphane Bortzmeyer!) + sink-nodes (no outgoing edges) get bigger so that there front side is empty, preventing edges going "around" to the front side of the node + paths generated by A* have a tendency to in-ward bends, these are now removed and replaced by a simple corner, if possible * Parser: + improve robustness for alternate line endings (\x0d\x0a vs \x0a) + a space in front of classes (" name { color: red; }") caused an error (Thanx David R. Throop!) + allow escaped ";" in attributes as in "{ label: \;\;; }" + accidentily allowed "[a]--test -->[b]" (no space before edge label) + properly handle non-string attributes like "[A|B] { shape: node|;}" * Parser/Graphviz: + support "setlinewidth(..)" in style attribute for nodes + handle the following color forms correctly: + hexadecimal RGB colors with spaces (like "#AA BB CC") + HSV() colors ("1.0 1.0 1.0" and "0.0, 0.0, 1.0") + colorschemes ("//red" and "/x11/red") + first stab at parsing HTML-like labels + support for "labeljust" on subgraphs * set binmode(STDERR,'utf8') when in debug mode * Group: include a modified add_group() to make nested groups work properly * add attribute "group" for groups * make $self->attribute('group') work on nodes and groups 2006-10-29 v0.49 Tels 2182 tests * fixed Synopsis * add more modules to t/pod_cov.t and t/pod.t * speedup loading: remove _u8() kludge, use utf8 in As_ascii.pm * Node: added get_attribute() as alias for attribute() * Completely rework the attributes code: + attribute() now always returns the default value, and respects inheritance for values that are "inherit". Instead of a hard-coded attribute list, we now simple use 'inherit' for default values. + 'inherit' is a valid colorscheme and edges, (anon) groups, and (anon) nodes have "inherit" as default colorscheme + add "autosplit" and "autojoin" for edges + accept all attributes with a "-" in their name also without the "-" (fontcolor, textwrap etc. are now valid inputs) + make default_attribute() work, even when the object is not in a graph + default_attribute() uses the info in $attributes to avoid double data + add attributes "root" and "rank" for groups + del_attribute() now works for virtual attributes like 'border' or 'size' + add: raw_attribute(), raw_attributes(), get_attributes() * Graph: del_node() didn't deregister a child node from parent * support \; and \' (f.i. to escape single quotes if you want a label "''") * Start working towards a recursive layouter: + separate layout() into layout() (for graph only) and _layout() + call edges_into_groups() before layout + Group: store cells in {_cells} to avoid clash with {cells} from layout + Group: in _layout() set {debug} for groups from parent graph {debug} * Parser: + make magic detection of Graphviz input much more robust + parsing failed silently when there was only one invalid line of input + fix parsing of empty groups and/or anonymous groups + sort attributes before checking them to make tests more predictable * Parser/Graphviz: + a new scope start followed by a non-node (f.i. attributes) crashed the parser. See t/in/dot/5_scope_atr.dot for an example. + recognize (n|ne|e|se|s|sw|w|nw) as compass directions after nodes/ports + recognize numbers as node names (like 0.11, 1.0, 0., 1., etc) + the ID in "graph ID { }" is optional + properly remap headport/tailport for edges + make comment parsing more robust, especially against multiple multiline comments or multiline comments without spaces around them + recognize "setlinewidth(..)" for edge styles * as_txt(): + don't insert superflous newline for empty groups + properly output anonymous and empty groups + output all attribute names w/o the "-", i.e. "fontsize: 80%;" * as_html(): + properly quote "<", ">" and "&" in labels + values of "inherit" work now, even when just set on a class/subclass * as_graphviz(): + output nodes inside groups in sorted order to make tests more predictable + add tests for proper colorscheme support * attribute "autolabel": + allow and prefer/doc to use just "N" for specifying the length + use "…" (ellipse) instead of just three dots (except in as_ascii) + allow up to 99999 characters (was 9999) + change doc to reflect that a set label will be shortened, too 2006-09-13 v0.48 Tels 2020 tests * Parser/Graphviz: + handle attribute "URL" (opposed to "url") + handle attribute "href" for graph/node/subgraph, too + accept "\N" in titles and urls, too + accept "\E" for edges, too (\E is replaced by "Bonn->Berlin" f.i.) + accept "\G", "\T", "\H" in labels/urls/titles, too + parse HTML entities like & in names/labels/titles/urls + fix comment parsing, things like "http://example.com" didn't work * Layout/Repair: + fixup the code that inserts edge pieces + fixup the code that combines long HOR/VER edges in case the edge goes bottom-to-top or right-to-left (the code only expected the other dir) + repair JOINT_E_N_S followed by an edge on the right/bottom side properly * Edge: + fix add_cell() to add a cell _after_ a given cell, not before (this fixes those horrible messed up HTML layouts, esp. involving groups - Thanx to Florian Lindner for testcases and bugging me! :) * as_html: + implemented edge type 1031 (joint south to east/west, starting west) + CSS class names like "node-group" must be "node_group" to fully work (fixes class-attributes on anon nodes etc. not showing up) + fix output of group labels on groups parsed from Graphviz * as_ascii: + render anon nodes, too, since they might have class attributes making them visible (fixed t/in/4_node_edge.txt among others) * as_graphviz: + fix rendering of anon nodes (setlinewidth(0) doesn't work, so use style=filled and a color that equals the node background) + don't output spurious "flow" for nodes + the code to supress edge labels on helper edges was broken 2006-09-03 v0.47 Tels 2013 tests * Edge: add end_at(), the opposite of start_at() * add node shape 'edge' - render node as a horizontal edge piece * add node attribute 'rank' - 'auto', 'same' or positive number * multiple spaces in edge labels were not collapsed together * class names are case-insentive like in CSS, so we lowercase them on input: + as_txt() renders them now unified as lowercase, always + "node.SECOND { label: B; } [ A ] { class: Second; }" works now * as_txt(): edges going to/starting at the first part of an autosplit node are now correctly output: "[A|B] [ AB.0 ] -> [ T ]" now works. * as_html(): arrow-style: filled; did not replace all "v" and "^" arrows * Layouter: + handle _trace_path() called with unplaced src node + adding group cells makes it nec. to adjust size of multicelled nodes + holes torn after splicing-in group cells where not closed when one of the adjacent edge cells was of type EDGE_CROSS * Parser: + make detection of Graphviz code more robust against commented out text * Parser/Graphviz: + a scope end did not properly pop the group_stack, resulting in nodes getting in the wrong group. t/in/dot/6_2_cluster.dot now parses and renders correctly. + "The keywords 'node', 'edge', 'graph', 'digraph', 'subgraph', and 'strict' are case-independent." So we accept that them way. + handle the case of "strict digraph G { a -> b }" properly + edge [ label=foo ] sets these attributes on edges, not nodes + handle "style=dotted" for nodes (as well as "dashed") + a "node [ style=invis ]" followed by "node [ style=filled ]" did not set following nodes to a visible shape + properly remap: "arrowhead", "labeljust", "orientation" + handle label="\N" for nodes + the default arrow style is "filled" + attribute values with a "|" inside them got wrongly split + attribute values with ']' inside quoted strings like label="[P]" fixed + implement parsing records of the form " A | B | C"> + "Bonn":"f1" now creates a node "Bonn", not "Bonn:f1", nor does it fail + all boolean attributes are now recognized when appearing without a value + handle string concatenation ("foo" + "" + "bar") + handle line continuation (a '\' as last character on line) 2006-08-13 v0.46 Tels 1943 tests * Output: + add as_debug() and "output: debug" * Layouter: + fix layout with loops where the root node is part of the loop (see t/in/6_split_join_loop.txt for an example) + fix warning about uninitialized in Chain.pm line 423 * Parser: + '\[', '\{', '\>' etc inside an edge label work now: [ A ] -- \[ A \ ] \<\> --> [ B ] + use _unquote() in more places instead of duplicated code + allow rgb(10%,0,0.5) for colors, e.g. fractions and mixes + allow \" in attributes ala 'label: "\"hello\"";' + a comment inside attributes caused the parsing to fail: { color: 3; # this didn't work } * Parser/Graphviz handles the following: + "root" on a graph + "graph G { init -- _run }" (graph vs digraph, \w+ as node) + funky node names: node_0, Köln, "node" etc + "subgraph G { .. }" + scopes as in "{ node [ color=red ] Bonn -> Berlin }" + node list as in "{ a b c } -> u; i -> { j k l }" + digraph/subgraph attributes: "subgraph G { style=filled; }" + node attribute 'label' no longer crashes the parser + attributes without a value ("center truecolor") + attributes w/ or w/o ";" at end, w/ or w/o "quotes" + "subgraph test { } abc -- test" shouldn't add a spurious node "test" + per default, the color scheme is x11 and the graph flows south + "a1 -> a2\na2 -> a3" (no ";" at end of line and no spaces in between) + undirected edges + /* * style * / comments almost everywhere * Parser/Graphviz maps/handles/ignores now the following attributes: + nodes: shape, peripheries, z + graph: ratio, labelloc + edge: f, group, style + all: style, fontsize, color ("0.99 0.8 0.24", #ff00ff00 etc) * as_graphviz(): + output "rank=0" for root node + fix output of headport/tailport for start/end attribute + fix the creation of "invisible" joints to joining/splitting edges: + created helper nodes no longer conflict with existing node names + works for joints as well as splits + suppress arrow heads leading to joint + works in both east and west direction (aka with flipped edges) + start/end: left; (aka relative starting/end side) results in correct tail/headport attribute, too * as_ascii(): + fix rendering of graph labels at bottom + graph labels wider than the graph make output bigger and work now * Attributes: + support for different color schemes + add X11 and ColorBrewer color definitions + add attribute 'colorscheme' for all classes + colors are now stored internally as they were written in the input * License: include apache-style license for Brewer color schemes * Misc: fatal errors produce a stack backtrace only under debug * Node: further fixes flow(): properly cache the return value, reduce C&P 2006-07-23 v0.45 Tels 1811 tests * we dont need inc/Module/AutoInstall.pm (this dist has no dependencies) * require at least Perl 5.8.1 for proper Unicode support * add a Build.PL file * fix bug with shared edges and joints (Thanx Florian Lindner!) * fix reparing of edge joints that are next to a node inside a group * add attribute 'root' for graphs * Layouter: if given root node, start there * fix "no_index" in Makefile.PL to not include spurious "directory"'s * Node: fix flow() * as_ascii: fix corners with start/end pieces (add spacing, to make consistent with all other start/end pieces) * as_boxart: fix rendering of corner pieces (especially for joints) * as_html: render invisible edges truly invisible * adding a node with the name '0' and retrieving it via node('0') works now * Parser/Graphviz: + 'Bonn' is a valid node name, too ([A-Z][a-z]+) + handle /* style comments */ 2006-04-17 v0.44 Tels 1801 tests * new/changed attribute: + add 'group' for nodes + only allow /[a-z][a-z0-9_]+/i for classnames as documented * Base: warn() uses Carp::carp instead of plain warn() * we no longer need Heap: we have our own el-cheapo Heap class. And it is faster, too, todos/big.txt takes 3.6s vs. 4.2s with v0.43 and Heap::Binary * Layouter fixes: + a short vertical edge starting from a multicell node was rendered as horizontal instead + an edge sharing an end point with another was generated incorrectly if (one of) the other edge(s) was running alongside the starting node (e.g. where we could immidiately create a joint and be done) + likewise for edges splitting up, if a shared edge runs alongside a node, then a joint will be created there immidiately + fix bidirectional edges with a joint as start piece + Don't warn on edges with no cells (on joints, under debug) about being unable to find path + improve placement for nodes where their edges share an end point + improve placement of nodes for shared edges with labels * cleaned up the POD a bit and added a few remarks and notes * as_ascii: + deal with invisible edges at cross sections * as_html: + implement joint types with start or end points * fix the repair code that handles edges inside groups: + repairs more cases + is faster by reversing the checks and using grep + cut down on copy&paste code * Edge/Cell: fix arrow_count() for undirected and bidirectional edges * Easy.pm: + fix bug in class_styles() ignoring base class name for multiple classes, affected SVG output * Parser/Graphviz: + relax parsing of node names (G, GROOVY etc are valid w/o quotes) + allow "graph [ ... ];" (semicolon after attribute section) + remap attributes: graph: rankdir; edge: minlen, dir 2006-03-19 v0.43 Tels 1755 tests * add attributes: + text-wrap: 'auto': auto wrap label, 'none' is the default + id: unique identifier for each object (usefull for animation later on) + font: comma-separated list of font family names/generic names + format: 'none' (no special processing, default) or 'pod' (enables inline text formatting ala B, I etc) * Node.pm: avoid autovivify of ->{edge} in background() and use ->{group} * Edge/Cell.pm: set {group} to edge's group to make things easier * Layout/Path.pm: add some pods for the internal routines * add more .pm files to t/pod_cov.t and t/pod.t * it wasn't possible to set an edge label via a class or subclass: edge { label: yes; } edge.no { label: no; } [ A ] --> [ B ] --> { class: no; } [ C ] * as_html: + table cells inherit some attributes like "color" from the table, this caused all labels to be the same color as the graph if you set a color there: graph { color: red; } ( Cities: [ Bonn ] -- train --> [ Berlin ] ) Likewise for fill, align, font, font-size etc. These are all fixed and tests make sure that this doesn't happen again. + fix CSS + "vertical-align: center;" has to be "vertical-align: middle;" + don't output bogus "flow" attributes + don't output spurious edge class "ha" + merge classes "ve" and "el" into "el" + draw arrows on short hor edges closer to the line + graph and edge labels need to use _label_as_html() to properly quote "<",">" and "&" as well as have support for \n,\r,\c and \l + fill and background color for graphs were swapped + do not combine table cells if the returned cell code contains two successive cells + fix EDGE_S_E + EDGE_START_S * as_graphviz: + add support for edge styles "double" and "double-dash" by emitting "color:color" for the edge * Edge.pm: + add flip() - swap from/to for this edge + remove dead code in flow() and fix POD for it * Layouter: + added a post-layout optimizer + compact edges by combining VER or HOR edge cells into one cell (fixes overly long edge labels stretching the layout) + add a method to grow multiple column/row sizes to accomodate a nec. multi-column cell (node/edge), this creates more compact layouts with multi-cell objects in them. + repairing edges after splicing in groups did not account for joints, the joint and the next piece might not belong to the same edge. Thanx to Florian Lindner for a testcase. + Edge.pm: port() did falsely return ("east","0") for "east" instead of (undef,undef), causing edges with "start: east" to get wrongly split up * Parser: + refactor code to allow easier subclassing + require and use Parser::Graphviz on detection of graphviz code + allow quoted attributes that contain ";" like: 'label: "bar;baz";' * Attributes: + clarify rules when to quote, escape and encode + only decode %xx for xx between 0x20 and 0x7e (to stop exploits) * add Graph::Easy::Parser::Graphviz - parse graphviz text and convert it 2006-02-21 v0.42 Tels 1674 tests * add the missing testfiles to MANIFEST * add a few examples to the doc * remove the static classes "l" (a) and "i" (img) - these can be styled by CSS selectors, so there is no need for them. * as_html: + use unicode chars for filled/closed arrow heads + fix garbled class names on undirected edges (caused by removing "v") + fix output of default left-aligned group labels and add test for that + output "
" instead of "\n
", because due to "whitespace: nowrap;" this did insert spurious spaces before each line break, throwing center-aligned labels off-center. * as_graphviz: + output correct minlen * Parser: + Reverse the removing of trailing/leading "|" in autosplit nodes, introduced in v0.34. [|G|] is " ", "G", " ", and not just "G". The unconditional removal of leading/trailing empty parts meant you could never have an empty trailing part, ever. Fixes also the regression from todos/hash.txt no longer working. Adjust doc to reflect this change. + add more tests for trailing/leading empty parts. * Layout.pm: + typo: {_chain} vs. {chain} (Thanx Jim Cromie) + don't use alarm when under the debugger (Thanx Jim Cromie) 2006-02-05 v0.41 Tels 1670 tests * use Module::Install and bundle it in inc/ * add "point-style: invisible" for very small, invisible nodes - nodes with "shape: invisible;" will still have a minimum size. * add support for '\l', '\r' and '\c' as line breaks to align individual label lines left, right or center * as_ascii: + support proper alignment on edge labels * as_graphviz(): + fix invisible nodes to not show their label + add support for nodes with "shape: point;" * t/graphviz.t: reduce the number of unnec. calls to as_graphviz() * as_html(): + use white-space: nowrap; (not "pre") + add support for \l, \r, \c and don't include text-align twice * Node: + remove the unused and undocumented "noquote" param from as_html() * Graph: + add: add_edge_once(): add an edge from A to B only once (Thanx to Florian Lindner for the suggestion!) 2006-01-29 v0.40 Tels 1652 tests * add attribute: + "invisible" as edge style + "minlen" - for edges (minimum distance in cells) + "align" - alignment for graph, group, edge and node labels * General: + fix Makefile.PL to work with newer YAML + avoid duplicate code when dealing with labels and dimensions + empty attribute-parts on autosplit nodes work now: [ A|B ] { class: |legend; } will put B into class 'legend' and leave the class of A alone [ A|B ] { class: legend|; } will put A into class 'legend' and leave the class of B alone [ A|B ] { class: legend; } will put A *and* B into class 'legend' + _class_styles(): use correct indent instead of hard-coded ' ' * Edge: * start_port()/end_port(): + remove spaces to normalize result + return list in list context * Node: + add nodes_sharing_end(), is_anon() + remove place() from public API (is now _do_place()) + allow spaces in set_attribute('size', '9 , 8') * Node::Cell: + add a group() method to make things like $cell->group() easier * Group: + is also a Graph::Easy, to inherit from it (for nesting) + find right-most cell for label if "align: right" + rename find_label_cell() to _find_label_cell() (is internal use only) * Graph: + add use_class(), and use it instead of hard-coded class names + due to bad caching, one couldn't set the node size as class-attribute + weaken() is costly and O(N), so avoid it whenever possible. Graph creation and destroy are now O(1) again. Creating a graph with N nodes and N-1 edges takes (bench/stress.pl): N 0.39 0.39 | 0.40 0.40 Create Destroy | Create Destroy ----------------------------|------------------------ 4000 0.35 0.23 | 0.31 0.12 8000 0.77 0.68 | 0.61 0.21 16000 1.91 2.26 | 1.19 0.48 32000 9.32 8.02 | 2.32 0.78 * Parser: + add use_class() to use user-provided classes for generated objects + referencing an (empty) part of an autosplit node before the autosplit node itself would create wrongly a stray node + simplify group code ($graph->add_group() does everything nec. already) + store labels for autosplit nodes not in the label attribute, but seperately. This fixes the problem that you couldn't put a node (resulting from an autosplit) into a class and set a label on the class - the node would always show the part name as label. In addition that fixes the long-standing bug that as_txt() would output stray labels for autosplit nodes. + parts in an autosplit node are relative to their preceding part, not to the first part. This enables setting columns/rows/size on parts and the other parts will flow/adjust properly. + set the basename property on the first part in an autosplit node, enabling proper as_txt() output of it. * Layouter: + implement the same spacing rules between nodes for end points as 0.39 did for start points: edges joining up to a node work now + only use 3 cells space when there are more than one node sharing the same port (was "more than zero") + fix a problem when placing nodes without an edge object resulting in a crash + repair edges outside of groups, as well as edges that end at a corner + multi-celled nodes in spliced layouts (e.g. with group fillers) did not preserve their filler-cells correctly * as_txt(): + clean up nodes after output so that a following as_graphviz() does work * as_graphviz(): + fix links involving groups: lhead/ltail were swapped + generate shorter invisible node names ("A,south,0" vs "A,south,0,0") + do not create invisible joint-nodes when there is only one edge sharing the start/end port + make "shape: rounded" work (needs "style=rounded,...") + support label alignments on groups * as_ascii(): + round corners for shape: rounded (using ' ', instead of using unicode characters by accident) + support for aligned labels (left|right|center) * as_boxart(): round corners for bold/wide/broad etc using spaces * as_html(): + make space below edges smaller, to create more compact layout + a color on a group was ignored, resulting always in black group labels + finally align the vertical arrows with the edge lines. In Opera 8.5 under Linux the "v" now gets cut off, but this seems a browser bug. Sorry, some of the Opera users! + support label alignments (center|left|right) + when a class attribute specified the font-size, don't include it at at the td (node|edge|caption etc) again + edge { arrow-style: none; } did not remove the arrows from edges + group cells need ' ' for IE to show the border - I hate IE bugs :-( * error() is now fatal by calling _croak() - no longer do errors in attributes go undetected and cause havoc later on. You can use $object->no_fatal_errors() (on any object) to supress this. 2006-01-08 v0.39 Tels 1603 tests * Graph: fix merge_nodes() to delete node B from group if part of one * fix Group: + del_edge(): delete edge on id, not non-existant name + del_node() & del_member(): drop all edges mentioning the node + optimize edges() and nodes() in scalar context * Graph: improve handling of "|" in attributes (especially labels) * Graph: del_node() and del_edge() also remove these from their group * Edge: + add start_at(), start_port(), end_port() + fix POD start * Node: add nodes_sharing_start(), shared_edges(), has_predecessors() * add source_nodes() and predecessorless_nodes() (Thanx to Florian Lindner for the suggestion!) * as_html(): add "white-space: pre" to the CSS to prevent wrapping of labels with spaces in them * as_graphviz(): + implement edge joints (shared start/end port) via invisible joints + handle attributes like labels with embedded newlines + output edges from/to groups (subgraphs/clusters) * Layouter: + allow sharing of end ports (making edges join up on the way to the target node) + min distance between node is 3, not 2, when there are edges that share a start point (to make room for the joints) + Layouter: place nodes with a shared start point in the same column/row than the others (to render tree-like layouts automatically) * multiple attributes for autosplit nodes were broken, when: + the attribute did not have a strict check (link, f.i.) + there was a newline after the node ala "[A|B]\n { fill: red|green;} + the attribute did have a fixed list of words (like "shape") (Due to Ron Newmann's question I stumbled over these bugs - thanx! * add support for "shape: img;" (Thanx to Ron Newmann for the suggestion!) + as_html: use "" + as_graphviz: use "<>" 2006-01-01 v0.38 Tels 1571 tests * include the missing 4_flow.txt test files * Group.pm: fix POD * Parser: attributes on nodes in a node list apply to all nodes in the list up to this point. So: [ Bonn ] { color: blue; }, [ Berlin ] { fill: black; } will fill both nodes black, but only color "Bonn" blue. * remove unused arrow-code on hor-selfloops * as_ascii: draw bidirectional self-loops with two arrows (Thanx Dan Horne!) * Layout: fix bidirectional edges created by A* (multi-celled nodes) and the straigh-path shortcut (more than one cell distance) (Thanx to Dan Horne again) * Layout: ignore links from/to groups, do them after splicing in group filler cells * Attributes: remove direction() and add: + _direction_as_number() + _flow_as_number() + _flow_as_side() + _direction_as_side() * Graph: remove the unused and wrong angle() method * Graph: allow add_edge('Node', 'Node2', 'edge label'); * Edge: add flow() and port() * Node: add flow(), angle() * check POD coverage of Graph::Easy::Attributes and As_ascii * fix the flow model: correctly handle absolut (south/180/east/90/down etc) and relative (left/right/front/forward/back), as well as global and local flow on a per node/edge basis * as_txt(): output the original flow/start/end attribute instead of a converted value ('down' vs 180, 'left' vs XX) * Base: add _croak() method * Node: growing nodes with edge end/start point restrictions did make the node one to big on each restricted side * use constant instead of home-grown "sub CONSTANT() { 1; }" * as_graphviz(): output correctly nodes in a group w/o attributes and edges * as_graphviz(): support correctly most node border and edge styles, even in combination with fillcolor. Thanx to Ryan Schmidt! 2005-12-27 v0.37 Tels 1533 tests - Sing, sing, sing the birthday song... * correctly handle '\\n' in labels/titles * Node::Cell: allow 'x' and 'y' as arguments * Layout: repair split multi-celled nodes after inserting group fillers * Layout: insert short filler edge pieces on spliced edge for group layouts (fixes "holes" at the start and end of edges in ascii layouts with groups) * Layout: set smaller minimum-size for group cells at non-corners * Layout: grow group fillers to close gaps between nodes in things like: "( Group: [ A ] [ B ] )" * Parser: handle "([A]->[B])" (allow empty group name) * Parser: don't set group name of '0' to '' * Parser: handle "] -> ( ..." (edge from node to group) * Parser: handle ") -> ( ..." (edge from group to group) * Parser: "...) -> [ A ]" is a group-to-node edge, not node to node * add attribute "flow" for edges (per-edge flow) 2005-12-18 v0.36 Tels 1516 tests * Parser: add support for node lists on the right-hand side: [ Bonn ], [ Berlin ] -> [ Potsdam ], [ Halle ] * allow "inherit" for colors * Node: fix edges_at_port() to skip edges not starting/ending here * Group: fix add_member() and del_member() for edges * Group: fix add_node() * Node: fix background() * Graph: fix default fill for groups in HTML * Graph: add_group(): return $group, not $self * Layouter: + stop chain-tracker at nodes that are grandchildren of the current node + grow nodes based on used/free ports (fixes shared ports) + grow nodes only in one direction if they have 'rows' or 'columns' + shuffle self-loop directions according to graph/node flow + A*: no longer cross edges along their flow line (leading to corrupted layouts with multiple crossings in a row) + convert edge joiners to joints for shared edges * render joints in as_ascii, as_boxart and as_html * as_ascii: render no arrows on undirected edges (esp. for selfloops, corners and cross sections) * as_html: fix edge color if only "label-color" is set * as_html: fix self-loop on east side * as_html: render no arrows for undirected edges * as_graphviz: output headport/tailport for edges with "start" or "end" (this doesn't seem to work in "dot" at all, sadly :-( * as_graphviz: output groups as clusters (subgraphs) * do multiple edges from A to B,C,D etc in the order of "B,C,D" instead of pseudo-random order 2005-12-10 v0.35 Tels 1483 tests * Node: fix parent() * allow "$graph->add_group('Name');" * render group labels * close edge gaps created by inserting group filler cells * group label font-size defaults to 0.8 * fix doc about default font-size (0.8 for edge/group labels, not 0.75) * as_html: fix borders of groups without a special class/border * as_html: fix content and background of nodes with "shape: point;" * as_html: fix group backgrounds (especially with edges and class/non-class attributes) * as_html: don't need to put text/font attributes on empty (group) cells * as_html: fix shapes like "circle" on nodes with a link * remove relicts of old group handling code in Nodes/Group Cells * use more isa() instead of ref() checks for class names * "class { label: ...; }" was ignored and did not change the label * allow: "start: south , 1;" (space before ",") * add directions "left", "right", "front" and "back for "start"/"end" (these are flow-dependend, unlike "south" etc) * add attribute 'autotitle: link;' * add attribute 'autolabel: name;' and "autolabel: name, N;" * make "autotitle: none;" work * document and test that "autotitle: name" on edges will fall back to the edge label * document and test that a present title will override "autotitle" * implement edge-joints: + A* will use edges for start cells if they share the same port 2005-12-04 v0.34 Tels 1437 tests * as_html: align arrow heads better with the edge line (still breaks sometimes, espc. with edge labels) * as_html: implement missing edge corner piece E->S * as_html: implement selfloop edge pieces * as_html: fix crossings of different edge styles * as_html: putting a "fill" or "border" on an node with a link did put these styles on the link, not on the table cell. * as_ascii()/as_boxart(): render group borders * as_graphviz(): fix arrows on undirected/bidirectional edges * A*: compute the working space and disregard cells outside this area This prevents the run-away situation in case no path can be found. * A*: did not close crossings on edges, getting it stuck in an add-del-add cycle until it hit the hard limit of 10000 steps, thus never finding the path. * A*: find less bendy paths (no inward bend corners anymore) * fix a bug in trying placements of nodes, where the node would be registered on all potential places, instead of only the final selected one. In HTML, the node would thus appear multiple times in the output. * Graph: streamline sorted_nodes(); * Edge: keep edge cells in sorted order (from start to end), and allow add_cell() to insert a cell into the list (to repair edge-splitting from the group-padding code). Also allows rendering cells in order. * Edge: has_ports(): return true if start or ending port of the edge are restricted in some way (attributes 'start' and 'end') * Nodes relative to multi-celled nodes did not take into account the size of the origin node (when the offset was positive in X and/or Y dir.). * add Graph:Easy::Base as base class for common code for all objects * add Graph:Easy::Layout::Chain for internal use in the Layouter * completely rewrite the chain-tracking code, and the code that generates layouts based on the chain info. Handles now bidirectional edges, forwad/backward loops and is generally more robust. * Layouter: grow nodes by 2 in each direction, instead of 1. This fixes layouts with star-shaped auto-grown multi-celled nodes (try to say this three times fast...) where you have on node at the center. Since nodes are never placed next to each other, growing the node by 1 did not make enough space for all adjacent nodes. * use diag() instead of printing to STDERR in tests * edge crossings with a start/end point had the type check wrong and thus could lead to the styles being switched around (HOR vs. VER) * Graph: add svg_information() * add attribute "basename" to autosplit nodes to make referencing easier * add edge attributes: 'start' and 'end' - node starting/ending port to specific node ports for specific layouts * create Empty nodes for autosplit nodes again (regression) * trailing/leading empty parts on autosplit nodes are always removed, so "[ |A|B| ]" equals [ A|B ] * move _prepare_grid() to Graph::Easy::Layout::Grid and load it on demand * autosplit nodes only get an unique ID when their basename doesn't already exist, so this now works: [ A|B ] { basename: one; } [ C|D ] { basename: two; } [ one.1 ] -> [ two.0 ] 2005-11-13 v0.33 Tels 1337 tests * simplify group code: Nodes can only be in one group at a time * Groups: edges with their to/from nodes in the same group are also added to that group * as_html: put correct group class on edge cells, so that they inherit the background from the group * as_html: if nec., output CSS for anon nodes * as_html: implement missing corner pieces (W->S, S->W etc) * as_graphviz: use "setlinewidth()" to simulate bold, broad and wide borders * Node: add size() * add a few more examples to the attributes in the doc (for manual) * A*: for each start point: calculate distance to each stop point and use the lowest one. Fixes tricky layouts with multi-celled nodes. * Layouter: implement direction shuffling for multi-celled nodes * Layouter: fix code calculating edge end/start points to handle corners * update the check for As_svg's VERSION in Makefile.PL * Easy.pm: don't needlessy import non-existing GROUP_MAX (Thanx to PPI!) * Layouter bugfixes: + paths with one bend did not check the corner-cell for being already occupied, leading to obscuring nodes/edges on that place + failing to find a bend path horizontal->vertical, the code tried next vertical->horizontal, but did not remove the already tested parts, leading to stray edges pieces (poss. obscuring other parts) * defining an "offset" and "origin" on an autosplit node caused an endless loop in the layouter: [ 1 ] --> [ 2|3 ] { origin: 1; offset: 2,3; } * Layouter: autosplit nodes w/o edges, and chained nodes caused endless loops when placing them. Examples that did hang the layouter: + "[1]->[2] [3|4]" + "[1]->[2] [3] [4] { origin: 3; offset: 1,0; }" + "[1]->[2] [3|4|5]" * Parser: referencing a part of an autosplit node before the autosplit node did result in endless loops or crashes. "[1] -> [23.0] [2|3]" works now correctly. * Parser: accept "size: 1, 2;" as valid (spaces around ",") * Parser: "[1],[2] --> [3]" should result in two edges to [3] (from 1 AND 2) * as_txt: "size: X,Y" did make columns and rows appear swapped in output * as_txt: output "size 1,2;" instead of "rows: 2; columns: 1;", except when only rows is defined * as_txt: quote special chars [";%\x00-\x1f] in attributes on output * Graph: added as_boxart_html_file(), _border_attributes_as_html(), anon_nodes() * Graph: rename border_attributes() to split_border_attributes() * added Edge styles: "broad" (0.5em), "wide" (1em), "bold-dash" * added Node border-styles: "broad", "wide" and "bold-dash" * better support for border-styles in HTML * support borders on anon nodes ala "[ ] { border-style: dotted; }" * Nodes with "shape: invisible;" are at least 3 chars wide (was: 5) * use Carp::confess() instead of Carp::croak() to aid debugging * setting "{ border: broad red; }" will set the style ("broad") and color ("red"), but leave the width alone * use isa('Graph::Easy::...') instead ref() to check for Node/Edge * Edge::Cell: add arrow_count() 2005-11-06 v0.32 Tels 1291 tests * as_boxart(): + use "v" and "^" instead of 0x2227 and 0x2228 for arrows (because most fonts seem to not have these characters) + border/edge styles "dot-dash" & "dot-dot-dash" use midot instead of "." + fix horizontal pieces of dot-dash borders * as_ascii()/as_boxart(): + align point-shaped nodes with edge lines + edge-pieces with style "dot-dot-dash" must be at least 6 characters wide to properly show the full "..-" style * as_graphviz(): fix handling of special characters like [;"] in attributes * Parser: accept "offset: 1, 2" (space around ",") as valid * Graph: prevent adding of Nodes with no name * Graph: can add nodes with name '0' * Graph: added del_node(), del_edge(), merge_nodes() * Graph: edge(X,Y) returns list of all edges from X to Y in list context * Node: add incoming(), outgoing() * Node/Edge: setting an attribute resets the size cache to force a re-calc (the node should grow/shrink when you change the label) * fix an undef warning in Edge/Cell line 713 * streamline printfb_line() and use it whenever possible * Node: more rebust detection of class in set_attribute (no longer depends on blessed class name) * Node: add attribute "rotate" * preserve cell sizes after as_ascii()/as_boxart() for next call (multiple calls to as_ascii()/as_boxart() in a row did grow node-heights by 3 every iteration) 2005-10-30 v0.31 Tels 1171 tests * require at least Perl 5.8.0 (we need proper Unicode support) * Edge.pm: remove unnec. _formatted_label() * fix examples in t/fun and t/syntax * include newline before first =head1 (Thanx to Ivan Tubert-Brohman!) * fix package name in As_ascii.pm * As_ascii: add _u8() (for box-art) * add: as_boxart(), as_boxart_file(), as_boxart_html() * add examples/as_boxart * examples/as_*: input utf8 from STDIN * Parser: do a binmode ':utf8' on input files * support "graph { output: boxart; }" * add some X<> keywords for POD indexing * Graph: you can call get_attribute('attribute'), too (the class is now optional and defaults to 'graph' if missing) * Graph: you can do set_attribute('attribute','value'), too. * added attributes: + edgeclass for groups + font-size for graphs, groups, nodes and edges + text-style for graphs, groups, nodes and edges + arrow-style: none for edges * clarify that "label-color" falls back to "color" if unspecified * setting "edge { style: X; }" changes the style for all solid edges to X * Node: add parent() - return parent object (group or graph) * Parser: throw correct error message for unknown attribute names * horizontal straight, non-short edges were missing their arrows * as_txt(): fix output of undirected edges (" -- " vs. " -- <") * as_txt(): "origin" and "offset" attributes were missing in output * handle a label of "0" correctly * as_html(): render edge cross sections with the correct styles and colors * as_html(): do not output invalid CSS definitions for edges (style, label link, title etc) * as_html(): setting a color on a node with a link works correctly now * as_html(): 'autolink' and 'link' on edges correctly create links * as_html(): 'title' on edges inserts a mouse-over title on the edge label * as_html(): remove trailing empty pairs * as_html(): put the "empty-cells" definition inside table.graph * as_html(): create links on graph label (caption) if requested * as_html(): include the graph label into the table, this looks more consistent than the ' . "\n" . ' ' . "\n"; my $edge_end_south = ' ' . "\n" . ' ' . "\n"; my $edge_empty_row = ' '; my $edge_arrow_west_upper = '' . "\n"; my $edge_arrow_west_lower = '' . "\n"; my $edge_arrow_east_upper = '' . "\n"; my $edge_arrow_east_lower = '' . "\n"; my $edge_html = { # The " " in empty table cells with borders are here to make IE display # the border. I so hate browser bugs :-( EDGE_S_E() => [ ' ' . "\n" . ' ', '', ' '. "\n" . ' ', '', ], EDGE_S_E() + EDGE_START_E() + EDGE_END_S() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' '. "\n" . ' ', $edge_end_south, ], EDGE_S_E() + EDGE_START_E() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' '. "\n" . ' ', '', ], EDGE_S_E() + EDGE_END_E() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' '. "\n" . ' ', '', ], EDGE_S_E() + EDGE_START_S() => [ ' ' . "\n" . ' ', '', ' '. "\n" . ' ' . "\n", $edge_empty_row, ], EDGE_S_E() + EDGE_START_S() + EDGE_END_E() => [ ' ' . "\n" . ' '. ' ', '', ' '. "\n" . ' ' . "\n", ' ', ], EDGE_S_E() + EDGE_END_S() => [ ' ' . "\n" . ' ', '', ' '. "\n" . ' ' . "\n", $edge_end_south, ], EDGE_S_E() + EDGE_END_S() + EDGE_END_E() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' '. "\n" . ' ' . "\n", ' ', ], ########################################################################### ########################################################################### # S_W EDGE_S_W() => [ ' ' . "\n" . ' ', '', ' '. "\n" . ' ', '', ], EDGE_S_W() + EDGE_START_W() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' '. "\n" . ' ', '', ], EDGE_S_W() + EDGE_END_W() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' '. "\n" . ' ', '', ], EDGE_S_W() + EDGE_START_S() => [ ' ' . "\n" . ' ', '', ' '. "\n" . ' ', $edge_empty_row, ], EDGE_S_W() + EDGE_END_S() => [ ' ' . "\n" . ' ', '', ' '. "\n" . ' ', $edge_end_south, ], EDGE_S_W() + EDGE_START_W() + EDGE_END_S() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' '. "\n" . ' ', $edge_end_south, ], EDGE_S_W() + EDGE_START_S() + EDGE_END_W() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' '. "\n" . ' ', $edge_empty_row, ], ########################################################################### ########################################################################### # N_W EDGE_N_W() => [ ' ' . "\n" . ' ', '', ' ', '', ], EDGE_N_W() + EDGE_START_N() => [ $edge_empty_row, ' ' . "\n" . ' ', '', ' ', ], EDGE_N_W() + EDGE_END_N() => [ $edge_end_north, ' ' . "\n" . ' ', ' ', '', ], EDGE_N_W() + EDGE_END_N() + EDGE_START_W() => [ $edge_end_north, ' '. ' ' . "\n" . ' ', ' ', '', ], EDGE_N_W() + EDGE_START_W() => [ ' ' . "\n" . ' ' . "\n" . ' ' . "\n", '', ' ', '', ], EDGE_N_W() + EDGE_END_W() => [ ' ' . "\n" . ' ' . "\n" . ' ' . "\n", '', ' ', '', ], ########################################################################### ########################################################################### # N_E EDGE_N_E() => [ ' ' . "\n" . ' ', '', ' ', '', ], EDGE_N_E() + EDGE_START_E() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' ', '', ], EDGE_N_E() + EDGE_END_E() => [ ' ' . "\n" . ' ' . "\n" . ' ', '', ' ', '', ], EDGE_N_E() + EDGE_END_E() + EDGE_START_N() => [ $edge_empty_row, ' ' . "\n" . ' ' . "\n" . ' ', ' ', '', ], EDGE_N_E() + EDGE_START_E() + EDGE_END_N() => [ $edge_end_north, ' ' . "\n" . ' ' . "\n" . ' ', ' ', '', ], EDGE_N_E() + EDGE_START_N() => [ $edge_empty_row, ' ' . "\n" . ' ', ' ', '', ], EDGE_N_E() + EDGE_END_N() => [ $edge_end_north, ' ' . "\n" . ' ', '', ' ', ], ########################################################################### ########################################################################### # self loops EDGE_LOOP_NORTH() - EDGE_LABEL_CELL() => [ '' . "\n". ' ' . "\n" . ' ', '', '' . "\n". ' '."\n". ' ', '' . "\n" . ' ', ], EDGE_LOOP_SOUTH() - EDGE_LABEL_CELL() => [ '' . "\n" . ' ', '' . "\n". ' '."\n". ' ', '', '', ], EDGE_LOOP_WEST() - EDGE_LABEL_CELL() => [ $edge_empty_row. ' '."\n". ' ', '', '' . "\n". ' ', '', ], EDGE_LOOP_EAST() - EDGE_LABEL_CELL() => [ '' . "\n" . ' ' ."\n". ' ', '', '' ."\n". ' '."\n". ' ', '', ], ########################################################################### ########################################################################### # joints ########################################################################### # E_N_S EDGE_E_N_S() => [ '' . "\n" . ' ', '', '' ."\n". ' ', '', ], EDGE_E_N_S() + EDGE_END_E() => [ '' . "\n" . ' ' . "\n" . ' ', '', '' ."\n". ' ', '', ], ########################################################################### # W_N_S EDGE_W_N_S() => [ '' . "\n" . ' ', '', '', '', ], ########################################################################### # S_E_W EDGE_S_E_W() => [ '', '', '' ."\n". ' ', '', ], EDGE_S_E_W() + EDGE_END_S() => [ '', '', '' ."\n". ' ', $edge_end_south, ], EDGE_S_E_W() + EDGE_START_S() => [ '', '', '' ."\n". ' ', ' ', ], EDGE_S_E_W() + EDGE_START_W() => [ '' . "\n" . '', '', '' ."\n". ' ', '', ], EDGE_S_E_W() + EDGE_END_E() => [ '' . "\n" . ' ', '', '' ."\n". ' ', '', ], EDGE_S_E_W() + EDGE_END_W() => [ $edge_arrow_west_upper . '' . "\n" , '', '' ."\n" . '', ], ########################################################################### # N_E_W EDGE_N_E_W() => [ ' ' ."\n". '', '', '', '', ], EDGE_N_E_W() + EDGE_END_N() => [ $edge_end_north, ' ' ."\n". '', '', '', '', ], EDGE_N_E_W() + EDGE_START_N() => [ $edge_empty_row, ' ' ."\n". '', '', '', '', ], }; sub _html_edge_hor { # Return HTML code for a horizontal edge (with all start/end combinations) # as [], with code for each table row. my ($self, $as) = @_; my $s_flags = $self->{type} & EDGE_START_MASK; my $e_flags = $self->{type} & EDGE_END_MASK; $e_flags = 0 if $as eq 'none'; # XXX TODO: we could skip the output of "eb" parts when this edge doesn't belong # to a group. my $rc = [ ' ', '', '', '', ]; # This assumes that only 2 end/start flags are set at the same time: my $mod = 4; # modifier if ($s_flags & EDGE_START_W) { $mod--; $rc->[0] = '' . "\n" . $rc->[0]; }; if ($s_flags & EDGE_START_E) { $mod--; $rc->[0] .= "\n " . ''; }; if ($e_flags & EDGE_END_W) { $mod--; $rc->[0] = $edge_arrow_west_upper . $rc->[0]; $rc->[2] = $edge_arrow_west_lower . $rc->[2]; } if ($e_flags & EDGE_END_E) { $mod--; $rc->[0] .= "\n " . $edge_arrow_east_upper; $rc->[2] .= "\n " . $edge_arrow_east_lower; }; # cx == 1: mod = 2..4, cx == 2: mod = 6..8, etc. $self->{cx} ||= 1; $mod = $self->{cx} * 4 - 4 + $mod; for my $e (@$rc) { $e =~ s/##mod##/$mod/g; } $rc; } sub _html_edge_ver { # Return HTML code for a vertical edge (with all start/end combinations) # as [], with code for each table row. my ($self, $as) = @_; my $s_flags = $self->{type} & EDGE_START_MASK; my $e_flags = $self->{type} & EDGE_END_MASK; $e_flags = 0 if $as eq 'none'; my $mod = 4; # modifier # normal vertical edge with no start/end flags my $rc = [ '' . "\n " . '' . "\n", '', '', '', ]; # flag north if ($s_flags & EDGE_START_N) { $mod--; unshift @$rc, '' . "\n"; delete $rc->[-1]; } elsif ($e_flags & EDGE_END_N) { $mod--; unshift @$rc, $edge_end_north; delete $rc->[-1]; } # flag south if ($s_flags & EDGE_START_S) { $mod--; $rc->[3] = '' . "\n" } if ($e_flags & EDGE_END_S) { $mod--; $rc->[3] = $edge_end_south; } $self->{cy} ||= 1; $mod = $self->{cy} * 4 - 4 + $mod; for my $e (@$rc) { $e =~ s/##mod##/$mod/g; } $rc; } sub _html_edge_cross { # Return HTML code for a crossingedge (with all start/end combinations) # as [], with code for each table row. my ($self, $N, $S, $E, $W) = @_; # my $s_flags = $self->{type} & EDGE_START_MASK; # my $e_flags = $self->{type} & EDGE_END_MASK; my $rc = [ ' ' . "\n" . ' ' . "\n", '', ' ' . "\n" . ' ' . "\n", '', ]; $rc; } sub as_html { my ($self) = shift; my $type = $self->{type} & EDGE_NO_M_MASK; my $style = $self->{style}; # none, open, filled, closed my $as; $as = 'none' if $self->{edge}->{undirected}; $as = $self->attribute('arrowstyle') unless $as; # triangle, box, dot, inv, diamond, line etc. my $ashape; $ashape = 'triangle' if $self->{edge}->{undirected}; $ashape = $self->attribute('arrowshape') unless $ashape; my $code = $edge_html->{$type}; if (!defined $code) { my $t = $self->{type} & EDGE_TYPE_MASK; if ($style ne 'invisible') { $code = $self->_html_edge_hor($as) if $t == EDGE_HOR; $code = $self->_html_edge_ver($as) if $t == EDGE_VER; $code = $self->_html_edge_cross($as) if $t == EDGE_CROSS; } else { $code = [ ' ' ]; } if (!defined $code) { $code = [ ' ' ]; warn ("as_html: Unimplemented edge type $self->{type} ($type) at $self->{x},$self->{y} " . edge_type($self->{type})); } } my $id = $self->{graph}->{id}; my $color = $self->get_color_attribute('color'); my $label = ''; my $label_style = ''; # only include the label if we are the label cell if ($style ne 'invisible' && ($self->{type} & EDGE_LABEL_CELL)) { my $switch_to_center; ($label,$switch_to_center) = $self->_label_as_html(); # replace linebreaks by
, but remove extra spaces $label =~ s/\s*\\n\s*/
/g; my $label_color = $self->raw_color_attribute('labelcolor') || $color; $label_color = '' if $label_color eq '#000000'; $label_style = "color: $label_color;" if $label_color; my $font = $self->attribute('font') || ''; $font = '' if $font eq ($self->default_attribute('font') || ''); $label_style = "font-family: $font;" if $font; $label_style .= $self->text_styles_as_css(1,1) unless $label eq ''; $label_style =~ s/^\s*//; my $link = $self->link(); if ($link ne '') { # encode critical entities $link =~ s/\s/\+/g; # space $link =~ s/'/%27/g; # single-quote # put the style on the link $label_style = " style='$label_style'" if $label_style; $label = "$label"; $label_style = ''; } } # without  , IE doesn't draw the cell-border nec. for edges $label = ' ' unless $label ne ''; ########################################################################### # get the border styles/colors: # width for the edge is "2px" my $bow = '2'; my $border = Graph::Easy::_border_attribute_as_html( $self->{style}, $bow, $color); my $border_v = $border; if (($self->{type} & EDGE_TYPE_MASK) == EDGE_CROSS) { $border_v = Graph::Easy::_border_attribute_as_html( $self->{style_ver}, $bow, $self->{color_ver}); } ########################################################################### my $edge_color = ''; $edge_color = " color: $color;" if $color; # If the group doesn't have a fill attribute, then it is defined in the CSS # of the group, and since we get the same class, we can skip the background. # But if the group has a fill, we need to use this as override. # The idea behind is to omit the "background: #daffff;" as much as possible. my $bg = $self->attribute('background') || ''; my $group = $self->{edge}->{group}; $bg = '' if $bg eq 'inherit'; $bg = $group->{att}->{fill} if $group->{att}->{fill} && $bg eq ''; $bg = '' if $bg eq 'inherit'; $bg = " background: $bg;" if $bg; my $title = $self->title(); $title =~ s/"//g; # replace quotation marks $title = " title=\"$title\"" if $title ne ''; # add mouse-over title ########################################################################### # replace templates require Graph::Easy::As_ascii if $as ne 'none'; # for _unicode_arrow() # replace borderv with the border for the vertical edge on CROSS sections $border =~ s/\s+/ /g; # collapse multiple spaces $border_v =~ s/\s+/ /g; my $cl = $self->class(); $cl =~ s/\./_/g; # group.cities => group_cities my $rc; for my $a (@$code) { if (ref($a)) { for my $c (@$a) { push @$rc, $self->_format_td($c, $border, $border_v, $label_style, $edge_color, $bg, $as, $ashape, $title, $label, $cl); } } else { push @$rc, $self->_format_td($a, $border, $border_v, $label_style, $edge_color, $bg, $as, $ashape, $title, $label, $cl); } } $rc; } sub _format_td { my ($self, $c, $border, $border_v, $label_style, $edge_color, $bg, $as, $ashape, $title, $label, $cl) = @_; # insert 'style="##bg##"' unless there is already a style $c =~ s/( e[bl]")(>( )?<\/td>)/$1 style="##bg##"$2/g; # insert missing "##bg##" $c =~ s/style="border/style="##bg##border/g; $c =~ s/##class##/$cl/g; $c =~ s/##border##/$border/g; $c =~ s/##borderv##/$border_v/g; $c =~ s/##lc##/$label_style/g; $c =~ s/##edgecolor##/ style="$edge_color"/g; $c =~ s/##ec##/$edge_color/g; $c =~ s/##bg##/$bg/g; $c =~ s/ style=""//g; # remove empty styles # remove arrows if edge is undirected $c =~ s/>(v|\^|<|>)/>/g if $as eq 'none'; # insert "nice" looking Unicode arrows $c =~ s/>(v|\^|<|>)/'>' . $self->_unicode_arrow($ashape, $as, $1); /eg; # insert the label last, other "v" as label might get replaced above $c =~ s/>##label##/$title>$label/; # for empty labels use a different class $c =~ s/ lh"/ eb"/ if $label eq ''; $c .= "\n" unless $c =~ /\n\z/; $self->quoted_comment() . $c; } sub class { my $self = shift; my $c = $self->{class} . ($self->{cell_class} || ''); $c = $self->{edge}->{group}->class() . ' ' . $c if ref($self->{edge}->{group}); $c; } sub group { # return the group we belong to as the group of our parent-edge my $self = shift; $self->{edge}->{group}; } ############################################################################# # accessor methods sub type { # get/set type of this path element # type - EDGE_START, EDGE_END, EDGE_HOR, EDGE_VER, etc my ($self,$type) = @_; if (defined $type) { if (defined $type && $type < 0 || $type > EDGE_MAX_TYPE) { require Carp; Carp::confess ("Cell type $type for cell $self->{x},$self->{y} is not valid."); } $self->{type} = $type; } $self->{type}; } ############################################################################# # For rendering this path element as ASCII, we need to correct our width based # on whether we have a border or not. But this is only known after parsing is # complete. sub _correct_size { my ($self,$format) = @_; return if defined $self->{w}; # min-size is this $self->{w} = 5; $self->{h} = 3; # make short cell pieces very small if (($self->{type} & EDGE_SHORT_CELL) != 0) { $self->{w} = 1; $self->{h} = 1; return; } my $arrows = ($self->{type} & EDGE_ARROW_MASK); my $type = ($self->{type} & EDGE_TYPE_MASK); if ($self->{edge}->{bidirectional} && $arrows != 0) { $self->{w}++ if $type == EDGE_HOR; $self->{h}++ if $type == EDGE_VER; } # make joints bigger if they got arrows my $ah = $self->{type} & EDGE_ARROW_HOR; my $av = $self->{type} & EDGE_ARROW_VER; $self->{w}++ if $ah && ($type == EDGE_S_E_W || $type == EDGE_N_E_W); $self->{h}++ if $av && ($type == EDGE_E_N_S || $type == EDGE_W_N_S); my $style = $self->{edge}->attribute('style') || 'solid'; # make the edge to display ' ..-> ' instead of ' ..> ': $self->{w}++ if $style eq 'dot-dot-dash'; if ($type >= EDGE_LOOP_TYPE) { # +---+ # | V # + # +--> | # | | # +--- | # + $self->{w} = 7; $self->{w} = 8 if $type == EDGE_N_W_S || $type == EDGE_S_W_N; $self->{h} = 3; $self->{h} = 5 if $type != EDGE_N_W_S && $type != EDGE_S_W_N; } if ($self->{type} == EDGE_HOR) { $self->{w} = 0; } elsif ($self->{type} == EDGE_VER) { $self->{h} = 0; } elsif ($self->{type} & EDGE_LABEL_CELL) { # edges do not have borders my ($w,$h) = $self->dimensions(); $h-- unless $h == 0; $h += $self->{h}; $w += $self->{w}; $self->{w} = $w; $self->{h} = $h; } } ############################################################################# # attribute handling sub attribute { my ($self, $name) = @_; my $edge = $self->{edge}; # my $native = $edge->{att}->{$name}; # return $native if defined $native && $native ne 'inherit'; # shortcut, look up the attribute directly return $edge->{att}->{$name} if defined $edge->{att}->{$name} && $edge->{att}->{$name} ne 'inherit'; return $edge->attribute($name); # XXX TODO This does not work, since caching the attribute doesn't get invalidated # upon set_attribute(). # $edge->{cache} = {} unless exists $edge->{cache}; # $edge->{cache}->{att} = {} unless exists $edge->{cache}->{att}; # # my $cache = $edge->{cache}->{att}; # return $cache->{$name} if exists $cache->{$name}; # # my $rc = $edge->attribute($name); # # only cache values that weren't inherited to avoid cache problems # $cache->{$name} = $rc unless defined $native && $native eq 'inherit'; # # $rc; } 1; ############################################################################# ############################################################################# package Graph::Easy::Edge::Cell::Empty; require Graph::Easy::Node::Cell; our @ISA = qw/Graph::Easy::Node::Cell/; #use vars qw/$VERSION/; our $VERSION = '0.75'; use constant isa_cell => 1; 1; __END__ =head1 NAME Graph::Easy::Edge::Cell - A cell in an edge in Graph::Easy =head1 SYNOPSIS use Graph::Easy; my $ssl = Graph::Easy::Edge->new( label => 'encrypted connection', style => 'solid', color => 'red', ); my $src = Graph::Easy::Node->new( 'source' ); my $dst = Graph::Easy::Node->new( 'destination' ); $graph = Graph::Easy->new(); $graph->add_edge($src, $dst, $ssl); print $graph->as_ascii(); =head1 DESCRIPTION A C represents an edge between two (or more) nodes in a simple graph. Each edge has a direction (from source to destination, or back and forth), plus a style (line width and style), colors etc. It can also have a name, e.g. a text label associated with it. There should be no need to use this package directly. =head1 METHODS =head2 error() $last_error = $edge->error(); $cvt->error($error); # set new messags $cvt->error(''); # clear error Returns the last error message, or '' for no error. =head2 as_ascii() my $ascii = $path->as_ascii(); Returns the path-cell as a little ascii representation. =head2 as_html() my $html = $path->as_html($tag,$id); eturns the path-cell as HTML code. =head2 label() my $label = $path->label(); Returns the name (also known as 'label') of the path-cell. =head2 style() my $style = $edge->style(); Returns the style of the edge. =head1 EXPORT None by default. Can export the following on request: EDGE_START_E EDGE_START_W EDGE_START_N EDGE_START_S EDGE_END_E EDGE_END_W EDGE_END_N EDGE_END_S EDGE_SHORT_E EDGE_SHORT_W EDGE_SHORT_N EDGE_SHORT_S EDGE_SHORT_BD_EW EDGE_SHORT_BD_NS EDGE_SHORT_UN_EW EDGE_SHORT_UN_NS EDGE_HOR EDGE_VER EDGE_CROSS EDGE_N_E EDGE_N_W EDGE_S_E EDGE_S_W EDGE_S_E_W EDGE_N_E_W EDGE_E_N_S EDGE_W_N_S EDGE_LOOP_NORTH EDGE_LOOP_SOUTH EDGE_LOOP_EAST EDGE_LOOP_WEST EDGE_N_W_S EDGE_S_W_N EDGE_E_S_W EDGE_W_S_E EDGE_TYPE_MASK EDGE_FLAG_MASK EDGE_ARROW_MASK EDGE_START_MASK EDGE_END_MASK EDGE_MISC_MASK ARROW_RIGHT ARROW_LEFT ARROW_UP ARROW_DOWN =head1 SEE ALSO L. =head1 AUTHOR Copyright (C) 2004 - 2007 by Tels L. See the LICENSE file for more details. =cut Graph-Easy-0.75/lib/Graph/Easy/Group000755000764000764 012322253245 17506 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/lib/Graph/Easy/Group/Cell.pm000444000764000764 2140712322253245 21104 0ustar00shlomifshlomif000000000000############################################################################# # A cell of a group during layout. Part of Graph::Easy. # ############################################################################# package Graph::Easy::Group::Cell; use Graph::Easy::Node; @ISA = qw/Graph::Easy::Node/; $VERSION = '0.75'; use strict; use warnings; BEGIN { *get_attribute = \&attribute; } ############################################################################# # The different types for a group-cell: use constant { GROUP_INNER => 0, # completely sourounded by group cells GROUP_RIGHT => 1, # right border only GROUP_LEFT => 2, # left border only GROUP_TOP => 3, # top border only GROUP_BOTTOM => 4, # bottom border only GROUP_ALL => 5, # completely sourounded by non-group cells GROUP_BOTTOM_RIGHT => 6, # bottom and right border GROUP_BOTTOM_LEFT => 7, # bottom and left border GROUP_TOP_RIGHT => 8, # top and right border GROUP_TOP_LEFT => 9, # top and left order GROUP_MAX => 5, # max number }; my $border_styles = { # type top, bottom, left, right, class GROUP_INNER() => [ 0, 0, 0, 0, ['gi'] ], GROUP_RIGHT() => [ 0, 0, 0, 1, ['gr'] ], GROUP_LEFT() => [ 0, 0, 1, 0, ['gl'] ], GROUP_TOP() => [ 1, 0, 0, 0, ['gt'] ], GROUP_BOTTOM() => [ 0, 1, 0, 0, ['gb'] ], GROUP_ALL() => [ 0, 0, 0, 0, ['ga'] ], GROUP_BOTTOM_RIGHT() => [ 0, 1, 0, 1, ['gb','gr'] ], GROUP_BOTTOM_LEFT() => [ 0, 1, 1, 0, ['gb','gl'] ], GROUP_TOP_RIGHT() => [ 1, 0, 0, 1, ['gt','gr'] ], GROUP_TOP_LEFT() => [ 1, 0, 1, 0, ['gt','gl'] ], }; my $border_name = [ 'top', 'bottom', 'left', 'right' ]; sub _css { my ($c, $id, $group, $border) = @_; my $css = ''; for my $type (0 .. 5) { my $b = $border_styles->{$type}; # If border eq 'none', this would needlessly repeat the "border: none" # from the general group class. next if $border eq 'none'; my $cl = '.' . $b->[4]->[0]; # $cl .= "-$group" unless $group eq ''; $css .= "table.graph$id $cl {"; if ($type == GROUP_INNER) { $css .= " border: none;"; # shorter CSS } elsif ($type == GROUP_ALL) { $css .= " border-style: $border;"; # shorter CSS } else { for (my $i = 0; $i < 4; $i++) { $css .= ' border-' . $border_name->[$i] . "-style: $border;" if $b->[$i]; } } $css .= "}\n"; } $css; } ############################################################################# sub _init { # generic init, override in subclasses my ($self,$args) = @_; $self->{class} = 'group'; $self->{cell_class} = ' gi'; $self->{name} = ''; $self->{'x'} = 0; $self->{'y'} = 0; # XXX TODO check arguments foreach my $k (sort keys %$args) { $self->{$k} = $args->{$k}; } if (defined $self->{group}) { # register ourselves at this group $self->{group}->_add_cell ($self); # XXX CHECK also implement sub_class() $self->{class} = $self->{group}->{class}; $self->{class} = 'group' unless defined $self->{class}; } $self; } sub _set_type { # set the proper type of this cell based on the sourrounding cells my ($self, $cells) = @_; # +------+--------+-------+ # | LT TOP RU | # + + + + # | LEFT INNER Right | # + + + + # | LB BOTTOM RB | # +------+--------+-------+ my @coord = ( [ 0, -1, ' gt' ], [ +1, 0, ' gr' ], [ 0, +1, ' gb' ], [ -1, 0, ' gl' ], ); my ($sx,$sy) = ($self->{x},$self->{y}); my $class = ''; my $gr = $self->{group}; foreach my $co (@coord) { my ($x,$y,$c) = @$co; $x += $sx; $y += $sy; my $cell = $cells->{"$x,$y"}; # belongs to the same group? my $go = 0; $go = $cell->group() if UNIVERSAL::can($cell, 'group'); $class .= $c unless defined $go && $gr == $go; } $class = ' ga' if $class eq ' gt gr gb gl'; $self->{cell_class} = $class; $self; } sub _set_label { my $self = shift; $self->{has_label} = 1; $self->{name} = $self->{group}->label(); } sub shape { 'rect'; } sub attribute { my ($self, $name) = @_; # print STDERR "called attribute($name)\n"; # return $self->{group}->attribute($name); my $group = $self->{group}; return $group->{att}->{$name} if exists $group->{att}->{$name}; $group->{cache} = {} unless exists $group->{cache}; $group->{cache}->{att} = {} unless exists $group->{cache}->{att}; my $cache = $group->{cache}->{att}; return $cache->{$name} if exists $cache->{$name}; $cache->{$name} = $group->attribute($name); } use constant isa_cell => 1; ############################################################################# # conversion to ASCII or HTML sub as_ascii { my ($self, $x,$y) = @_; my $fb = $self->_framebuffer($self->{w}, $self->{h}); my $border_style = $self->attribute('borderstyle'); my $EM = 14; # use $self here and not $self->{group} to engage attribute cache: my $border_width = Graph::Easy::_border_width_in_pixels($self,$EM); # convert overly broad borders to the correct style $border_style = 'bold' if $border_width > 2; $border_style = 'broad' if $border_width > $EM * 0.2 && $border_width < $EM * 0.75; $border_style = 'wide' if $border_width >= $EM * 0.75; if ($border_style ne 'none') { ######################################################################### # draw our border into the framebuffer my $c = $self->{cell_class}; my $b_top = $border_style; my $b_left = $border_style; my $b_right = $border_style; my $b_bottom = $border_style; if ($c !~ 'ga') { $b_top = 'none' unless $c =~ /gt/; $b_left = 'none' unless $c =~ /gl/; $b_right = 'none' unless $c =~ /gr/; $b_bottom = 'none' unless $c =~ /gb/; } $self->_draw_border($fb, $b_right, $b_bottom, $b_left, $b_top, $x, $y); } if ($self->{has_label}) { # include our label my $align = $self->attribute('align'); # the default label cell as a top border, but no left/right border my $ys = 0.5; $ys = 0 if $border_style eq 'none'; my $h = $self->{h} - 1; $h ++ if $border_style eq 'none'; $self->_printfb_aligned ($fb, 0, $ys, $self->{w}, $h, $self->_aligned_label($align), 'middle'); } join ("\n", @$fb); } sub class { my $self = shift; $self->{class} . $self->{cell_class}; } ############################################################################# # for rendering this cell as ASCII/Boxart, we need to correct our width based # on whether we have a border or not. But this is only known after parsing is # complete. sub _correct_size { my ($self,$format) = @_; if (!defined $self->{w}) { my $border = $self->attribute('borderstyle'); $self->{w} = 0; $self->{h} = 0; # label needs space $self->{h} = 1 if $self->{has_label}; if ($border ne 'none') { # class "gt", "gb", "gr" or "gr" will be compressed away # (e.g. only edge cells will be existant) if ($self->{has_label} || ($self->{cell_class} =~ /g[rltb] /)) { $self->{w} = 2; $self->{h} = 2; } elsif ($self->{cell_class} =~ /^ g[rl]\z/) { $self->{w} = 2; } elsif ($self->{cell_class} =~ /^ g[bt]\z/) { $self->{h} = 2; } } } if ($self->{has_label}) { my ($w,$h) = $self->dimensions(); $self->{h} += $h; $self->{w} += $w; } } 1; __END__ =head1 NAME Graph::Easy::Group::Cell - A cell in a group =head1 SYNOPSIS use Graph::Easy; my $ssl = Graph::Easy::Edge->new( ); $ssl->set_attributes( label => 'encrypted connection', style => '-->', color => 'red', ); $graph = Graph::Easy->new(); $graph->add_edge('source', 'destination', $ssl); print $graph->as_ascii(); =head1 DESCRIPTION A C represents a cell of a group. Group cells can have a background and, if they are on the outside, a border. There should be no need to use this package directly. =head1 METHODS =head2 error() $last_error = $group->error(); $group->error($error); # set new messags $group->error(''); # clear error Returns the last error message, or '' for no error. =head2 as_ascii() my $ascii = $cell->as_ascii(); Returns the cell as a little ascii representation. =head2 as_html() my $html = $cell->as_html($tag,$id); Returns the cell as HTML code. =head2 label() my $label = $cell->label(); Returns the name (also known as 'label') of the cell. =head2 class() my $class = $cell->class(); Returns the classname(s) of this cell, like: group_cities gr gb for a cell with a bottom (gb) and right (gr) border in the class C. =head1 EXPORT None. =head1 SEE ALSO L. =head1 AUTHOR Copyright (C) 2004 - 2007 by Tels L. See the LICENSE file for more details. =cut Graph-Easy-0.75/lib/Graph/Easy/Group/Anon.pm000444000764000764 351312322253245 21076 0ustar00shlomifshlomif000000000000############################################################################# # (c) by Tels 2004. Part of Graph::Easy. An anonymous group. # ############################################################################# package Graph::Easy::Group::Anon; use Graph::Easy::Group; use warnings; @ISA = qw/Graph::Easy::Group/; $VERSION = '0.75'; use strict; sub _init { my $self = shift; $self->SUPER::_init(@_); $self->{name} = 'Group #' . $self->{id}; $self->{class} = 'group.anon'; $self->{att}->{label} = ''; $self; } sub _correct_size { my $self = shift; $self->{w} = 3; $self->{h} = 3; $self; } sub attributes_as_txt { my $self = shift; $self->SUPER::attributes_as_txt( { node => { label => undef, shape => undef, class => undef, } } ); } sub as_pure_txt { '( )'; } sub _as_part_txt { '( )'; } sub as_graphviz_txt { my $self = shift; my $name = $self->{name}; # quote special chars in name $name =~ s/([\[\]\(\)\{\}\#])/\\$1/g; '"' . $name . '"'; } sub text_styles_as_css { ''; } sub is_anon { # is an anon group 1; } 1; __END__ =head1 NAME Graph::Easy::Group::Anon - An anonymous group of nodes in Graph::Easy =head1 SYNOPSIS use Graph::Easy::Group::Anon; my $anon = Graph::Easy::Group::Anon->new(); =head1 DESCRIPTION A C represents an anonymous group of nodes, e.g. a group without a name. The syntax in the Graph::Easy textual description language looks like this: ( [ Bonn ] -> [ Berlin ] ) This module is loaded and used automatically by Graph::Easy, so there is no need to use it manually. =head1 EXPORT None by default. =head1 SEE ALSO L. =head1 AUTHOR Copyright (C) 2004 - 2006 by Tels L. See the LICENSE file for more details. =cut Graph-Easy-0.75/lib/Graph/Easy/Node000755000764000764 012322253245 17277 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/lib/Graph/Easy/Node/Cell.pm000444000764000764 425312322253245 20655 0ustar00shlomifshlomif000000000000############################################################################# # (c) by Tels 2004 - 2005. An empty filler cell. Part of Graph::Easy. # ############################################################################# package Graph::Easy::Node::Cell; use Graph::Easy::Node; use strict; use warnings; use vars qw(@ISA $VERSION); @ISA = qw/Graph::Easy::Node/; $VERSION = '0.75'; ############################################################################# sub _init { # generic init, override in subclasses my ($self,$args) = @_; $self->{class} = ''; $self->{name} = ''; $self->{'x'} = 0; $self->{'y'} = 0; # default: belongs to no node $self->{node} = undef; foreach my $k (sort keys %$args) { if ($k !~ /^(node|graph|x|y)\z/) { require Carp; Carp::confess ("Invalid argument '$k' passed to Graph::Easy::Node::Cell->new()"); } $self->{$k} = $args->{$k}; } $self; } sub _correct_size { my $self = shift; $self->{w} = 0; $self->{h} = 0; $self; } sub node { # return the node this cell belongs to my $self = shift; $self->{node}; } sub as_ascii { ''; } sub as_html { ''; } sub group { my $self = shift; $self->{node}->group(); } 1; __END__ =head1 NAME Graph::Easy::Node::Cell - An empty filler cell =head1 SYNOPSIS use Graph::Easy; use Graph::Easy::Edge; my $graph = Graph::Easy->new(); my $node = $graph->add_node('A'); my $path = Graph::Easy::Node::Cell->new( graph => $graph, node => $node, ); ... print $graph->as_ascii(); =head1 DESCRIPTION A C is used to reserve a cell in the grid for nodes that occupy more than one cell. You should not need to use this class directly. =head1 METHODS =head2 error() $last_error = $cell->error(); $cvt->error($error); # set new messags $cvt->error(''); # clear error Returns the last error message, or '' for no error. =head2 node() my $node = $cell->node(); Returns the node this filler cell belongs to. =head1 SEE ALSO L. =head1 AUTHOR Copyright (C) 2004 - 2005 by Tels L. See the LICENSE file for more details. =cut Graph-Easy-0.75/lib/Graph/Easy/Node/Empty.pm000444000764000764 232412322253245 21071 0ustar00shlomifshlomif000000000000############################################################################# # An empty, borderless cell. Part of Graph::Easy. # ############################################################################# package Graph::Easy::Node::Empty; use Graph::Easy::Node; @ISA = qw/Graph::Easy::Node/; $VERSION = '0.75'; use strict; use warnings; ############################################################################# sub _init { # generic init, override in subclasses my ($self,$args) = @_; $self->SUPER::_init($args); $self->{class} = 'node.empty'; $self; } sub _correct_size { my $self = shift; $self->{w} = 3; $self->{h} = 3; $self; } 1; __END__ =head1 NAME Graph::Easy::Node::Empty - An empty, borderless cell in a node cluster =head1 SYNOPSIS my $cell = Graph::Easy::Node::Empty->new(); =head1 DESCRIPTION A C represents a borderless, empty cell in a node cluster. It is mainly used to have an object to render collapsed borders in ASCII output. You should not need to use this class directly. =head1 SEE ALSO L. =head1 AUTHOR Copyright (C) 2004 - 2007 by Tels L. See the LICENSE file for more details. =cut Graph-Easy-0.75/lib/Graph/Easy/Node/Anon.pm000444000764000764 323112322253245 20664 0ustar00shlomifshlomif000000000000############################################################################# # (c) by Tels 2004. Part of Graph::Easy. An anonymous (invisible) node. # ############################################################################# package Graph::Easy::Node::Anon; use Graph::Easy::Node; @ISA = qw/Graph::Easy::Node/; $VERSION = '0.75'; use strict; use warnings; sub _init { my $self = shift; $self->SUPER::_init(@_); $self->{name} = '#' . $self->{id}; $self->{class} = 'node.anon'; $self->{att}->{label} = ' '; $self; } sub _correct_size { my $self = shift; $self->{w} = 3; $self->{h} = 3; $self; } sub attributes_as_txt { my $self = shift; $self->SUPER::attributes_as_txt( { node => { label => undef, shape => undef, class => undef, } } ); } sub as_pure_txt { '[ ]'; } sub _as_part_txt { '[ ]'; } sub as_txt { my $self = shift; '[ ]' . $self->attributes_as_txt(); } sub text_styles_as_css { ''; } sub is_anon { # is an anon node 1; } 1; __END__ =head1 NAME Graph::Easy::Node::Anon - An anonymous, invisible node in Graph::Easy =head1 SYNOPSIS use Graph::Easy::Node::Anon; my $anon = Graph::Easy::Node::Anon->new(); =head1 DESCRIPTION A C represents an anonymous, invisible node. These can be used to let edges start and end "nowhere". The syntax in the Graph::Easy textual description language looks like this: [ ] -> [ Bonn ] -> [ ] =head1 EXPORT None by default. =head1 SEE ALSO L. =head1 AUTHOR Copyright (C) 2004 - 2006 by Tels L. See the LICENSE file for more details. =cut Graph-Easy-0.75/bench000755000764000764 012322253245 14761 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/bench/test.txt000444000764000764 6112322253245 16573 0ustar00shlomifshlomif000000000000graph { autolink: name; } [ Bonn ] -> [ Berlin ] Graph-Easy-0.75/bench/stress.pl000444000764000764 471412322253245 17004 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w BEGIN { use lib 'lib'; $|++; } use Scalar::Util qw/weaken/; use Time::HiRes qw/time/; use Data::Dumper; use Graph::Easy; my $N1 = shift || 5000; my $N2 = shift || 40000; my $STEP = shift || 2; # results my $RC = []; print "Using Graph::Easy v$Graph::Easy::VERSION\n"; for (my $N = $N1; $N < $N2; $N *= $STEP) { my @R = ($N); my $start = time(); print scalar localtime(), " start\n"; normal($N); print scalar localtime(), " done, took ", sprintf("%.2f", time() - $start)," seconds\n"; push @R, sprintf("%.2f",time() - $start); $start = time(); print scalar localtime(), " start\n"; my $graph = graph($N); # return the graph to show that creation sep. print scalar localtime(), " done creation, took ", sprintf("%.2f", time() - $start)," seconds\n"; push @R, sprintf("%.2f",time() - $start); $start = time(); $graph = undef; print scalar localtime(), " done destroy, took ", sprintf("%.2f", time() - $start)," seconds\n"; push @R, sprintf("%.2f",time() - $start); $start = time(); push @$RC, [ @R ]; } print "\n"; print "\n", join("\t\t", 'N', 'Normal', 'Graph-Easy'), "\tGraph-Easy\n"; print join("\t\t", '', '', 'Create','Destroy'), "\n"; print '-' x 70,"\n"; # print results for my $R (@$RC) { print join("\t\t", @$R), "\n"; } sub graph { my $N = shift; my $graph = Graph::Easy->new(); # create N objects, and "link" them together for my $i (1..$N) { my $b = $i; $b++; $graph->add_edge($i,$b); } print Dumper($graph),"\n" if $N < 10; $graph; } sub normal { my $N = shift; my $container = {}; my $old_object; # create N objects, and "link" them together for my $i (1..$N) { my $o = new_object($i); $container->{nodes}->{$i} = $o; $o->{graph} = $container; weaken($o->{graph}); if ($old_object) { my $link = new_link($old_object, $o, $i); $container->{edges}->{$i} = $link; $link->{graph} = $container; { no warnings; weaken($link->{graph}); weaken($link->{to}->{graph}); weaken($link->{from}->{graph}); } } $old_object = $o; } print Dumper($container),"\n" if $N < 10; } sub new_object { my $id = shift; my $o = bless { id => $id, att => {}, }, 'main'; $o; } sub new_link { my ($a,$b,$id) = @_; my $link = bless { id => $id, from => $a, to => $b, att => {} }, 'main'; $a->{edges}->{$id} = $link; $b->{edges}->{$id} = $link; $link; } Graph-Easy-0.75/bench/serie.pl000444000764000764 434612322253245 16571 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w use Benchmark; use Graph::Easy; use Time::HiRes qw/time/; use strict; use Devel::Size qw/total_size/; print "# Graph::Easy v", $Graph::Easy::VERSION,"\n"; my @results; my ($n,$last,$g, $size); my @counts = ( qw/5 10 50 100 200 500 1000/ ); for my $count (@counts) { print "Creating graph with ", $count * 3, " nodes and edges...\n"; my $rc = [ ]; push @$rc, time_it ( \&create, $count); $size = total_size($g); print "Graph objects takes $size bytes.\n"; print "Creating txt...\n"; print $g->as_ascii() if $count == 5; if ($Graph::Easy::VERSION < 0.25 && ($count > 500)) { print "Skipping as_foo() tests.\n"; push @$rc, 0, 0; } else { push @$rc, time_it ( \&as_txt ), time_it ( \&as_ascii); } push @$rc, $size; push @results, $rc; } print "Results\n"; for my $r (@results) { print join (" ", @$r),"\n"; } print " \n \n \n \n \n"; my $i = 0; for my $t ( qw/Creation as_txt as_ascii Memory/ ) { print " \n \n"; for my $r (@results) { print " \n"; } print " \n"; $i++; } #print STDERR $g->as_graphviz(); 1; ############################################################################# sub time_it { my $time = time; my $r = shift; &$r(@_); my $took = sprintf ("%0.4f", time - $time); print "Took ${took}s\n"; $took; } sub as_txt { my $t = $g->as_txt(); } sub as_ascii { my $t = $g->as_ascii(); } sub create { my $cnt = abs(shift || 1000); $g = Graph::Easy->new(); $n = Graph::Easy::Node->new('0'); $last = Graph::Easy::Node->new('1'); for (2..$cnt+1) { my $node = Graph::Easy::Node->new($_); $g->add_edge($last, $node); my $n2 = Graph::Easy::Node->new($_.'A'); $g->add_edge($last, $n2); my $n3 = Graph::Easy::Node->new($_.'B'); $g->add_edge($last, $n3); $last = $node; } # prior to 0.25, the two calls to nodes() and edges() will take O(N) time, further # slowing down this routine by about 10-20%. print "Have now ", scalar $g->nodes(), " nodes and ", scalar $g->edges()," edges.\n"; $g->{timeout} = 120; } Graph-Easy-0.75/bench/bench.pl000444000764000764 367112322253245 16541 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w use Benchmark; use Graph::Easy; use Time::HiRes qw/time/; use strict; use Devel::Size qw/total_size/; print "# Graph::Easy v", $Graph::Easy::VERSION,"\n"; print "Creating graph...\n"; my ($g,$n,$last); time_it ( \&create, shift); print "Creating txt...\n"; time_it ( \&as_txt ); # dump the text for later #print STDERR $g->as_txt(); exit; #print STDERR $g->as_graphviz(); exit; # $g->timeout(20) if $g->can('timeout'); print $g->as_ascii() if $g->nodes() < 40; # for profile with -d:DProf #for (0..5) { $g->layout(); } exit; print "\n"; exit if shift; print "Benchmarking...\n"; $n = $g->node('1'); timethese (-5, { 'node cnt' => sub { scalar $g->nodes(); }, 'edge cnt' => sub { scalar $g->edges(); }, 'nodes' => sub { my @O = $g->nodes(); }, 'edges' => sub { my @O = $g->edges(); }, "conn's" => sub { $n->connections(); }, "succ's" => sub { scalar $n->successors(); }, "succ' cnt" => sub { my @O = $n->successors(); }, "edges_to" => sub { my @O = $n->edges_to($last) }, # "layout" => sub { $g->layout(); }, # "as_txt" => sub { $g->as_txt(); }, } ); sub time_it { my $time = time; my $r = shift; &$r(@_); printf ("Took %0.4fs\n", time - $time); } sub as_txt { my $t = $g->as_txt(); } sub create { my $cnt = abs(shift || 1000); $g = Graph::Easy->new(); $n = Graph::Easy::Node->new('0'); $last = Graph::Easy::Node->new('1'); for (2..$cnt) { my $node = Graph::Easy::Node->new($_); $g->add_edge($last, $node); my $n2 = Graph::Easy::Node->new($_.'A'); $g->add_edge($last, $n2); my $n3 = Graph::Easy::Node->new($_.'B'); $g->add_edge($last, $n3); $last = $node; } # prior to 0.25, the two calls to nodes() and edges() will take O(N) time, further # slowing down this routine by about 10-20%. print "Have now ", scalar $g->nodes(), " nodes and ", scalar $g->edges()," edges.\n"; print "Graph objects takes ", total_size($g), " bytes.\n"; } Graph-Easy-0.75/bench/test.dot000444000764000764 47612322253245 16574 0ustar00shlomifshlomif000000000000digraph GRAPH_0 { // Generated by Graph::Easy 0.38 at Sat Dec 31 16:13:04 2005 edge [ arrowhead=open ]; graph [ rankdir=LR ]; node [ fontsize=11, fillcolor=white, style=filled, shape=box ]; Berlin [ URL="/wiki/index.php/Berlin" ] Bonn [ URL="/wiki/index.php/Bonn" ] Bonn -> Berlin } Graph-Easy-0.75/examples000755000764000764 012322253245 15520 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/examples/as_txt000555000764000764 174112322253245 17110 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/graph-easy script - # which is after "make install" available on any command line in your system. # Convert an input file containing a Graph::Easy object, then dump # it again as textual description. # Example usage: # examples/as_txt t/in/2nodes.txt # echo "[ A ] -> [ B ]" | examples/as_txt BEGIN { $|++; } use lib 'lib'; use Graph::Easy::Parser; my $file = shift; my $id = shift || ''; my $debug = shift; my $parser = Graph::Easy::Parser->new( debug => $debug ); if (!defined $file) { $file = \*STDIN; binmode STDIN, ':utf8' or die ("binmode STDIN, ':utf8' failed: $!"); } my $graph = $parser->from_file( $file ); die ($parser->error()) unless defined $graph; $graph->id($id); warn($graph->error()) if $graph->error(); binmode STDOUT, ':utf8' or die ("binmode STDOUT, ':utf8' failed: $!"); print $graph->as_txt(); Graph-Easy-0.75/examples/syntax.tpl000444000764000764 347612322253245 17736 0ustar00shlomifshlomif000000000000<graph>-Plugin for Mediawiki - Syntax

<graph>-Plugin for Mediawiki

##NAME##

This page was automatically created at ##time## by examples/syntax.pl running Graph::Easy v##version##.

On each of the following testcases you will see the original text representation of the graph, a text representation created automatically from the parsed input, as well the automatically generated HTML+CSS code.

Notes:

Table of Contents:

##TOC##
##HTML##
Graph-Easy-0.75/examples/as_svg000555000764000764 206412322253245 17067 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/graph-easy script - # which is after "make install" available on any command line in your system. # Convert an input file containing a Graph::Easy description to # standalone SVG file # Example usage: # examples/as_svg t/in/2nodes.txt >test.svg # echo "[ A ] -> [ B ]" | examples/as_svg BEGIN { $|++; } use strict; use lib 'lib'; use Graph::Easy::Parser; my $file = shift; my $debug = shift; my $parser = Graph::Easy::Parser->new( debug => $debug ); if (!defined $file) { $file = \*STDIN; binmode STDIN, ':utf8' or die ("binmode STDIN, ':utf8' failed: $!"); } binmode STDERR, ':utf8' or die ("binmode STDERR, ':utf8' failed: $!"); my $graph = $parser->from_file( $file ); die ($parser->error()) unless defined $graph; $graph->timeout(360); $graph->layout(); warn ($graph->error()) if $graph->error(); binmode STDOUT, ':utf8' or die ("binmode STDOUT, ':utf8' failed: $!"); print $graph->as_svg_file(); Graph-Easy-0.75/examples/wikicrawl.pl000444000764000764 2020112322253245 20221 0ustar00shlomifshlomif000000000000#!/usr/bin/perl use strict; use Graph::Easy; use LWP; use HTML::TokeParser; use utf8; use Getopt::Long; use Encode; use Data::Dumper; my $VERSION = 0.03; # things that shouldn't be looked at my %bad = map { $_ => 1 } qw/ Wikipedia Image Talk Help Template Portal Special User Category Wikipedia Bild Diskussion Hilfe Vorlage Portal Spezial Benutzer Kategorie Wikipédia Image Discuter Modèle Mod%C3%A9le Aide Utilisateur Catégorie Cat%C3%A9gorie /; # do not crawl these: my $skip = qr/\((disambiguation|Begriffsklärung|Homonymie)\)/i; # to figure out redirections my $redir = qr/(Weitergeleitet von|Redirected from|Redirig. depuis).*?title="(.*?)"/i; # the default settings are defined in get_options() # option handling my $help_requested = 0; $help_requested = 1 if @ARGV == 0; my $opt = get_options(); # error? $help_requested = 1 if !ref($opt); # no error and --help was specified $help_requested = 2 if ref($opt) && $opt->{help} ne ''; my $copyright = "wikicrawl v$VERSION (c) by Tels 2008. " ."Released under the GPL 2.0 or later.\n\n" ."After a very cool idea by 'integral' on forum.xkcd.com. Thanx! :)\n\n"; if (ref($opt) && $opt->{version} != 0) { print $copyright; print "Running under Perl v$].\n\n"; exit 2; } if ($help_requested > 0) { print STDERR $copyright; require Pod::Usage; if ($help_requested > 1 && $Pod::Usage::VERSION < 1.35) { # The way old Pod::Usage executes "perldoc" might fail: system('perldoc', $0); exit 2; } Pod::Usage::pod2usage( { -exitval => 2, -verbose => $help_requested } ); } my $verbose = $opt->{verbose}; output ($copyright); my $graph = Graph::Easy->new(); # set some default attributes on the graph $graph->set_attribute('node','shape',$opt->{nodeshape}); $graph->set_attribute('node','font-size','80%'); $graph->set_attribute('edge','arrowstyle','filled'); $graph->set_attribute('graph','label',"Wikipedia map for $opt->{root}"); $graph->set_attribute('graph','font-size', '200%'); $graph->set_attribute('graph','comment', "Created with wikicrawl.pl v$VERSION"); output ("Using the following settings:\n"); print Data::Dumper->Dump([$opt], ['opt']); # don't crawl stuff twice my %visitedLinks; # re-use the UserAgent object my $ua = LWP::UserAgent->new(); #$ua->agent("WikiCrawl/$VERSION - " . $ua->_agent . " - vGraph::Easy $Graph::Easy::VERSION"); # count how many we have done my $nodes = 0; # enable UTF-8 output binmode STDERR, ':utf8'; binmode STDOUT, ':utf8'; # push the first node on the stack my @todo = [$opt->{root},0]; # and work on it (this will take one off and then push more nodes on it) while (@todo && crawl()) { }; my $file = "wikicrawl-$opt->{lang}.txt"; output ("Generating $file:\n"); open(my $DATA, ">", "$file") or die("Could not write to '$file': $!"); binmode ($DATA,':utf8'); print $DATA $graph->as_txt(); close $DATA; output ("All done.\n"); my $png = $file; $png =~ s/.txt/.png/; output ("Generating $png:\n"); `perl -Ilib bin/graph-easy --png --renderer=$opt->{renderer} $file`; output ("All done.\n"); ######################################################################################## # main crawl routine sub crawl { no warnings 'recursion'; # all done? return if @todo == 0; my ($name,$depth) = ($todo[0]->[0],$todo[0]->[1]); shift @todo; my $page = "http://$opt->{lang}.wikipedia.org/wiki/$name"; # limit depth return if $depth + 1 > $opt->{maxdepth}; # already did as many nodes? return if $opt->{maxnodes} > 0 && $nodes > $opt->{maxnodes}; # skip this page return 1 if exists $visitedLinks{$page}; # crawl page my $res = $ua->request(HTTP::Request->new(GET => $page)); return 1 unless $res->is_success(); # remove the " - Wikipedia" (en) or " – Wikipedia" (de) from the title my $title = decode('utf8',$res->title); # convert to UTF-8 $title =~ s/ [–-] Wikip[ée]dia.*//; return 1 if $title =~ $skip; # no disambiguation pages # tels: not sure when/why these happen: print STDERR "# $title ",$res->title()," $page\n" if $title eq ''; output ("Crawling node #$nodes '$title' at depth $depth\n"); $nodes++; # set flag $visitedLinks{$page} = undef; my $content = $res->content; # parse anchors my $parser = HTML::TokeParser->new(\$content) or die("Could not parse page."); # handle redirects: $content = decode('utf-8', $content); $content =~ $redir; my $old = $2; if ($old) { output (" Redirected to '$title' from '$old'\n"); # find the node named "$old" (at the same time adding it if it didn't exist yet) my $source = $graph->add_node($old); # and mention the redirect in the label $source->set_attribute('label', "$old\\n($title)"); # now force edges to come from that node $title = $old; } # iterate over all links for(my $i = 0; (my $token = $parser->get_tag("a")) && ($i < $opt->{maxspread} || $opt->{maxspread} == 0);) { my $url = $token->[1]{href}; my $alt = $token->[1]{title}; next unless defined $url; # we do not crawl these: next if $url !~ m/^\/wiki\//; # no pages outside of wikipedia next if $alt =~ $skip; # no disambiguation pages next if $alt =~ m/\[/; # no brackets my @chunks = split ":", substr(decode('utf-8',$url), 6); # extract special pages, if any next if exists $bad{$chunks[0]}; # no bad pages $i++; if ($title ne $alt) { output (" Adding link from '$title' to '$alt'\n", 1); my ($from,$to,$edge) = $graph->add_edge_once($title,$alt); if (defined $to) { my $old_depth = $to->raw_attribute('rank'); if (!$old_depth) { my $color = sprintf("%i", (360 / $opt->{maxdepth}) * ($depth)); $to->set_attribute('fill', 'hsl(' .$color.',1,0.7)'); # store rank $to->set_attribute('rank', $depth+1); } } } my $u = $url; $u =~ s/^\/wiki\///; push @todo, [$u,$depth+1]; } # continue return 1; } sub get_options { my $opt = {}; $opt->{help} = ''; $opt->{version} = 0; # max depth to crawl $opt->{maxdepth} = 4; # max number of links per node $opt->{maxspread} = 5; # stop after so many nodes, -1 to disable $opt->{maxnodes} = -1; # language $opt->{lang} = 'en'; # root node $opt->{root} = 'Xkcd'; $opt->{renderer} = 'neato'; $opt->{nodeshape} = 'rect'; my @o = ( "language=s" => \$opt->{lang}, "root=s" => \$opt->{root}, "maxdepth=i" => \$opt->{maxdepth}, "maxspread=i" => \$opt->{maxspread}, "maxnodes=i" => \$opt->{maxnodes}, "version" => \$opt->{version}, "help|?" => \$opt->{help}, "verbose" => \$opt->{verbose}, "nodeshape" => \$opt->{nodeshape}, ); return unless Getopt::Long::GetOptions (@o); $opt; } sub output { my ($txt, $level) = @_; $level |= 0; print STDERR $txt if $opt->{verbose} || $level == 0; } =pod =head1 NAME wikicrawl - crawl Wikipedia to generate graph from the found article links =head1 SYNOPSIS Crawl wikipedia and create a L text describing the inter-article links that were found during the crawl. At least one argument must be given to start: perl examples/wikicrawl.pl --lang=fr =head1 ARGUMENTS Here are the options: =over 12 =item --help Print the full documentation, not just this short overview. =item --version Write version info and exit. =item --language Select the language of Wikipedia that we should crawl. Currently supported are 'de', 'en' and 'fr'. Default is 'en'. =item --root Set the root node where the crawl should start. Default is of course 'Xkcd'. =item --maxdepth The maximum depth the crawl should go. Please select small values under 10. Default is 4. =item --maxspread The maximum number of links we follow per article. Please select small values under 10. Default is 5. =item --maxnodes The maximum number of nodes we crawl. Set to -1 (default) to disable. =back =head1 SEE ALSO L and L. =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the terms of the GPL. See the LICENSE file of Graph::Easy for a copy of the GPL. X =head1 AUTHOR Copyright (C) 2008 by integral L Copyright (C) 2008 by Tels L =cut Graph-Easy-0.75/examples/syntax.pl000444000764000764 1133612322253245 17564 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/grapheasy script - # which is after "make install" available in your system as simple as # "grapheasy" on any command line prompt. ############################################################################# # This script tries to generate graphs from all the files in t/syntax/ # and outputs the result as an HTML page. # Use it like: # examples/syntax.pl >test.html # and then open test.html in your favourite browser. BEGIN { chdir 'examples' if -d 'examples'; use lib '../lib'; } use strict; use warnings; use Graph::Easy::Parser; my $parser = Graph::Easy::Parser->new( debug => 0); my ($name, $template, $sep, @dirs) = @ARGV; $name = 'Graph::Easy Test page' unless $name; $template = 'syntax.tpl' unless $template; my @toc = (); open FILE, $template or die ("Cannot read 'syntax.tpl': $!"); local $/ = undef; my $html = ; close FILE; my $output = ''; my $ID = '0'; # generate the parts and push their names into @toc gen_graphs($parser, @dirs); my $toc = '
    '; for my $t (@toc) { $toc .= "
  • $t->[1]\n"; } $toc .= "
\n"; # insert the TOC $html =~ s/##TOC##/ $toc /; $html =~ s/##NAME##/ $name /; $html =~ s/##HTML##/ $output /; $html =~ s/##time##/ scalar localtime() /eg; $html =~ s/##version##/$Graph::Easy::VERSION/eg; print $html; # all done; 1; ############################################################################# sub gen_graphs { # for all files in a dir, generate a graph from it my $parser = shift; @dirs = qw/syntax stress/ unless @dirs; foreach my $dir (@dirs) { _for_all_files($parser, $dir); } } sub _for_all_files { my ($parser, $dir) = @_; opendir DIR, "../t/$dir" or die ("Cannot read dir '../t/$dir': $!"); my @files = readdir DIR; closedir DIR; foreach my $file (sort @files) { my $f = "../t/$dir/" . $file; next unless -f $f; # not a file? print STDERR "# at file $f\n"; open FILE, "$f" or die ("Cannot read '$f': $!"); local $/ = undef; my $input = ; close FILE; my $graph = $parser->from_text( $input ); if (!defined $graph) { my $error = $parser->error(); $output .= "

$dir/$file

" . "Top -^\n". "
\n". "Error: Could not parse input from $file: $error". "
Input was:\n" . "
$input
\n". "
\n"; next; } $graph->timeout(100); $graph->layout(); if ($graph->error()) { my $error = $graph->error(); $output .= "

$dir/$file

" . "Top -^\n". "
\n". "Error: $error". "
Input was:\n" . "
$input
\n". "
\n"; next; } $output .= out ($input, $graph, 'html', $dir, $file); } } sub out { my ($txt,$graph,$method,$dir, $file) = @_; $method = 'as_' . $method; # set unique ID for CSS $graph->id($ID++); my $t = $graph->nodes() . ' Nodes, ' . $graph->edges . ' Edges'; my $n = $dir."_$file"; $dir = ucfirst($dir); # get comment $txt =~ /^\s*#\s*(.*)/; my $comment = ucfirst($1 || ''); my $link; $link = $1 if $txt =~ /\n#\s*(http.*)/; my $name = $comment || $t; push @toc, [ $n, $name ]; my $out = "\n"; if (!$sep) { $out .= "

$dir: $name

\n" . "Top -^\n". "
\n"; $out .= "Error: " . $graph->error() if $graph->error(); my $input = "
\n" . "

Input

\n" . "
$txt
\n
" . "
\n" . "

As Text

\n" . "
" . $graph->as_txt() . "
\n
"; $out .= $input . "
\n" . "

As HTML:

\n" . $graph->$method() . "\n
\n"; $out .= "
 
\n\n"; } else { $out .= "

$name

\n"; $out .= "Top -^\n"; $out .= "Source\n" if $link; $out .= "Error: " . $graph->error() if $graph->error(); $out .= $graph->$method() . "\n" . "
\n\n"; # write out the input/text } $out; } Graph-Easy-0.75/examples/as_ascii000555000764000764 207612322253245 17363 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/graph-easy script - # which is after "make install" available on any command line in your system. # Convert an input file containing a Graph::Easy description to # ASCII art. # Example usage: # examples/as_ascii t/in/2nodes.txt # echo "[ A ] -> [ B ]" | examples/as_ascii BEGIN { $|++; } use lib 'lib'; use Graph::Easy::Parser; my $file = shift; my $id = shift || ''; my $debug = shift; my $parser = Graph::Easy::Parser->new( debug => $debug ); if (!defined $file) { $file = \*STDIN; binmode STDIN, ':utf8' or die ("binmode STDIN, ':utf8' failed: $!"); } binmode STDERR, ':utf8' or die ("binmode STDERR, ':utf8' failed: $!"); my $graph = $parser->from_file( $file ); die ($parser->error()) unless defined $graph; $graph->id($id); $graph->timeout(360); $graph->layout(); warn($graph->error()) if $graph->error(); binmode STDOUT, ':utf8' or die ("binmode STDOUT, ':utf8' failed: $!"); print $graph->as_ascii(); Graph-Easy-0.75/examples/as_graphviz000555000764000764 201512322253245 20116 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/graph-easy script - # which is after "make install" available on any command line in your system. # Convert an input file containing a Graph::Easy description to # graphviz output that can be feed to dot etc. # Example usage: # examples/as_graphviz t/in/2nodes.txt | dot -Tpng >test.png # echo "[ A ] -> [ B ]" | examples/as_graphviz | dot -Tpng >test.png BEGIN { $|++; } use strict; use lib 'lib'; use Graph::Easy::Parser; my $file = shift; my $parser = Graph::Easy::Parser->new( debug => 0 ); if (!defined $file) { $file = \*STDIN; binmode STDIN, ':utf8' or die ("binmode STDIN, ':utf8' failed: $!"); } binmode STDERR, ':utf8' or die ("binmode STDERR, ':utf8' failed: $!"); my $graph = $parser->from_file( $file ); die ($parser->error()) unless defined $graph; binmode STDOUT, ':utf8' or die ("binmode STDOUT, ':utf8' failed: $!"); print $graph->as_graphviz(); Graph-Easy-0.75/examples/history.txt000444000764000764 30012322253245 20070 0ustar00shlomifshlomif000000000000 [ Bonn ] -> [ Berlin ] [ Berlin ] -> [ Frankfurt ] [ Frankfurt ] -> [ Dresden ] [ Berlin ] -> [ Potsdam ] [ Potsdam ] -> [ Cottbus ] { border-color: red; } [ Cottbus ] -> [ Frankfurt ] Graph-Easy-0.75/examples/parse000555000764000764 141712322253245 16720 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w BEGIN { $|++; } use strict; use lib 'lib'; use Graph::Easy::Parser; print "# Graph::Easy v$Graph::Easy::VERSION\n"; my $file = shift; $file = \*STDIN unless defined $file; my $id = shift || ''; my $debug = shift || 0; my $parser = Graph::Easy::Parser->new( debug => $debug ); my $graph = $parser->from_file( $file ); print "# input: '$file'\n"; die ($parser->error()) unless defined $graph; print "# Graph has ", scalar $graph->nodes(), " nodes and ", scalar $graph->edges()," edges.\n"; $graph->id($id); $graph->timeout(240); $graph->layout(); warn ($graph->error()) if $graph->error(); print $graph->as_txt(); print $graph->as_ascii(), "\n"; print "\n", $graph->as_html(); Graph-Easy-0.75/examples/complex.txt000444000764000764 143212322253245 20065 0ustar00shlomifshlomif000000000000graph { border: 1px solid black; fill: oldlace; background: goldenrod; label: My sample graph; } edge { label-color: green; color: blue; } [ One ] { fill: seagreen; color: white; } -- label --> [ Two ] { shape: triangle; } [ One ] => { arrow-style: closed; } [ Three ] [ Five ] { fill: maroon; color: yellow; } <=> [ Three ] [ One ] .. Test\n label ..> [ Four ] [ Three ] { border-style: dashed; } .. Test\n label ..> { arrow-style: closed; } [ Six ] { label: Sixty\n Six\nand\nsix; } [ Five ] - Test label - > { label-color: darkslategrey; color: red; } [ Seven ] [ Seven ] -- [ Eight ] [ Five ] --> [ Eight ] [ Five ] --> [ Seven ] [ Two ] -> [ Four ] [ Three ] <-- Test label --> { arrow-style: closed; } [ Six ] [ Eight ] .. [ None ] { shape: none; fill: red; color: brown; } Graph-Easy-0.75/examples/ascii.pl000444000764000764 125512322253245 17305 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/grapheasy script - # which is after "make install" available in your system as simple as # "grapheasy" on any command line prompt. ############################################################################# # This script uses examples/common.pl to generate some example graphs and # displays them in ASCII. use strict; use warnings; BEGIN { chdir 'examples' if -d 'examples'; } require "common.pl"; sub out { my ($graph,$method) = @_; $method = 'as_' . $method; print $graph->$method(), "\n"; } gen_graphs (); Graph-Easy-0.75/examples/as_html000555000764000764 214012322253245 17227 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/graph-easy script - # which is after "make install" available on any command line in your system. # Convert an input file containing a Graph::Easy description to # an HTML page. # Example usage: # examples/as_html t/in/2nodes.txt >test.html # echo "[ A ] -> [ B ]" | examples/as_ascii BEGIN { $|++; } use strict; use lib 'lib'; use Graph::Easy::Parser; my $file = shift; my $id = shift || ''; my $debug = shift || 0; my $parser = Graph::Easy::Parser->new( debug => $debug ); if (!defined $file) { $file = \*STDIN; binmode STDIN, ':utf8' or die ("binmode STDIN, ':utf8' failed: $!"); } binmode STDERR, ':utf8' or die ("binmode STDERR, ':utf8' failed: $!"); my $graph = $parser->from_file( $file ); die ($parser->error()) unless defined $graph; $graph->id($id); $graph->timeout(360); $graph->layout(); warn ($graph->error()) if $graph->error(); binmode STDOUT, ':utf8' or die ("binmode STDOUT, ':utf8' failed: $!"); print $graph->as_html_page(); Graph-Easy-0.75/examples/as_boxart_html000555000764000764 211012322253245 20603 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/graph-easy script - # which is after "make install" available on any command line in your system. # Convert an input file containing a Graph::Easy description to # ASCII art using "box drawing" Unicode characters. # Example usage: # examples/as_boxart t/in/2nodes.txt # echo "[ A ] -> [ B ]" | examples/as_boxart BEGIN { $|++; } use lib 'lib'; use Graph::Easy::Parser; my $file = shift; my $id = shift || ''; my $debug = shift; my $parser = Graph::Easy::Parser->new( debug => $debug ); if (!defined $file) { $file = \*STDIN; binmode STDIN, ':utf8' or die ("binmode STDIN, ':utf8' failed: $!"); } my $graph = $parser->from_file( $file ); die ($parser->error()) unless defined $graph; $graph->id($id); $graph->timeout(360); $graph->layout(); warn($graph->error()) if $graph->error(); binmode STDOUT, ':utf8' or die ("binmode STDOUT, ':utf8' failed: $!"); #print $graph->as_boxart(); print $graph->as_boxart_html_file(); Graph-Easy-0.75/examples/base.css000444000764000764 565112322253245 17310 0ustar00shlomifshlomif000000000000h1 { border: 1px solid black; padding: 0.2em; background: #fff0f0; margin-bottom: 0; margin-top: 0; padding-left: 0.5em; } h2 { border: 1px solid gray; border-bottom: none; padding: 0.2em; padding-left: 0.5em; background: #e0e0f0; margin-top: 0.8em; margin-bottom: 0; } div.h3 { border-bottom: 1px solid gray; padding: 0.2em; padding-left: 0.1em; margin-top: 0; margin-bottom: 0; font-weight: bold; font-size: 1.2em; } h2.green { background: #e0f0e0; } h2.coral { background: #e0f0f0; } h2.purple { background: #f0e0f0; } h2.orange { background: #fff0d0; } h2.brown { background: #e0b090; } h2.lime { background: #e0f090; } h2.honey { background: #f0f0a0; } h2.mint { background: #c0ffe0; } div.footer { background: #f0f0f0; border: 1px solid gray; padding: 0.6em; padding-left: 1.6em; font-size: small; margin-top: 1em; margin-bottom: 1em; font-size: 0.8em; } p.hr { padding-top: 0.3em; border: none; border-top: 1px solid gray; } div.right { margin-left: 8.2em; } div.text { border: 1px solid gray; padding: 0.5em; padding-left: 1.5em; background: #e8e8e8; font-size: 0.9em; } .clear { clear: both; } a.top { font-size: 0.8em; float: right; position: relative; top: -2.5em; right: 0.5em; color: black; font-weight: bold; text-decoration: none; padding: 0.2em; } a.top:hover { color: white; background: black; padding: 0.2em; } .menubck, .menuext, .menucur, .menuadd, .menuind, .menuinc, .menucin { display: block; border: 1px solid gray; padding: 0.1em; padding-left: 0.5em; margin: 0; margin-bottom: 0.4em; min-width: 7em; font-size: 0.75em; text-decoration: none; background: #e0e0ff; color: black; } .menuind, .menuinc, .menucin { min-width: 6em; margin-left: 1em; background: #e0e0ff; } .menu { background: white; padding: 0em; margin: 0; border: none; width: 7em; margin-right: 0.2em; position: fixed; } .menucur, .menucin { border-color: #404040; } .menucin { background: #a0a0ff; } .menucur { background: #a0a0ff; } .menuadd { background: #f0a0a0; } .menuind { background: #d0d0ff; } .menubck { background: #f0b0b0; } :hover { color: #ffffff; background: #000000; } .menubck:hover, .menuadd:hover { background: #a03030; } .menucur:hover { background: #000080; } .menuind:hover, .menucin:hover { background: #3030a0; } img.i { border: none; } img { border: 1px solid gray; margin-top: 0.7em; margin-bottom: 0.7em; } p, li { max-width: 50em; } p { padding-bottom: 0; margin-bottom: 0.4em; margin-top: 0.4em; } ul { list-style: square; } li { font-size: 0.9em; } tr.odd td { background: #ffdead; } code { background: #ffffff; color: black; padding: 2px; } pre { background: #d0d0d0; color: black; padding: 0.8em; margin-left: 1em; margin-bottom: 2.5em; border: 1px solid black; max-width: 40em; } Graph-Easy-0.75/examples/fun.tpl000444000764000764 261012322253245 17165 0ustar00shlomifshlomif000000000000 <graph>-Plugin for Mediawiki - Syntax

<graph>-Plugin for Mediawiki

Table of Contents:

##TOC##

To see the input text for each graph, follow the Source link in each section.

Fun with Graphs

##HTML##
Graph-Easy-0.75/examples/html.pl000444000764000764 543312322253245 17163 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/grapheasy script - # which is after "make install" available in your system as simple as # "grapheasy" on any command line prompt. ############################################################################# # This script uses examples/common.pl to generate some example graphs and # prints them as HTML page. Use it like: # ewxamples/html.pl >test.html # and then open test.html in your favourite browser. use strict; use warnings; BEGIN { chdir 'examples' if -d 'examples'; } require "common.pl"; my $graph = Graph::Easy->new(); my @toc = (); my $html = $graph->html_page_header(); $html .= < h1 { border-bottom: 1px solid black; padding-bottom: 0.2em; } h2 { border-bottom: 1px solid grey; padding-bottom: 0.2em; margin-bottom: 0em; } div { margin-left: 2em; } .graph { margin-left: 2em; }

Graph-Simple Test page

This page was automatically created at ##time## by examples/html.pl running Graph::Easy v##version##.

On each of the following testcases you will see a text representation of the graph on the left side, and on the right side the automatically generated HTML+CSS code.

Notes:

  • The text representation does not yet carry node attributes, like colors or border style.
  • The HTML does not yet have "pretty" edges. This will be fixed later.
  • The limitations in Graph::Easy apply.

Testcases:

##TOC## HTML ; # generate the parts and push their names into @toc gen_graphs($graph, 'html'); $html .= $graph->html_page_footer(); my $toc = '
    '; for my $t (@toc) { my $n = $t; $n =~ s/\s/_/; $toc .= "
  • " . $t . "\n"; } $toc .= "
\n"; # insert the TOC $html =~ s/##TOC##/ $toc /; $html =~ s/##time##/ scalar localtime() /e; $html =~ s/##version##/$Graph::Easy::VERSION/e; print $html; # all done; 1; ############################################################################# sub out { my ($graph,$method) = @_; $method = 'as_' . $method; my $t = $graph->nodes() . ' Nodes, ' . $graph->edges . ' Edges'; my $n = $t; $n =~ s/\s/_/; $html .= "

$t

\n" . "
\n" . "

As Text

\n" . "
" . $graph->as_txt() . "
" . "
\n" . "

As HTML:

\n" . $graph->$method() . "
\n" . "
 
\n\n"; push @toc, $t; } Graph-Easy-0.75/examples/as_boxart000555000764000764 204212322253245 17563 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This example is a bit outdated, please use the new bin/graph-easy script - # which is after "make install" available on any command line in your system. # Convert an input file containing a Graph::Easy description to # ASCII art using "box drawing" Unicode characters. # Example usage: # examples/as_boxart t/in/2nodes.txt # echo "[ A ] -> [ B ]" | examples/as_boxart BEGIN { $|++; } use lib 'lib'; use Graph::Easy::Parser; my $file = shift; my $id = shift || ''; my $debug = shift; my $parser = Graph::Easy::Parser->new( debug => $debug ); if (!defined $file) { $file = \*STDIN; binmode STDIN, ':utf8' or die ("binmode STDIN, ':utf8' failed: $!"); } my $graph = $parser->from_file( $file ); die ($parser->error()) unless defined $graph; $graph->id($id); $graph->timeout(360); $graph->layout(); warn($graph->error()) if $graph->error(); binmode STDOUT, ':utf8' or die ("binmode STDOUT, ':utf8' failed: $!"); print $graph->as_boxart(); Graph-Easy-0.75/examples/common.pl000444000764000764 334012322253245 17502 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w ############################################################################# # This script is used by both examples/ascii.pl and examples/html.pl to # generate some sample graphs and then outputting them in the desired format. use strict; use warnings; BEGIN { use lib '../lib'; } use Graph::Easy; sub gen_graphs { my $graph = shift || Graph::Easy->new(); my $method = shift || 'ascii'; ########################################################################### my $node = $graph->add_node( 'Bonn' ); my $node2 = $graph->add_node( 'Berlin' ); $graph->add_edge( $node, $node2 ); out ($graph, $method); ########################################################################### $graph->{debug} = 0; my $node3 = $graph->add_node( 'Frankfurt' ); $node3->set_attribute('border-style', 'dotted'); my $edge3 = Graph::Easy::Edge->new( style => 'double' ); $graph->add_edge( $node2, $node3, $edge3 ); out ($graph, $method); ########################################################################### $graph->add_edge( $node3, 'Dresden' ); out ($graph, $method); ########################################################################### $graph->add_edge( $node2, 'Potsdam' ); out ($graph, $method); ########################################################################### my $node6 = $graph->add_node( 'Cottbus',); $node6->set_attribute('border', '1px red dashed'); my $edge5 = $graph->add_edge( 'Potsdam', $node6 ); out ($graph, $method); ########################################################################### $graph->add_edge( $node6, $node3 ); out ($graph, $method); $graph->add_edge( $node6, $node3 ); out ($graph, $method); } 1; Graph-Easy-0.75/inc000755000764000764 012322253245 14453 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/inc/Test000755000764000764 012322253245 15372 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/inc/Test/Run000755000764000764 012322253245 16136 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/inc/Test/Run/Builder.pm000444000764000764 336012322253245 20221 0ustar00shlomifshlomif000000000000package Test::Run::Builder; use strict; use warnings; use Module::Build; use vars qw(@ISA); @ISA = (qw(Module::Build)); sub ACTION_runtest { my ($self) = @_; my $p = $self->{properties}; $self->depends_on('code'); local @INC = @INC; # Make sure we test the module in blib/ unshift @INC, (File::Spec->catdir($p->{base_dir}, $self->blib, 'lib'), File::Spec->catdir($p->{base_dir}, $self->blib, 'arch')); $self->do_test_run_tests; } sub ACTION_distruntest { my ($self) = @_; $self->depends_on('distdir'); my $start_dir = $self->cwd; my $dist_dir = $self->dist_dir; chdir $dist_dir or die "Cannot chdir to $dist_dir: $!"; # XXX could be different names for scripts $self->run_perl_script('Build.PL') # XXX Should this be run w/ --nouse-rcfile or die "Error executing 'Build.PL' in dist directory: $!"; $self->run_perl_script('Build') or die "Error executing 'Build' in dist directory: $!"; $self->run_perl_script('Build', [], ['runtest']) or die "Error executing 'Build test' in dist directory"; chdir $start_dir; } sub do_test_run_tests { my $self = shift; require Test::Run::CmdLine::Iface; my $test_run = Test::Run::CmdLine::Iface->new( { 'test_files' => [glob("t/*.t")], } # 'backend_params' => $self->_get_backend_params(), ); return $test_run->run(); } sub ACTION_tags { my $self = shift; return $self->do_system( "ctags", qw(-f tags --recurse --totals --exclude=blib/** --exclude=t/lib/** --exclude=**/.svn/** --exclude='*~'), "--exclude=".$self->dist_name()."-*/**", qw(--languages=Perl --langmap=Perl:+.t) ); } 1; Graph-Easy-0.75/t000755000764000764 012322253245 14145 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/t/graph.t000444000764000764 1752512322253245 15622 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 72; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ('Graph::Easy', qw/ new _init timeout strict output_format output seed randomize debug border_attribute anon_nodes /); ############################################################################# my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); ok (defined $graph->{seed}, 'seed was initialized'); is ($graph->error(), '', 'no error yet'); is ($graph->output_format(), 'html', 'default output format is html'); is ($graph->timeout(), 5, '5 seconds'); is ($graph->strict(), 1, 'is strict'); is ($graph->nodes(), 0, '0 nodes'); is ($graph->edges(), 0, '0 edges'); is ($graph->border_attribute('graph'), 'none', 'graph border is none'); is ($graph->border_attribute('group'), 'dashed', 'group border is dashed 1px black'); is ($graph->border_attribute('node'), 'solid', 'node border is solid 1px black'); is (join (',', $graph->edges()), '', '0 edges'); like ($graph->output(), qr/table/, 'default output worked'); my $bonn = Graph::Easy::Node->new( name => 'Bonn' ); my $berlin = Graph::Easy::Node->new( 'Berlin' ); my $edge = $graph->add_edge ($bonn, $berlin); is (ref($edge), 'Graph::Easy::Edge', 'add_edge() returns the new edge'); is ($graph->nodes(), 2, '2 nodes added'); is ($graph->edges(), 1, '1 edge'); is ($graph->as_txt(), "[ Bonn ] --> [ Berlin ]\n", 'as_txt for 2 nodes'); is (ref($graph->edge($bonn,$berlin)), 'Graph::Easy::Edge', 'edge from objects'); is ($graph->edge($berlin,$bonn), undef, 'berlin not connecting to bonn'); is (ref($graph->edge('Bonn', 'Berlin')), 'Graph::Easy::Edge', 'edge from names'); my @E = $graph->edges(); my $en = ''; for my $e (@E) { $en .= $e->style() . '.'; } is ($en, 'solid.', 'edges() in list context'); ############################################################################# my $ffm = Graph::Easy::Node->new( name => 'Frankfurt a. M.' ); # test add_edge ($n1,$n2, $label) $graph->add_edge ($ffm, $bonn, 'train'); is ($graph->nodes (), 3, '3 nodes'); is ($graph->edges (), 2, '2 edges'); my $e = $graph->edge ($ffm,$bonn); is ($e->label(), 'train', 'add_edge($n,$n2,"label") works'); # print $graph->as_ascii(); ############################################################################# # as_txt() (simple nodes) is ( $graph->as_txt(), <<'HERE', [ Frankfurt a. M. ] -- train --> [ Bonn ] [ Bonn ] --> [ Berlin ] HERE 'as_txt() for 3 nodes with 2 edges'); my $schweinfurt = Graph::Easy::Node->new( name => 'Schweinfurt' ); $graph->add_edge ($schweinfurt, $bonn); is ($graph->nodes (), 4, '4 nodes'); is ($graph->edges (), 3, '3 edges'); is ( $graph->as_txt(), <<'HERE', [ Frankfurt a. M. ] -- train --> [ Bonn ] [ Schweinfurt ] --> [ Bonn ] [ Bonn ] --> [ Berlin ] HERE 'as_txt() for 4 nodes with 3 edges'); ############################################################################# # as_txt() (nodes with attributes) $bonn->set_attribute('class', 'cities'); is ( $graph->as_txt(), <<'HERE' [ Bonn ] { class: cities; } [ Frankfurt a. M. ] -- train --> [ Bonn ] [ Schweinfurt ] --> [ Bonn ] [ Bonn ] --> [ Berlin ] HERE , 'as_txt() for 4 nodes with 3 edges and attributes'); $bonn->set_attribute('border', 'none'); $bonn->set_attribute('color', 'red'); $berlin->set_attribute('color', 'blue'); is ($bonn->attribute('borderstyle'), 'none', 'borderstyle set to none'); is ($bonn->attribute('border'), 'none', 'border set to none'); is ($bonn->border_attribute(), 'none', 'border set to none'); # border is second-to-last, class is the last attribute: is ( $graph->as_txt(), <<'HERE' [ Berlin ] { color: blue; } [ Bonn ] { color: red; border: none; class: cities; } [ Frankfurt a. M. ] -- train --> [ Bonn ] [ Schweinfurt ] --> [ Bonn ] [ Bonn ] --> [ Berlin ] HERE , 'as_txt() for 4 nodes with 3 edges and class attribute'); # set only 1px and dashed $graph->set_attribute('graph', 'border', '1px dotted'); $graph->set_attribute('node', 'border', 'blue solid 2px'); # override "borderstyle" $graph->set_attribute('graph', 'border-style', 'dashed'); is ($graph->attribute('borderstyle'), 'dashed', 'borderstyle set on graph'); is ($graph->attribute('borderwidth'), '1', 'borderwidth set on graph'); is ($graph->attribute('bordercolor'), '#000000', 'bordercolor is default black'); is ($graph->attribute('border'), 'dashed', 'border set on graph'); is ($graph->border_attribute(), 'dashed', 'border set on graph'); # the same with the class attribute for the graph is ($graph->attribute('graph','borderstyle'), 'dashed', 'borderstyle set on class graph'); is ($graph->attribute('graph','borderwidth'), '1', 'borderwidth set on class graph'); is ($graph->attribute('graph','bordercolor'), '#000000', 'bordercolor is default black'); is ($graph->attribute('graph','border'), 'dashed', 'border set on class graph'); is ($graph->border_attribute('graph'), 'dashed', 'border set on class graph'); # the same with the class attribute for class "node" is ($graph->attribute('node','borderstyle'), 'solid', 'borderstyle set on class node'); is ($graph->attribute('node','borderwidth'), '2', 'borderwidth set on class node'); is ($graph->attribute('node','bordercolor'), 'blue', 'borderwidth set on class node'); is ($graph->attribute('node','border'), 'solid 2px blue', 'border set on class node'); is ($graph->border_attribute('node'), 'solid 2px blue', 'border set on class node'); # graph/node/edge attributes come first # graph "border: dashed" because "black" and "1px" are the defaults # node "border: solid 2px blue" because these are not the defaults (color/width changed # means we also get the style explicitely) is ( $graph->as_txt(), <<'HERE' graph { border: dashed; } node { border: solid 2px blue; } [ Berlin ] { color: blue; } [ Bonn ] { color: red; border: none; class: cities; } [ Frankfurt a. M. ] -- train --> [ Bonn ] [ Schweinfurt ] --> [ Bonn ] [ Bonn ] --> [ Berlin ] HERE , 'as_txt() for 4 nodes with 3 edges and graph/node/edge attributes'); ############################################################################# # output and output_format: $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy', 'new worked'); $graph->add_edge ($bonn, $berlin); like ($graph->output(), qr/table/, 'default output worked'); $graph->set_attribute('graph', 'output', 'ascii'); is ($graph->output_format(), 'ascii', 'output format changed to ascii'); unlike ($graph->output(), qr/
, which placed it floating above or below the graph * as_html(): repaired the output of group cells (see t/fun/0131.txt) * as_ascii(): do not draw border for nodes with "shape: none;" * as_graphviz(): nodes with shape none work now correctly * as_graphviz(): color of edge labels falls back to edge color if no label-color is specified (was formerly rendered black) * _css_styles(): inplement $overlay support (add custom attributes) and skip the border-attribute generation if it matches $skip (both fixes are mainly for SVG output) * setting attributes on Edges/Nodes/Groups invalidates a former layout 2005-09-23 v0.30 Tels 1114 tests - Draw, draw, draw, draw the corners... * ascii.t could fail on very slow machines * fix pod/t. and pod_cov.t when the Pod::Test modules are not installed * fix as_ascii_html() to end with "" * as_html(): do not combine non-empty cells 2005-09-18 v0.29 Tels 1113 tests - Draw, draw, draw, draw the corners... * add attribute "label-pos" to class "graph" * remove only quotation marks in attributes when they are both at the start and end of the text. So "label: 2';" will work correctly now. * as_html(): work-around for IE not displaying edge corner pieces * as_html(): put caption below graph if label-pos: bottom * as_html(): use remap_attributes() * as_html(): correctly output nodes with "shape: none;" * as_html(): encode ' in links to %27 * as_html(): do not combine cells with a set border (this produces incorrect output) * as_html_file(): set correct document charset, and tag * as_ascii(): output graph label, below or above, according to label-pos * as_graphviz(): remap border-styles, add support for border-style: double * as_graphviz(): handle attributes in node, edge and group classes, too * as_graphviz(): handle graph attributes: label-pos, label * as_graphviz(): skip over graph attributes: gid, autolink etc * as_graphviz(): fix output of groups * as_graphviz(): fix output of graph border and style: none * as_txt(): do not list nodes twice in output of groups with 'nodeclass' * Graph: set_attributes() also goes via set_attribute(), e.g. properly checking arguments, handling "gid", decomposing "border" into border-(style|color|width) etc. * default background attribute is '' * drop node shapes: egg (looks ugly, and impossible to support except in graphviz and SVG) doubleoctagon (already done by "shape: octagon; border-style: double") * optimize Graph::Easy::Group::Cell::_set_type, makes complex layouts with groups about 10% faster overall * remove unnec. routines in Graph::Easy::Group::Cell * streamline $graph->groups() in list context * Layout: Nodes are not placed next to each other (unless offset: is set) * Layout: consider HOR and VER edge pieces running alongside a node as potential start fields with penalty * Edge/Cell: export EDGE_NO_M_MASK * Node: add backgroud() routine that finds out the real background (for groups etc) * add POD tests via Test::POD (t/pod.t) * add POD coverage tests via Test::POD::Coverage (t/pod_cov.t) * 100% POD coverage for Nodes, Groups, Edges and Graph::Easy * move build/ dir to Graph::Easy::Manual 2005-09-05 v0.28 Tels 1058 tests - Offset, offset, offset, offset the position... * fix LIMITATIONS section in POD * fix POD in Graph::Easy::Attributes * fix testsuite to match reality * as_html(): fix output for groups * as_html(): combine equal table cells to shorten output (by 10% or so) * as_html(): remap "fill" to "background" for classes (especially "graph") * as_html(): caption gets graph's background as background 2005-09-04 v0.27 Tels 1058 tests - Offset, offset, offset, offset the position... * remove Graph::Easy::Cluster, and overhaul relative-node position code + use "[ B ] { origin: A; offset: 2,0 }" to position A relative to B (no cluster needed anymore) + can position C relative to B, which is relative to A, and so on + works correctly with multi-celled nodes + update doc for this feature * remove "point-style: none" - "shape: invisible;" already does the same * remove "point-style: ring" - is: "point-style: circle; fill: white;" * add "point-style: diamond" * add attribute arrow-style (open, closed, filled) for edges * add attribute "fill" (color inside shape) and change notion of "background" to the color outside the shape (important change for nodes) * add attribute "label-color" for edges * attribute "border-style" was accidentily allowed only as "border-shape" * remove node styles: box, rectangle (were aliases for "rect"), plaintext (was alias for "none") * Save memory: Nodes use 638 (vs 770) bytes, Edges 631 (vs 683) Bytes, this makes a big graph use about 10% less memory (and it is generated in about 6% less time) (measured on 32 bit system) * fix small nits in Graph::Easy::Attributes * define possible values as lists in Graph::Easy::Attributes, removes double definitions in both code and documentation that could get out of sync * examples/common.pl was broken - thanx to Vagn Johansen for the report! * disallow arguments to new(), leave only in: * Node: "label" and "name" * Edge: "label", "name" and "style" * Parser: "debug" * Node::Cell: "node" * remove useless subroutine contains() in Node.pm * build/gen_manual: generate doc for group attributes, too * build/gen_manual: generate color table from definitions in code * build/gen_manual: split attributes into 4 sub pages and add an index * build/gen_manual: include sample graphs * as_graphviz(): quote reserved words: /(strict|(sub)?graph|node|edge)/i * as_graphviz(): quote attribute values with non \w chars * as_graphviz(): support for all flow directions (left, right, top, bottom) * as_graphviz(): fix colors because dot et. al have a different idea on what color "grey" actually is. This is solved by making checks on attributes on Nodes etc. strict (it converts "red" to "#ff0000" on input) and then outputting the raw RGB colors * as_graphviz(): support for bidirectional and arrow-less edges * as_graphviz(): add support for different arrow styles (except filled with different fill color) * as_graphviz(): support anon nodes properly (rendered invisible) * as_graphviz(): correctly handle link, linkbase and autolink attributes * as_graphviz(): use graph ID to construct graph name (usefull for imagemaps) * as_html(): reimplement output for edges with 4x4 table cells, including correct start/end points, label colors. Finally works in all major browsers and looks better than ever :) * as_html(): generate graph-table caption from label attribute * as_html(): correctly handle multi-celled nodes * as_html(): generated links have class 'l' * as_ascii(): handle multi-lined labels on edges correctly * as_ascii(): invisible nodes are 3x3, not 5x3 in minimum size * don't unnec. load "Heap" and "Heap::Fibonacci" * Graph: add as_txt_file() as alias for as_txt() * add weaken() in Edge::Cell to trigger early DESTROY of graphs * move the ASCII code to Graph::Easy::As_ascii and load it on demand * Parser: report wrong attribute names/values better * Parser: allow '$graph = Graph::Easy::Parser->from_text("...")' * Parser: fix parsing of undirected edges with following nodes/attributes * Parser: parse "[ A ]\n { ... }" and "[ A ] { ...\n...}" properly * Parser/Layout: support undirected (arrowless) edges properly * Layout: set proper flags for bidirectional edges (so they are rendered correctly (Thanx to Scott Beuker) * Layout: stop an endless loop in the chain-backtracking code * Layout: set correctly edge label cells on found A* paths * setting the attribute 'origin' and 'offset' on a node works now correctly * attribute are now strictly checked on Nodes, Edges etc, too * fix unitialized warning in Graph::Easy::Layout::Scout * fix broken link to EXAMPLES in POD (Thanx Scott Beuker) * border_attribute(): return no width if style eq 'double' * remap_attributes(): fix handling of 'all' entries for attributes * remap_attributes(): add handling of 'undef' to force attributes 2005-08-21 v0.26 Tels 1007 tests - Speed, speed, speed, speed up the code... Fixed: * as_ascii(): render node labels centered, instead on top-left corner * as_ascii(): on clustered nodes, collapse borders * as_ascii(): output edge labels on VER edge pieces, too * as_ascii(): render end/start points on CROSS edge pieces * as_ascii(): multi-celled nodes only worked when layout was not completed * as_ascii(): crossing between different line styles are rendered better than simple '#': | | | | : H ===+=== ###+### ...!... ~~~+~~~ ---+--- ---H--- | | | | : H * create shorter self-loops (block only 1 cell/1 port vs. 5 cells/2 ports) * add_edge('A','A') works now, and creates only one node object * make node attributes "size", "columns" and "rows" really work * Node: make edges_to() work correctly with self-loops * A*: only cross HOR/VER edges when they have no start/end points nor labels * A*: use Heap::Binary (slightly faster) and inline $elem->fields() call * Layouter: try to place nodes in chains first near their chain parent * Layouter: better fallback strategy upon blocked paths * edges with one bend now correctly have their label on HOR piece * make attribute checks via Graph and Parser "strict", e.g. it will fail on unknown attributes or invalid values * fix parsing nodes after attributes like: "graph { color: red; } [ Bonn ]" * we do not need to create filler cells unless there are groups, this makes generating layouts w/o groups between 10 and 30% faster. Added: * color attributes are now stored as '#ff0000' and output as 'red' or '#ff0000', depending on output format. * Graph: option "strict", on by default, this makes set_attribute() check all attributes and their values strict * add option "flow" to graphs and nodes: general flow of edges * near_places(): takes list of edge types * A*: allow last edge piece to cross a horizontal/vertical edge * build/gen-manual: generate manual page with attribute descriptions from table in Graph::Easy::Attributes automatically 2005-08-12 v0.25 Tels 885 tests - Speed, speed, speed, speed up the code... Added: * $graph->add_edge('A','B') works now and is documented * $graph->add_edge('A','B') in list context returns nodes and edge * $graph->add_cluster('A') works and returns created cluster object * Graph::Easy: timeout(): get/set timeout in seconds for layouter * Layout: calculate chains-of-nodes, and lay out path along these chains longest one first. This greatly detangles many layouts. Fixed: * as_ascii(): Drawing line crossings now works. Really! Believe me! * as_ascii(): labels on horizontal edge pieces are now included * rename "todo/" to "todos/" because case-insensitive OS have problems with "TODO" and "todo/"... * layout: move the alarm(0) to where it belongs and propagate fatal errors to the outside * Layout: calculating positions needs an int() to have nodes not fall between the cell-grid * Node: move the assignment to {id} into new(), so that subclasses like Graph::Easy::Edge etc get a unique ID, too * use Scalar::Util's weaken so that the Node's references back to their graph do not prevent the graph from being freed * Upon DESTROY, reset the appropriate fields in node/edge objects, so they can be reused safely in other graphs * A*: fixed an endless-loop in the path-backtracking code * adding node clusters as well as managing them is now easier * No longer uses Graph. We store nodes/edges in a hash in Graph::Easy object as opposed to the Graph object. In addition we store per-node the edges this node is involved in. This all results in less code, great speed and memory improvements (see bench/no_graph.txt): v0.25 uses only about 50% of the memory as 0.24! Even the testsuite is much much faster, despite the new tests: 0.24: Files=23, Tests=820, 5 secs ( 4.37 cusr + 0.50 csys = 4.87 CPU) 0.25: Files=23, Tests=859, 4 secs ( 2.37 cusr + 0.31 csys = 2.68 CPU) Loading Graph::Easy now takes less time & memory, too (output from top): VIRT RES SHR 0.24: 8252 5712 1444 0.25: 5840 3376 1432 2005-08-07 v0.24 Tels 820 tests - Fix, fix, fix, fix the bugs... Added: * node attribute: "point-style" - set style for nodes with "shape: point" * remappig of attributes can take code-ref for special handling * A*: create crossings, and proper edge end/start pieces, fix bias Fixed: * Graph::Easy POD: add note to add_edge() about multi-edges * correct POD in Graph::Easy::Node::Cell * Graph::Easy::Edge->new( label => 'foo' ); did not work * remap_attributes(): suppress empty attributes (fixes as_graphviz) * as_graphviz: suppress "border-style" on edges and nodes * as_graphviz: properly remap edge attribute "style" * as_graphviz: do not include class as attribute in output * as_graphviz: fix broken comment (graphviz uses //, not #) * as_graphviz: default node settings are included in class "node" * as_graphviz: escape '"' (double quoting char) to avoid issues with node names like '2"'. Also avoid quoting plain node names when possible. * as_graphviz: output nodes with their name, not their label * as_graphviz: multi-edged graphs work now correctly * as_ascii: implement rendering of nodes with "shape: point" * as_ascii: render edges with style 'bold' * as_ascii: properly render edge pieces without gaps * as_ascii: render edges seemless (".-.-.-.-" vs. ".-.--.-.-.-") * as_ascii: render all combinations of edge pieces and start/end points * as_svg_file: did not pass $self to _as_svg(), inducing a fatal failure * Parser: drop support for parsing reversed edges ("<--"), this never worked reliable and made parsing of normal edges with labels much harder and error-prone due to ambigitous cases. * Parser: fix parsing of bidirectional edges * Parser: fix parsing of edges with labels containing "-", "[" etc (edges labels can now contain any character unescaped except ">", which must be escaped with "\" as "\>") * Layouter: weed out positions for a node that are too close to a successor 2005-07-31 v0.23 Tels 765 tests - Fix, fix, fix, fix the bugs... Fixed: * update POD to reflect that the overall placement strategy is now better * warn on broken Graph 0.66 * t/parser.t: sort edges on label to avoid hash key ordering tripping us up * sorted_nodes(): use "name" as second field if a non-unique first field sorting was requested (like sorted_nodes("layer")) * _near_places() works correctly on multi-cell nodes and add a parameter $d to it, so that the distance can be adjusted by the caller. It can also return direction of place from/to node via third paremeter. * Layout/Scout: removed _find_path_u_shaped() (use A* instead) * cleaned up path finding/scoring/handling code * EDGE_SHORT_N vs EDGE_SHORT_S to be 0,1,2,3 in order E,S,W,N * self-loop paths (from A to A) correctly set EDGE_LABEL_CELL on the HOR edge pice * finding paths is now slightly faster: self-loop : 20,000 tries/s (vs. 15,000 tries/s) short edge: 74,000 tries/s (vs. 21,000 tries/s) * Paths with one bend now have always the correct edge piece. * Placement of node with two predecessors in a straigght line was wrong (instead of trying to place the node in the center, it placed it 1/2 the distance to the right/bottom - Thanx to Scott Beuker for providing a testcase!) * as_ascii(): align the different edges better * as_ascii(): the border is now drawn into a framebuffer, this makes it possible for collating borders or to have "border-top: none" * Edge are nown drawn seemless, except these pieces: CROSS S_W N_W In addition, the seems break sometimes on edge styles "- ", "= ", ".-" and "..-" due to non-alignment. * move color checking/converting code to Graph::Easy::Attributes * check border-styles against list of valid names * as_ascii(): added the ability to have different pieces for corners * as_ascii(): border styles 'wave' and 'dot-dot-dash' have now two different vertical characters, rendering these borders now like: *~~~~~~~~* +..-..-..+ { Test { | Test | } Node } : Node : *~~~~~~~~* +..-..-..+ Added: * border-style: double-dash: #= = = = # " Test " " Node " #= = = = # * edge style: double-dash: "= = = >" * Graph::Easy::Attributes and tests for it * Node: is_multicelled() * Graph: is_simple_graph(), debug() * A* implementation to find arbitrary paths (even with multi-celled nodes) 2005-07-13 v0.22 Tels 686 tests - Fix, fix, fix, fix the bugs... Fixed: * Edge/Parser: edge style '~~' (wave) * Layouter: assign layers, process nodes sorted by layers (fixes the '"[B] [A]->[B]" being laid out different from "[A]->[B]"' bug) * Edge.pm: remove needless new() * Makefile.PL check for As_svg was borked Added: * Node.pm: add columns(), rows(), grow(), connections() * Layout.pm: add _assign_layers() * Easy.pm: sorted_nodes() takes 1 or 2 optional field names to sort on * _near_places() moved into Graph::Easy::Node, make it multi-cell aware * started laying down the foundation for multi-celled nodes support in Path.pm/Scout.pm 2005-07-10 v0.21 Tels 605 tests - Fix, fix, fix, fix the bugs... * As_graphviz: default nodes to filled, fontsize 11 * As_graphviz: quote attribute values if nec. * As_graphviz: remap attribute names (background => fillcolor etc) * As_graphviz: output edge attributes * As_txt: use remap_attribute() * Easy: add remap_attributes(), as_svg_file(), as_ascii_file() * Easy: fix POD for add_node(), rem doc about add_vertex(), vertices() * Easy: add_node() returns newly added node and copes with ("name") 2005-06-25 v0.20 Tels 589 tests - Fix, fix, fix, fix the bugs... * put SVG code into a seperate package, see there for CHANGES * add some details to POD * border-style "dotdashed" renamed to "dot-dash" * added border and edge-styles: "dot-dot-dash", "wave" * make "border" set the attributes border-width, border-style, border-color * as_txt(): output "border" as it used to, even though only /border-(style|width|color)/ exist now * as_txt(): sort attributes by name on output to make it more predictable * as_ascii(): render border styles: double, wave, dot-dash, dot-dot-dash * as_ascii(): render edge styles: wave, dot-dash, dot-dot-dash * as_html(): fix overly big circles on labels with line breaks * as_html(): fix edge style on edges with labels * Easy: add_edge() returns the newly added edge * Parser: handle edge styles "~~" (wave), ".-" (dot-dash) and "..-" (dot-dot-dash) * Parser: recognize all official W3C color names from SVG spec as input * Parser: reject invalid colors and node shapes * Parser: allow 'Graph::Easy::Parser->from_file(...);' * Parser: improve POD * Node: streamline attribute() and title() 2005-06-12 v0.19 Tels 573 tests - Shape, shape, shape, shape the nodes... * moved manual and Pod2HTML to Graph::Easy::Manual to avoid dependency on Pod::Simple * Graph/Easy.pm: add seed(), randomize(), as_ascii_html() * Graph/Easy.pm: rem stray debug print in add_edge() * fix POD about limitations, multi-edges are possible since v0.18 * Parser: allow GLOB and similiar things as file to from_file() * Easy: add/del of clusters/groups invalidates the current layout * as_ascii(): fix output of nodes with "border: none;" * as_ascii(): implement border "dashed;", "dotdashed" and "bold" * Easy: add _framebuffer(): generate empty framebuffer for as_ascii() * Easy: make _framebuffer() twice as fast Renamed to Graph::Easy: 2005-06-11 v0.18 Tels 573 tests - Shape, shape, shape, shape the nodes... * renamed from Graph::Simple to Graph::Easy * small cleanups (bumping $VERSIONS, remove unnec. error() routines etc) * fix =begin graph/end graph in doc/manual/* * Graph::Easy::Pod2HTML and examples/pod2html support outputformat, especially "html" and "src,html" * fix Graph::Easy::Pod2HTML to work almost (the graphs still appear somewhat out-of-order in the output...) * forgot to include doc/manual/index.pod * add one more test for ASCII rendering of autosplit nodes (with hole) * Parser: do not create empty nodes on autosplit clusters * re-factor code to allow multi-edges (more than one edge from A to B) * add tests for multiedges * call "_correct_size_$format()" if possible * As_svg: add _correct_size_svg() for Nodes and Edge/Cells * As_svg: correctly center text for node labels * As_svg: draw hor/ver lines for edges * As_svg: draw arrow heads for edges * As_svg: include a comment with edge type and source/target node * As_svg: fix position/size for nodes with shape diamond/circle/ellipse * _prepare_layout() expands cells sizes to maximum column/row size * Node: add shape() 2005-05-29 v0.17 Tels 559 tests - Edge, edge, edge, edge towards the node... * rename examples/txt2ascii to examples/as_ascii * fix examples/as_ascii to actually work * add examples/as_html * amend INSTALL, README * add complete manual (doc/manual/*) and doc/gen_manual to generate HTML version of the manual * add Graph::Simple::Pod2HTML * include tests for different node shapes * suppress attribute "shape" in HTML output * as_html: for "shape: invisible", output empty table cell * as_html: for shape rounded and circle, use moz-rounded-border * as_html: treat "\n" in edge labels properly * as_svg: handle shape: invisible * as_svg: fix output for "shape: rounded;" * as_svg: fix general output to be valid * as_txt: output [ name ], not wrongly [ label ] * as_ascii: node size depends on label, not name * as_ascii: handle multiline labels correctly * as_ascii: avoid framebuffer underruns on certain layouts * added Graph::Simple::Cluster - list of relatively positioned nodes * Node : added add_to_cluster(), origin(), cluster(), relpos(), place(), dimensions() * Node : allow label => 'label' to be passed to new() * Node : move as_graphviz() to As_graphviz.pm * Node : _correct_w() to _correct_size() and pass it the format name (ascii, svg etc) * Simple: amended LIMITATIONS in pod * Simple: added output_format(), output(), cluster(), clusters(), add_clusters() * Parser: support clusters and autosplit nodes like "[ A | | B || C ]" * Parser: remove multiple spaces in node names to normalize them * Parser: fix parse_error() and add tests for that * Layout: make layouter more robust (better placement of nodes) * Layout: finally find paths with one bend properly * Layout: move pathfinding code to Graph::Simple::Layout::Scout * Layout: move path management code to Graph::Simple::Layout::Path * Layout: find path loops (from one node back to same node again) * Layout: find U-shaped paths * Edge : add styles for EDGE_x_y (x = N/S, y = E/W) 2005-05-17 v0.16 Tels 426 tests - Make, make, make, make the invisible nodes... * forgot to include As_svg.pm * Simple.pm: Note other formats in NAME and SYNOPSIS sections * As_svg: small cleanups 2005-05-16 v0.15 Tels 422 tests - Make, make, make, make the invisible nodes... * load the As_*() modules on-demand * fixed NAME in As_graphviz * add basic support for node shapes * Node: add del_attribute(), as_svg(), title() * Parser: check attributes more closely * Parser: support [] for anonymous, invisible nodes * added Graph::Simple::Node::Anon * Graph: move code to prepare layout from as_ascii() to _prepare_layout() since it can be reused by as_svg() * as_html: deal better with empty graphs * as_graphviz: default node shape is rectangular * Node: successor/predecessor did corrupt nodes w/o a graph * Node: add _reset_id() for testsuite * require Graph 0.65 2005-04-11 v0.14 Tels 354 tests - Lay, lay, lay, lay out the edges... * add experimental graphviz output * require Graph 0.61 2005-02-12 v0.13 Tels 345 tests - Group, group, group, group the nodes... * shorten CSS considerable (especially for graphs with groups) * fix CSS for Opera/Firefox for vertical edges * fix node-borders for Firefox/Opera by inserting dummy cells at each row 2005-02-07 v0.12 Tels 345 tests - Group, group, group, group the nodes... * register groups with the graph when adding them * Parser: parse attributes on groups like: "( Group [ Node ] ) { ... }" * Parser: parse attributes on edges like: "[ 1 ] -> { ... } [ 2 ]" * Group: handle attribute "nodeclass" - put nodes into that class * Node: handle attribute "group" - puts node into that group * Node: query "node.class" from graph before trying just "node" * Node: convert literal "\n" in label/name to "<br>" * Layout: padd around all cells with filler cells (to make group backgrounds really work) * Layout: cleanup on group output * as_txt(): output attributes of a group * add Graph::Simple::Node::Cell, Graph::Simple::Group::Cell * moved Graph::Simple::Path to Graph::Simple::Edge::Cell * Graph: shorten HTML output by combining table cells with colspan=X * Graph: use CSS child selectors to shorten classnames (and remove class='fill' or class='' from output) * Graph: as_html(): fix IDs on labels, lines etc * Graph: fix layout code for edges with labels: no longer needs position: relative, allows better copy&paste and is not garbled on scrolling * syntax.pl: support custom template name * simplifiy and generalize t/simple.t * always run test files under -w * don't use warnings (for older perls) * remove needless routines in subclasses of "Node" * use Test::Differences if t/ascii.t fails 2005-01-31 v0.11 Tels 294 tests - Close, close, close, close the ugly holes... * Parser: add parsing of groups like in "( Groupname [ Node ] )" * Parser: fix for "[1] -> [2] -> [3] { ... }" to not lose attributes on 3 * Parser: can now handle "[1], [2], [3] -> [4]" correctly * Parser: cut out rendundant parsing code * Graph: add group(), add_group(), del_group(), groups() * Graph: fix css(): 'link', 'label' and 'title' do not need to appear in CSS * Graph: suppress default attributes from groups, too * Graph: close "holes" in "arrows" (edges) with line-height & letter-spacing * Graph: inherit background from page, no border as default * Graph: as_html() - remove trailing empty tags for shorter output * Node: add group(), groups(), add_to_groups() * Node: rename as_txt_node() to as_pure_txt(), document it * Node: add label() and the handling of the label-attribute * Node: support "label" as property in autolink/autotitle * Node: as_txt(): no need to quote ":" and " " in attribute values * Node: as_html(): quote " " in URLs * Move as_txt() to As_txt.pm to reduce code size * Group: keep nodes indexed by their name * Group: fix as_txt() to quote group name, and include nodes * Group: fix: add_nodes() did include the group itself by accident * include examples/base.css for output of syntax.pl * fix examples/syntax.tpl to have a non-scrolling menu * add command-line dirnames to syntax.pl * include t/fun/ - fun with graph-examples * added Graph::Simple::Path and refactored Edge code - an edge now only knows as_txt(); The other two, as_html() and as_ascii() are handled by Path.pm (for each element of the edge seperately) * more syntax examples 2005-01-24 v0.10 Tels 248 tests - Color, color, color, color the pretty graph... * added more stress/syntax tests * fix parser to not treat colors in attributes as comments (like in "color: #808080") * use a pre-compiled regexp to match edges (cut down code-duplication) * parser now handles successfully node chains like: [ Ulm ] -> [ Lahn ] -> [ Bonn ] -> [ Trier ] [ Stein ] -> [ Wahns ] * Simple.pm: fix edges() in list context to actually work * require Graph v0.55 (to be safe) * Node: add attributes_as_txt(), as_txt_node() to allow $graph->as_txt() to output node attributes only once * Graph: as_txt(): output node attributes only once * Graph: add set_attribute() * examples/syntax.pl: generate headlines from comments in input, add footer * Graph: support attributes: linkbase, autolink, autotitle, link, title * Graph: as_html(): output title attributes, as well as links 2005-01-12 v0.09 Tels 147 tests - Place, place, place, place the pesky nodes... * Layout: try to place node with only one predecessor around the predecessor * add a stress test with a star-shaped graph (5 nodes) * add a syntax test with newlines and one without any spaces * Parser: accumulate left-over fragments to parse examples broken by newlines * Parser: use compiled regexps for nodes, attributes etc * Parser: finally handle trailing attributes on nodes * Node: add set_attributes() for setting multiple ones at once * Node: setting attribute "class" will set subclass instead * add tests for parsing: [ node ] { attribute: value; } [ node ] { attribute: value; } -> [ node2] { attribute: value } * fix edges going to the left * tests for quoting in node names 2005-01-10 v0.08 Tels 133 tests - Fix, fix, fix, fix the stupid bugs... * grapher tries to place nodes without any incoming edges into first column (this fixes all the examples which have groups of not-connected nodes) * in HTML, use monospaced font for edges (prepare for box-art) * Layout: set error if layout stage fails * Edge: add EDGE_N_E, EDGE_N_W, EDGE_N_E_W etc for corner pieces * Edge: add clear_cells() * make _trace_path() more general by having _trace_straight_path() creating the edge types * Node: as_html(): no longer outputs 'style="border: none"' for class="edge" * Node: include attributes in as_txt() as well as classes (for subclasses) * Node: add class() * Graph: always register nodes/edges with the graph * Graph: as_txt() includes attributes (unless they are the defaults) * Node: postpone calculation of 'w' (called by as_ascii() from Graph) * add a stress test with a bend edge 2005-01-09 v0.07 Tels 124 tests * Parser: ignore empty lines * Parser: unquote all special chars, not only the first * Node: quote node name in as_txt() * Parser: _parse_attributes(); * Graph: added attribute(), set_attributes() * Graph: added id() to set/get a unique ID per graph * Graph: default ID is '', CSS code contains ID in class names * Parser: teach it to parse CSS and call $graph->set_attributes() * Edge: output name in as_txt() * Layout: use strict, fix _trace_straight_path() * t/layout.t: add tests for _trace_straight_path() * Layout: simplify _trace_path() by using _trace_straight_path() * Layout: can trace straight edges occupying multiple cells 2005-01-08 v0.06 Tels 94 tests * fix version in Layout * Edge: add EDGE_START, EDGE_END, EDGE_HOR, EDGE_VER, EDGE_CROSS * Edge: add cell_type(), add_cell() * fix pod with "=end graph" (vs. "=end") sections * fix error message in t/ascii.t when reading file fails * fix parser: did not add edge if both nodes already existed * Layout: add _trace_straight_path() - trace a path horizontal/vertical * Layout: add _remove_path() - remove a traced path * tests: add t/layout.t, t/syntax/* * add examples/syntax.pl, examples/syntax.tpl to create automatic syntax test page for website * Parser: add reset() and call it from from_text() * Parser: handle quoted characters in node names * Parser: handle comments 2005-01-03 v0.05 Tels 87 tests * fix special paragraphs in pod to use =begin instead of =for * typos in pod * some more clarifications for LIMITATIONS * move the layout code to Graph::Simple::Layout * add a testcase with two not-connected node-pools in one graph * amend README, INSTALL 2005-01-03 v0.04 Tels 84 tests * change code to work with Graph 0.50 * require Graph 0.50 * added: Group.pm -- a group of nodes * added: examples/html.pl, examples/common.pl and TODO * tests: use strict;, add t/edge.t * Parser: document the different edge directions and styles * Parser: construct edges with the proper style * Parser: allow '..>' style * Node: + document successorts()/predecessors(), as_txt(), as_html() + implement as_html($tag) * Graph: + _trace_path() can also trace short, straight paths upwards + as_txt() uses $edge->as_txt() to render edge + as_ascii() generates proper output for edges with the right style + as_ascii() no longer generates trailing whitespace on lines + add css(), as_html_page(), html_page_footer(), html_page_header() + extend documentation, fix typos, add list of limitations Renamed to Graph::Simple: 2004-12-29 v0.03 Tels 52 tests * is a subclass of Graph::Directed, so add it as prereq again :o) * Graph::Layout::Simple::Parser - parse graph from text * Graph::Layout::Simple::Edge - an edge between two nodes * Graph: added node() - find node by name * Graph: add quite some more documentation * Graph, Node: added as_txt() * Node: added incoming(), and track incoming edges from other nodes * added t/parser.t - test text parser * added t/ascii.t - parse various text files to ascii 2004-12-28 v0.02 Tels 20 tests * added a stack-based, backtracking layout routine, that stuffs nodes and paths between them into cells * Simple.pm: as_ascii: deal with cell-layout and convert this to ASCII * Simple.pm: add doc stub for METHODS * Simple.pm: add score(), as_XXX() do layout if it hasn't done before * Node.pm: revised code, and better parameter handling * no longer needs Graph::Directed or Graph::Layout::Aesthetic as prereq * added examples/ascii.pl * forgot to add graph.t to MANIFEST 2004-12-27 v0.01 Tels 18 tests * original version; created by h2xs 1.23 with options -A -X -n Graph::Layout::Simple -b 5.6.1 --skip-autoloader �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/lib���������������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 14450� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/lib/Graph���������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15511� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/lib/Graph/Easy.pm�������������������������������������������������������������������000444��000764��000764�� 312174�12322253245� 17155� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������############################################################################ # Manage, and layout graphs on a flat plane. # ############################################################################# package Graph::Easy; use 5.008002; use Graph::Easy::Base; use Graph::Easy::Attributes; use Graph::Easy::Edge; use Graph::Easy::Group; use Graph::Easy::Group::Anon; use Graph::Easy::Layout; use Graph::Easy::Node; use Graph::Easy::Node::Anon; use Graph::Easy::Node::Empty; use Scalar::Util qw/weaken/; $VERSION = '0.75'; @ISA = qw/Graph::Easy::Base/; use strict; use warnings; my $att_aliases; use Graph::Easy::Util qw(ord_values); BEGIN { # a few aliases for backwards compatibility *get_attribute = \&attribute; *as_html_page = \&as_html_file; *as_graphviz_file = \&as_graphviz; *as_ascii_file = \&as_ascii; *as_boxart_file = \&as_boxart; *as_txt_file = \&as_txt; *as_vcg_file = \&as_vcg; *as_gdl_file = \&as_gdl; *as_graphml_file = \&as_graphml; # a few aliases for code re-use *_aligned_label = \&Graph::Easy::Node::_aligned_label; *quoted_comment = \&Graph::Easy::Node::quoted_comment; *_un_escape = \&Graph::Easy::Node::_un_escape; *_convert_pod = \&Graph::Easy::Node::_convert_pod; *_label_as_html = \&Graph::Easy::Node::_label_as_html; *_wrapped_label = \&Graph::Easy::Node::_wrapped_label; *get_color_attribute = \&color_attribute; *get_custom_attributes = \&Graph::Easy::Node::get_custom_attributes; *custom_attributes = \&Graph::Easy::Node::get_custom_attributes; $att_aliases = Graph::Easy::_att_aliases(); # backwards compatibility *is_simple_graph = \&is_simple; # compatibility to Graph *vertices = \&nodes; } ############################################################################# sub new { # override new() as to not set the {id} my $class = shift; # called like "new->('[A]->[B]')": if (@_ == 1 && !ref($_[0])) { require Graph::Easy::Parser; my $parser = Graph::Easy::Parser->new(); my $self = eval { $parser->from_text($_[0]); }; if (!defined $self) { $self = Graph::Easy->new( fatal_errors => 0 ); $self->error( 'Error: ' . $parser->error() || 'Unknown error while parsing initial text' ); $self->catch_errors( 0 ); } return $self; } my $self = bless {}, $class; my $args = $_[0]; $args = { @_ } if ref($args) ne 'HASH'; $self->_init($args); } sub DESTROY { my $self = shift; # Be carefull to not delete ->{graph}, these will be cleaned out by # Perl automatically in O(1) time, manual delete is O(N) instead. delete $self->{chains}; # clean out pointers in child-objects so that they can safely be reused for my $n (ord_values ( $self->{nodes} )) { if (ref($n)) { delete $n->{edges}; delete $n->{group}; } } for my $e (ord_values ( $self->{edges} )) { if (ref($e)) { delete $e->{cells}; delete $e->{to}; delete $e->{from}; } } for my $g (ord_values ( $self->{groups} )) { if (ref($g)) { delete $g->{nodes}; delete $g->{edges}; } } } # Attribute overlay for HTML output: my $html_att = { node => { borderstyle => 'solid', borderwidth => '1px', bordercolor => '#000000', align => 'center', padding => '0.2em', 'padding-left' => '0.3em', 'padding-right' => '0.3em', margin => '0.1em', fill => 'white', }, 'node.anon' => { 'borderstyle' => 'none', # ' inherit' to protect the value from being replaced by the one from "node" 'background' => ' inherit', }, graph => { margin => '0.5em', padding => '0.5em', 'empty-cells' => 'show', }, edge => { border => 'none', padding => '0.2em', margin => '0.1em', 'font' => 'monospaced, courier-new, courier, sans-serif', 'vertical-align' => 'bottom', }, group => { 'borderstyle' => 'dashed', 'borderwidth' => '1', 'fontsize' => '0.8em', fill => '#a0d0ff', padding => '0.2em', # XXX TODO: # in HTML, align left is default, so we could omit this: align => 'left', }, 'group.anon' => { 'borderstyle' => 'none', background => 'white', }, }; sub _init { my ($self,$args) = @_; $self->{debug} = 0; $self->{timeout} = 5; # in seconds $self->{strict} = 1; # check attributes strict? $self->{class} = 'graph'; $self->{id} = ''; $self->{groups} = {}; # node objects, indexed by their unique name $self->{nodes} = {}; # edge objects, indexed by unique ID $self->{edges} = {}; $self->{output_format} = 'html'; $self->{_astar_bias} = 0.001; # default classes to use in add_foo() methods $self->{use_class} = { edge => 'Graph::Easy::Edge', group => 'Graph::Easy::Group', node => 'Graph::Easy::Node', }; # Graph::Easy will die, Graph::Easy::Parser::Graphviz will warn $self->{_warn_on_unknown_attributes} = 0; $self->{fatal_errors} = 1; # The attributes of the graph itself, _and_ the class/subclass attributes. # These can share a hash, because: # * {att}->{graph} contains both the graph attributes and the class, since # these are synonymous, it is not possible to have more than one graph. # * 'node', 'group', 'edge' are not valid attributes for a graph, so # setting "graph { node: 1; }" is not possible and can thus not overwrite # the entries from att->{node}. # * likewise for "node.subclass", attribute names never have a "." in them $self->{att} = {}; foreach my $k (sort keys %$args) { if ($k !~ /^(timeout|debug|strict|fatal_errors|undirected)\z/) { $self->error ("Unknown option '$k'"); } if ($k eq 'undirected' && $args->{$k}) { $self->set_attribute('type', 'undirected'); next; } $self->{$k} = $args->{$k}; } binmode(STDERR,'utf8') or die ("Cannot do binmode(STDERR,'utf8'") if $self->{debug}; $self->{score} = undef; $self->randomize(); $self; } ############################################################################# # accessors sub timeout { my $self = shift; $self->{timeout} = $_[0] if @_; $self->{timeout}; } sub debug { my $self = shift; $self->{debug} = $_[0] if @_; $self->{debug}; } sub strict { my $self = shift; $self->{strict} = $_[0] if @_; $self->{strict}; } sub type { # return the type of the graph, "undirected" or "directed" my $self = shift; $self->{att}->{type} || 'directed'; } sub is_simple { # return true if the graph does not have multiedges my $self = shift; my %count; for my $e (ord_values ( $self->{edges} )) { my $id = "$e->{to}->{id},$e->{from}->{id}"; return 0 if exists $count{$id}; $count{$id} = undef; } 1; # found none } sub is_directed { # return true if the graph is directed my $self = shift; $self->attribute('type') eq 'directed' ? 1 : 0; } sub is_undirected { # return true if the graph is undirected my $self = shift; $self->attribute('type') eq 'undirected' ? 1 : 0; } sub id { my $self = shift; $self->{id} = shift if defined $_[0]; $self->{id}; } sub score { my $self = shift; $self->{score}; } sub randomize { my $self = shift; srand(); $self->{seed} = rand(2 ** 31); $self->{seed}; } sub root_node { # Return the root node my $self = shift; my $root = $self->{att}->{root}; $root = $self->{nodes}->{$root} if defined $root; $root; } sub source_nodes { # return nodes with only outgoing edges my $self = shift; my @roots; for my $node (ord_values ( $self->{nodes} )) { push @roots, $node if (keys %{$node->{edges}} != 0) && !$node->has_predecessors(); } @roots; } sub predecessorless_nodes { # return nodes with no incoming (but maybe outgoing) edges my $self = shift; my @roots; for my $node (ord_values ( $self->{nodes} )) { push @roots, $node if (keys %{$node->{edges}} == 0) || !$node->has_predecessors(); } @roots; } sub label { my $self = shift; my $label = $self->{att}->{graph}->{label}; $label = '' unless defined $label; $label = $self->_un_escape($label) if !$_[0] && $label =~ /\\[EGHNT]/; $label; } sub link { # return the link, build from linkbase and link (or autolink) my $self = shift; my $link = $self->attribute('link'); my $autolink = ''; $autolink = $self->attribute('autolink') if $link eq ''; if ($link eq '' && $autolink ne '') { $link = $self->{name} if $autolink eq 'name'; # defined to avoid overriding "name" with the non-existant label attribute $link = $self->{att}->{label} if $autolink eq 'label' && defined $self->{att}->{label}; $link = $self->{name} if $autolink eq 'label' && !defined $self->{att}->{label}; } $link = '' unless defined $link; # prepend base only if link is relative if ($link ne '' && $link !~ /^([\w]{3,4}:\/\/|\/)/) { $link = $self->attribute('linkbase') . $link; } $link = $self->_un_escape($link) if !$_[0] && $link =~ /\\[EGHNT]/; $link; } sub parent { # return parent object, for graphs that is undef undef; } sub seed { my $self = shift; $self->{seed} = $_[0] if @_ > 0; $self->{seed}; } sub nodes { # return all nodes as objects, in scalar context their count my ($self) = @_; my $n = $self->{nodes}; return scalar keys %$n unless wantarray; # shortcut return ord_values ( $n ); } sub anon_nodes { # return all anon nodes as objects my ($self) = @_; my $n = $self->{nodes}; if (!wantarray) { my $count = 0; for my $node (ord_values ($n)) { $count++ if $node->is_anon(); } return $count; } my @anon = (); for my $node (ord_values ( $n)) { push @anon, $node if $node->is_anon(); } @anon; } sub edges { # Return all the edges this graph contains as objects my ($self) = @_; my $e = $self->{edges}; return scalar keys %$e unless wantarray; # shortcut ord_values ($e); } sub edges_within { # return all the edges as objects my ($self) = @_; my $e = $self->{edges}; return scalar keys %$e unless wantarray; # shortcut ord_values ($e); } sub sorted_nodes { # return all nodes as objects, sorted by $f1 or $f1 and $f2 my ($self, $f1, $f2) = @_; return scalar keys %{$self->{nodes}} unless wantarray; # shortcut $f1 = 'id' unless defined $f1; # sorting on a non-unique field alone will result in unpredictable # sorting order due to hashing $f2 = 'name' if !defined $f2 && $f1 !~ /^(name|id)$/; my $sort; $sort = sub { $a->{$f1} <=> $b->{$f1} } if $f1; $sort = sub { abs($a->{$f1}) <=> abs($b->{$f1}) } if $f1 && $f1 eq 'rank'; $sort = sub { $a->{$f1} cmp $b->{$f1} } if $f1 && $f1 =~ /^(name|title|label)$/; $sort = sub { $a->{$f1} <=> $b->{$f1} || $a->{$f2} <=> $b->{$f2} } if $f2; $sort = sub { abs($a->{$f1}) <=> abs($b->{$f1}) || $a->{$f2} <=> $b->{$f2} } if $f2 && $f1 eq 'rank'; $sort = sub { $a->{$f1} <=> $b->{$f1} || abs($a->{$f2}) <=> abs($b->{$f2}) } if $f2 && $f2 eq 'rank'; $sort = sub { $a->{$f1} <=> $b->{$f1} || $a->{$f2} cmp $b->{$f2} } if $f2 && $f2 =~ /^(name|title|label)$/; $sort = sub { abs($a->{$f1}) <=> abs($b->{$f1}) || $a->{$f2} cmp $b->{$f2} } if $f1 && $f1 eq 'rank' && $f2 && $f2 =~ /^(name|title|label)$/; # 'name', 'id' $sort = sub { $a->{$f1} cmp $b->{$f1} || $a->{$f2} <=> $b->{$f2} } if $f2 && $f2 eq 'id' && $f1 ne 'rank'; # the 'return' here should not be removed return sort $sort values %{$self->{nodes}}; } sub add_edge_once { # add an edge, unless it already exists. In that case it returns undef my ($self, $x, $y, $edge) = @_; # got an edge object? Don't add it twice! return undef if ref($edge); # turn plaintext scalars into objects my $x1 = $self->{nodes}->{$x} unless ref $x; my $y1 = $self->{nodes}->{$y} unless ref $y; # nodes do exist => maybe the edge also exists if (ref($x1) && ref($y1)) { my @ids = $x1->edges_to($y1); return undef if @ids; # found already one edge? } $self->add_edge($x,$y,$edge); } sub edge { # return an edge between two nodes as object my ($self, $x, $y) = @_; # turn plaintext scalars into objects $x = $self->{nodes}->{$x} unless ref $x; $y = $self->{nodes}->{$y} unless ref $y; # node does not exist => edge does not exist return undef unless ref($x) && ref($y); my @ids = $x->edges_to($y); wantarray ? @ids : $ids[0]; } sub flip_edges { # turn all edges going from $x to $y around my ($self, $x, $y) = @_; # turn plaintext scalars into objects $x = $self->{nodes}->{$x} unless ref $x; $y = $self->{nodes}->{$y} unless ref $y; # node does not exist => edge does not exist # if $x == $y, return early (no need to turn selfloops) return $self unless ref($x) && ref($y) && ($x != $y); for my $e (ord_values ( $x->{edges} )) { $e->flip() if $e->{from} == $x && $e->{to} == $y; } $self; } sub node { # return node by name my ($self,$name) = @_; $name = '' unless defined $name; $self->{nodes}->{$name}; } sub rename_node { # change the name of a node my ($self, $node, $new_name) = @_; $node = $self->{nodes}->{$node} unless ref($node); if (!ref($node)) { $node = $self->add_node($new_name); } else { if (!ref($node->{graph})) { # add node to ourself $node->{name} = $new_name; $self->add_node($node); } else { if ($node->{graph} != $self) { $node->{graph}->del_node($node); $node->{name} = $new_name; $self->add_node($node); } else { delete $self->{nodes}->{$node->{name}}; $node->{name} = $new_name; $self->{nodes}->{$node->{name}} = $node; } } } if ($node->is_anon()) { # turn anon nodes into a normal node (since it got a new name): bless $node, $self->{use_class}->{node} || 'Graph::Easy::Node'; delete $node->{att}->{label} if $node->{att}->{label} eq ' '; $node->{class} = 'group'; } $node; } sub rename_group { # change the name of a group my ($self, $group, $new_name) = @_; if (!ref($group)) { $group = $self->add_group($new_name); } else { if (!ref($group->{graph})) { # add node to ourself $group->{name} = $new_name; $self->add_group($group); } else { if ($group->{graph} != $self) { $group->{graph}->del_group($group); $group->{name} = $new_name; $self->add_group($group); } else { delete $self->{groups}->{$group->{name}}; $group->{name} = $new_name; $self->{groups}->{$group->{name}} = $group; } } } if ($group->is_anon()) { # turn anon groups into a normal group (since it got a new name): bless $group, $self->{use_class}->{group} || 'Graph::Easy::Group'; delete $group->{att}->{label} if $group->{att}->{label} eq ''; $group->{class} = 'group'; } $group; } ############################################################################# # attribute handling sub _check_class { # Check the given class ("graph", "node.foo" etc.) or class selector # (".foo") for being valid, and return a list of base classes this applies # to. Handles also a list of class selectors like ".foo, .bar, node.foo". my ($self, $selector) = @_; my @parts = split /\s*,\s*/, $selector; my @classes = (); for my $class (@parts) { # allowed classes, subclasses (except "graph."), selectors (excpet ".") return unless $class =~ /^(\.\w|node|group|edge|graph\z)/; # "node." is invalid, too return if $class =~ /\.\z/; # run a loop over all classes: "node.foo" => ("node"), ".foo" => ("node","edge","group") $class =~ /^(\w*)/; my $base_class = $1; if ($base_class eq '') { push @classes, ('edge'.$class, 'group'.$class, 'node'.$class); } else { push @classes, $class; } } # end for all parts @classes; } sub set_attribute { my ($self, $class_selector, $name, $val) = @_; # allow calling in the style of $graph->set_attribute($name,$val); if (@_ == 3) { $val = $name; $name = $class_selector; $class_selector = 'graph'; } # font-size => fontsize $name = $att_aliases->{$name} if exists $att_aliases->{$name}; $name = 'undef' unless defined $name; $val = 'undef' unless defined $val; my @classes = $self->_check_class($class_selector); return $self->error ("Illegal class '$class_selector' when trying to set attribute '$name' to '$val'") if @classes == 0; for my $class (@classes) { $val = $self->unquote_attribute($class,$name,$val); if ($self->{strict}) { my ($rc, $newname, $v) = $self->validate_attribute($name,$val,$class); return if defined $rc; # error? $val = $v; } $self->{score} = undef; # invalidate layout to force a new layout delete $self->{cache}; # setting a class or flow must invalidate the cache # handle special attribute 'gid' like in "graph { gid: 123; }" if ($class eq 'graph') { if ($name =~ /^g?id\z/) { $self->{id} = $val; } # handle special attribute 'output' like in "graph { output: ascii; }" if ($name eq 'output') { $self->{output_format} = $val; } } my $att = $self->{att}; # create hash if it doesn't exist yet $att->{$class} = {} unless ref $att->{$class}; if ($name eq 'border') { my $c = $att->{$class}; ($c->{borderstyle}, $c->{borderwidth}, $c->{bordercolor}) = $self->split_border_attributes( $val ); return $val; } $att->{$class}->{$name} = $val; } # end for all selected classes $val; } sub set_attributes { my ($self, $class_selector, $att) = @_; # if called as $graph->set_attributes( { color => blue } ), assume # class eq 'graph' if (defined $class_selector && !defined $att) { $att = $class_selector; $class_selector = 'graph'; } my @classes = $self->_check_class($class_selector); return $self->error ("Illegal class '$class_selector' when trying to set attributes") if @classes == 0; foreach my $a (sort keys %$att) { for my $class (@classes) { $self->set_attribute($class, $a, $att->{$a}); } } $self; } sub del_attribute { # delete the attribute with the name in the selected class(es) my ($self, $class_selector, $name) = @_; if (@_ == 2) { $name = $class_selector; $class_selector = 'graph'; } # font-size => fontsize $name = $att_aliases->{$name} if exists $att_aliases->{$name}; my @classes = $self->_check_class($class_selector); return $self->error ("Illegal class '$class_selector' when trying to delete attribute '$name'") if @classes == 0; for my $class (@classes) { my $a = $self->{att}->{$class}; delete $a->{$name}; if ($name eq 'size') { delete $a->{rows}; delete $a->{columns}; } if ($name eq 'border') { delete $a->{borderstyle}; delete $a->{borderwidth}; delete $a->{bordercolor}; } } $self; } ############################################################################# # for determining the absolute graph flow my $p_flow = { 'east' => 90, 'west' => 270, 'north' => 0, 'south' => 180, 'up' => 0, 'down' => 180, 'back' => 270, 'left' => 270, 'right' => 90, 'front' => 90, 'forward' => 90, }; sub flow { # return out flow as number my ($self) = @_; my $flow = $self->{att}->{graph}->{flow}; return 90 unless defined $flow; my $f = $p_flow->{$flow}; $f = $flow unless defined $f; $f; } ############################################################################# ############################################################################# # Output (as_ascii, as_html) routines; as_txt() is in As_txt.pm, as_graphml # is in As_graphml.pm sub output_format { # set the output format my $self = shift; $self->{output_format} = shift if $_[0]; $self->{output_format}; } sub output { # general output routine, to output the graph as the format that was # specified in the graph source itself my $self = shift; no strict 'refs'; my $method = 'as_' . $self->{output_format}; $self->_croak("Cannot find a method to generate '$self->{output_format}'") unless $self->can($method); $self->$method(); } sub _class_styles { # Create the style sheet with the class lists. This is used by both # css() and as_svg(). $skip is a qr// object that returns true for # attribute names to be skipped (e.g. excluded), and $map is a # HASH that contains mapping for attribute names for the output. # "$base" is the basename for classes (either "table.graph$id" if # not defined, or whatever you pass in, like "" for svg). # $indent is a left-indenting spacer like " ". # $overlay contains a HASH with attribute-value pairs to set as defaults. my ($self, $skip, $map, $base, $indent, $overlay) = @_; my $a = $self->{att}; $indent = '' unless defined $indent; my $indent2 = $indent x 2; $indent2 = ' ' if $indent2 eq ''; my $class_list = { edge => {}, node => {}, group => {} }; if (defined $overlay) { $a = {}; # make a copy from $self->{att} to $a: for my $class (sort keys %{$self->{att}}) { my $ac = $self->{att}->{$class}; $a->{$class} = {}; my $acc = $a->{$class}; for my $k (sort keys %$ac) { $acc->{$k} = $ac->{$k}; } } # add the extra keys for my $class (sort keys %$overlay) { my $oc = $overlay->{$class}; # create the hash if it doesn't exist yet $a->{$class} = {} unless ref $a->{$class}; my $acc = $a->{$class}; for my $k (sort keys %$oc) { $acc->{$k} = $oc->{$k} unless exists $acc->{$k}; } $class_list->{$class} = {}; } } my $id = $self->{id}; my @primaries = sort keys %$class_list; foreach my $primary (@primaries) { my $cl = $class_list->{$primary}; # shortcut foreach my $class (sort keys %$a) { if ($class =~ /^$primary\.(.*)/) { $cl->{$1} = undef; # note w/o doubles } } } $base = "table.graph$id " unless defined $base; my $groups = $self->groups(); # do we have groups? my $css = ''; foreach my $class (sort keys %$a) { next if (not %{$a->{$class}}); # skip empty ones my $c = $class; $c =~ s/\./_/g; # node.city => node_city next if $class eq 'group' and $groups == 0; my $css_txt = ''; my $cls = ''; if ($class eq 'graph' && $base eq '') { $css_txt .= "${indent}.$class \{\n"; # for SVG } elsif ($class eq 'graph') { $css_txt .= "$indent$base\{\n"; } else { if ($c !~ /\./) # one of our primary ones { # generate also class list # like: "cities,node_rivers" $cls = join (",$base.${c}_", sort keys %{ $class_list->{$c} }); $cls = ",$base.${c}_$cls" if $cls ne ''; # like: ",node_cities,node_rivers" } $css_txt .= "$indent$base.$c$cls {\n"; } my $done = 0; foreach my $att (sort keys %{$a->{$class}}) { # should be skipped? next if $att =~ $skip || $att eq 'border'; # do not specify attributes for the entire graph (only for the label) # $base ne '' skips this rule for SVG output next if $class eq 'graph' && $base ne '' && $att =~ /^(color|font|fontsize|align|fill)\z/; $done++; # how many did we really? my $val = $a->{$class}->{$att}; next if !defined $val; # for groups, set to none, it will be later overriden for the different # cells (like "ga") with a border only on the appropriate side: $val = 'none' if $att eq 'borderstyle' && $class eq 'group'; # fix border-widths to be in pixel $val .= 'px' if $att eq 'borderwidth' && $val !~ /(px|em|%)\z/; # for color attributes, convert to hex my $entry = $self->_attribute_entry($class, $att); if (defined $entry) { my $type = $entry->[ ATTR_TYPE_SLOT ] || ATTR_STRING; if ($type == ATTR_COLOR) { # create as RGB color $val = $self->get_color_attribute($class,$att) || $val; } } # change attribute name/value? if (exists $map->{$att}) { $att = $map->{$att} unless ref $map->{$att}; # change attribute name? ($att,$val) = &{$map->{$att}}($self,$att,$val,$class) if ref $map->{$att}; } # value is "inherit"? if ($class ne 'graph' && $att && $val && $val eq 'inherit') { # get the value from one class "up" # node.foo => node, node => graph my $base_class = $class; $base_class = 'graph' unless $base_class =~ /\./; $base_class =~ s/\..*//; $val = $a->{$base_class}->{$att}; if ($base_class ne 'graph' && (!defined $val || $val eq 'inherit')) { # node.foo => node, inherit => graph $val = $a->{graph}->{$att}; $att = undef if !defined $val; } } $css_txt .= "$indent2$att: $val;\n" if defined $att && defined $val; } $css_txt .= "$indent}\n"; $css .= $css_txt if $done > 0; # skip if no attributes at all } $css; } sub _skip { # return a regexp that specifies which attributes to suppress in CSS my ($self) = shift; # skip these for CSS qr/^(basename|columns|colorscheme|comment|class|flow|format|group|rows|root|size|offset|origin|linkbase|(auto)?(label|link|title)|auto(join|split)|(node|edge)class|shape|arrowstyle|label(color|pos)|point(style|shape)|textstyle|style)\z/; } ############################################################################# # These routines are used by as_html for the generation of CSS sub _remap_text_wrap { my ($self,$name,$style) = @_; return (undef,undef) if $style ne 'auto'; # make text wrap again ('white-space','normal'); } sub _remap_fill { my ($self,$name,$color,$class) = @_; return ('background',$color) unless $class =~ /edge/; # for edges, the fill is ignored (undef,undef); } ############################################################################# sub css { my $self = shift; my $a = $self->{att}; my $id = $self->{id}; # for each primary class (node/group/edge) we need to find all subclasses, # and list them in the CSS, too. Otherwise "node_city" would not inherit # the attributes from "node". my $css = $self->_class_styles( $self->_skip(), { fill => \&_remap_fill, textwrap => \&_remap_text_wrap, align => 'text-align', font => 'font-family', fontsize => 'font-size', bordercolor => 'border-color', borderstyle => 'border-style', borderwidth => 'border-width', }, undef, undef, $html_att, ); my @groups = $self->groups(); # Set attributes for all TDs that start with "group": $css .= <<CSS table.graph##id## td[class|="group"] { padding: 0.2em; } CSS if @groups > 0; $css .= <<CSS table.graph##id## td { padding: 2px; background: inherit; white-space: nowrap; } table.graph##id## span.l { float: left; } table.graph##id## span.r { float: right; } CSS ; # append CSS for edge cells (and their parts like va (vertical arrow # (left/right), vertical empty), etc) # eb - empty bottom or arrow pointing down/up # el - (vertical) empty left space of ver edge # or empty vertical space on hor edge starts # lh - edge label horizontal # le - edge label, but empty (no label) # lv - edge label vertical # sh - shifted arrow horizontal (shift right) # sa - shifted arrow horizontal (shift left for corners) # shl - shifted arrow horizontal (shift left) # sv - shifted arrow vertical (pointing down) # su - shifted arrow vertical (pointing up) $css .= <<CSS table.graph##id## .va { vertical-align: middle; line-height: 1em; width: 0.4em; } table.graph##id## .el { width: 0.1em; max-width: 0.1em; min-width: 0.1em; } table.graph##id## .lh, table.graph##id## .lv { font-size: 0.8em; padding-left: 0.4em; } table.graph##id## .sv, table.graph##id## .sh, table.graph##id## .shl, table.graph##id## .sa, table.graph##id## .su { max-height: 1em; line-height: 1em; position: relative; top: 0.55em; left: -0.3em; overflow: visible; } table.graph##id## .sv, table.graph##id## .su { max-height: 0.5em; line-height: 0.5em; } table.graph##id## .shl { left: 0.3em; } table.graph##id## .sv { left: -0.5em; top: -0.4em; } table.graph##id## .su { left: -0.5em; top: 0.4em; } table.graph##id## .sa { left: -0.3em; top: 0; } table.graph##id## .eb { max-height: 0; line-height: 0; height: 0; } CSS # if we have edges if keys %{$self->{edges}} > 0; # if we have nodes with rounded shapes: my $rounded = 0; for my $n (ord_values ( $self->{nodes} )) { $rounded ++ and last if $n->shape() =~ /circle|ellipse|rounded/; } $css .= <<CSS table.graph##id## span.c { position: relative; top: 1.5em; } table.graph##id## div.c { -moz-border-radius: 100%; border-radius: 100%; } table.graph##id## div.r { -moz-border-radius: 1em; border-radius: 1em; } CSS if $rounded > 0; # append CSS for group cells (only if we actually have groups) if (@groups > 0) { foreach my $group (@groups) { my $class = $group->class(); my $border = $group->attribute('borderstyle'); $class =~ s/.*\.//; # leave only subclass $css .= Graph::Easy::Group::Cell->_css($self->{id}, $class, $border); } } # replace the id with either '' or '123', depending on our ID $css =~ s/##id##/$id/g; $css; } sub html_page_header { # return the HTML header for as_html_file() my ($self, $css) = @_; my $html = <<HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=##charset##"> <title>##title####CSS## HTML ; $html =~ s/\n\z//; $html =~ s/##charset##/utf-8/g; my $t = $self->title(); $html =~ s/##title##/$t/g; # insert CSS if requested $css = $self->css() unless defined $css; $html =~ s/##CSS##/\n

A* Map

Nodes examined: ##closed##
Nodes still to do (open): ##open##
Nodes in path: ##path##

EOF ; $html =~ s/##closed##/keys %$closed /eg; $html =~ s/##open##/keys %$open /eg; my $path = {}; while (@$p) { my $x = shift @$p; my $y = shift @$p; my $t = shift @$p; $path->{"$x,$y"} = undef; } $html =~ s/##path##/keys %$path /eg; $html .= '' . "\n"; for my $y (0..$h) { $html .= " \n"; for my $x (0..$w) { my $xy = "$x,$y"; my $c = ' ' x 4; $html .= " \n" and next if exists $cells->{$xy} and ref($cells->{$xy}) =~ /Node/; $html .= " \n" and next if exists $cells->{$xy} && !exists $path->{$xy}; $html .= " \n" and next unless exists $closed->{$xy} || exists $open->{$xy}; my $clr = '#a0a0a0'; if (exists $closed->{$xy}) { $c = ($closed->{$xy}->[3] || '0') . '+' . ($closed->{$xy}->[2] || '0'); my $color = 0x10 + 8 * (($closed->{$xy}->[2] || 0)); my $color2 = 0x10 + 8 * (($closed->{$xy}->[3] || 0)); $clr = sprintf("%02x%02x",$color,$color2) . 'a0'; } elsif (exists $open->{$xy}) { $c = ' ' . $open->{$xy} || '0'; my $color = 0xff - 8 * ($open->{$xy} || 0); $clr = 'a0' . sprintf("%02x",$color) . '00'; } my $b = ''; $b = 'border: 2px white solid;' if exists $path->{$xy}; $html .= " \n"; } $html .= " \n"; } $html .= "\n
$c$c$c$c
\n"; $html; } 1; __END__ =head1 NAME Graph::Easy::Layout::Scout - Find paths in a Manhattan-style grid =head1 SYNOPSIS use Graph::Easy; my $graph = Graph::Easy->new(); my $bonn = Graph::Easy::Node->new( name => 'Bonn', ); my $berlin = Graph::Easy::Node->new( name => 'Berlin', ); $graph->add_edge ($bonn, $berlin); $graph->layout(); print $graph->as_ascii( ); # prints: # +------+ +--------+ # | Bonn | --> | Berlin | # +------+ +--------+ =head1 DESCRIPTION C contains just the actual pathfinding code for L. It should not be used directly. =head1 EXPORT Exports nothing. =head1 METHODS This package inserts a few methods into C and C to enable path-finding for graphs. It should not be used directly. =head1 SEE ALSO L. =head1 AUTHOR Copyright (C) 2004 - 2007 by Tels L. See the LICENSE file for information. =cut Graph-Easy-0.75/lib/Graph/Easy/Layout/Grid.pm000444000764000764 2144512322253245 21275 0ustar00shlomifshlomif000000000000############################################################################# # Grid-management and layout preperation. # # (c) by Tels 2004-2006. ############################################################################# package Graph::Easy::Layout::Grid; $VERSION = '0.75'; ############################################################################# ############################################################################# package Graph::Easy; use strict; use warnings; use Graph::Easy::Util qw(ord_values); sub _balance_sizes { # Given a list of column/row sizes and a minimum size that their sum must # be, will grow individual sizes until the constraint (sum) is met. my ($self, $sizes, $need) = @_; # XXX TODO: we can abort the loop and distribute the remaining nec. size # once all elements in $sizes are equal. return if $need < 1; # if there is only one element, return it immidiately if (@$sizes == 1) { $sizes->[0] = $need if $sizes->[0] < $need; return; } # endless loop until constraint is met while (1) { # find the smallest size, and also compute their sum my $sum = 0; my $i = 0; my $sm = $need + 1; # start with an arbitrary size my $sm_i = 0; # if none is != 0, then use the first for my $s (@$sizes) { $sum += $s; next if $s == 0; if ($s < $sm) { $sm = $s; $sm_i = $i; } $i++; } # their sum is already equal or bigger than what we need? last if $sum >= $need; # increase the smallest size by one, then try again $sizes->[$sm_i]++; } # use Data::Dumper; print STDERR "# " . Dumper($sizes),"\n"; undef; } sub _prepare_layout { # this method is used by as_ascii() and as_svg() to find out the # sizes and placement of the different cells (edges, nodes etc). my ($self,$format) = @_; # Find out for each row and colum how big they are: # +--------+-----+------+ # | Berlin | --> | Bonn | # +--------+-----+------+ # results in: # w, h, x, y # 0,0 => 10, 3, 0, 0 # 1,0 => 7, 3, 10, 0 # 2,0 => 8, 3, 16, 0 # Technically, we also need to "compress" away non-existant columns/rows. # We achive that by simply rendering them with size 0, so they become # practically invisible. my $cells = $self->{cells}; my $rows = {}; my $cols = {}; # the last column/row (highest X,Y pair) my $mx = -1000000; my $my = -1000000; # We need to do this twice, once for single-cell objects, and again for # objects covering multiple cells. The single-cell objects can be solved # first: # find all x and y occurances to sort them by row/columns for my $cell (ord_values $cells) { my ($x,$y) = ($cell->{x}, $cell->{y}); { no strict 'refs'; my $method = '_correct_size_' . $format; $method = '_correct_size' unless $cell->can($method); $cell->$method(); } my $w = $cell->{w} || 0; my $h = $cell->{h} || 0; # Set the minimum cell size only for single-celled objects: if ( (($cell->{cx}||1) + ($cell->{cy}||1)) == 2) { # record maximum size for that col/row $rows->{$y} = $h if $h >= ($rows->{$y} || 0); $cols->{$x} = $w if $w >= ($cols->{$x} || 0); } # Find highest X,Y pair. Always use x,y, and not x+cx,y+cy, because # a multi-celled object "sticking" out will not count unless there # is another object in the same row/column. $mx = $x if $x > $mx; $my = $y if $y > $my; } # insert a dummy row/column with size=0 as last $rows->{$my+1} = 0; $cols->{$mx+1} = 0; # do the last step again, but for multi-celled objects for my $cell (ord_values $cells) { my ($x,$y) = ($cell->{x}, $cell->{y}); my $w = $cell->{w} || 0; my $h = $cell->{h} || 0; # Set the minimum cell size only for multi-celled objects: if ( (($cell->{cx} || 1) + ($cell->{cy}||1)) > 2) { $cell->{cx} ||= 1; $cell->{cy} ||= 1; # do this twice, for X and Y: # print STDERR "\n# ", $cell->{name} || $cell->{id}, " cx=$cell->{cx} cy=$cell->{cy} $cell->{w},$cell->{h}:\n"; # create an array with the current sizes for the affacted rows/columns my @sizes; # print STDERR "# $cell->{cx} $cell->{cy} at cx:\n"; # XXX TODO: no need to do this for empty/zero cols for (my $i = 0; $i < $cell->{cx}; $i++) { push @sizes, $cols->{$i+$x} || 0; } $self->_balance_sizes(\@sizes, $cell->{w}); # store the result back for (my $i = 0; $i < $cell->{cx}; $i++) { # print STDERR "# store back $sizes[$i] to col ", $i+$x,"\n"; $cols->{$i+$x} = $sizes[$i]; } @sizes = (); # print STDERR "# $cell->{cx} $cell->{cy} at cy:\n"; # XXX TODO: no need to do this for empty/zero cols for (my $i = 0; $i < $cell->{cy}; $i++) { push @sizes, $rows->{$i+$y} || 0; } $self->_balance_sizes(\@sizes, $cell->{h}); # store the result back for (my $i = 0; $i < $cell->{cy}; $i++) { # print STDERR "# store back $sizes[$i] to row ", $i+$y,"\n"; $rows->{$i+$y} = $sizes[$i]; } } } print STDERR "# Calculating absolute positions for rows/columns\n" if $self->{debug}; # Now run through all rows/columns and get their absolute pos by taking all # previous ones into account. my $pos = 0; for my $y (sort { $a <=> $b } keys %$rows) { my $s = $rows->{$y}; $rows->{$y} = $pos; # first is 0, second is $rows[1] etc $pos += $s; } $pos = 0; for my $x (sort { $a <=> $b } keys %$cols) { my $s = $cols->{$x}; $cols->{$x} = $pos; $pos += $s; } # find out max. dimensions for framebuffer print STDERR "# Finding max. dimensions for framebuffer\n" if $self->{debug}; my $max_y = 0; my $max_x = 0; for my $v (ord_values $cells) { # Skip multi-celled nodes for later. next if ($v->{cx}||1) + ($v->{cy}||1) != 2; # X and Y are col/row, so translate them to real pos my $x = $cols->{ $v->{x} }; my $y = $rows->{ $v->{y} }; # Also set correct the width/height of each cell to be the maximum # width/height of that row/column and store the previous size in 'minw' # and 'minh', respectively. $v->{minw} = $v->{w}; $v->{minh} = $v->{h}; # find next col/row my $nx = $v->{x} + 1; my $next_col = $cols->{ $nx }; my $ny = $v->{y} + 1; my $next_row = $rows->{ $ny }; $next_col = $cols->{ ++$nx } while (!defined $next_col); $next_row = $rows->{ ++$ny } while (!defined $next_row); $v->{w} = $next_col - $x; $v->{h} = $next_row - $y; my $m = $y + $v->{h} - 1; $max_y = $m if $m > $max_y; $m = $x + $v->{w} - 1; $max_x = $m if $m > $max_x; } # repeat the previous step, now for multi-celled objects foreach my $v (ord_values ( $self->{cells} )) { next unless defined $v->{x} && (($v->{cx}||1) + ($v->{cy}||1) > 2); # X and Y are col/row, so translate them to real pos my $x = $cols->{ $v->{x} }; my $y = $rows->{ $v->{y} }; $v->{minw} = $v->{w}; $v->{minh} = $v->{h}; # find next col/row my $nx = $v->{x} + ($v->{cx} || 1); my $next_col = $cols->{ $nx }; my $ny = $v->{y} + ($v->{cy} || 1); my $next_row = $rows->{ $ny }; $next_col = $cols->{ ++$nx } while (!defined $next_col); $next_row = $rows->{ ++$ny } while (!defined $next_row); $v->{w} = $next_col - $x; $v->{h} = $next_row - $y; my $m = $y + $v->{h} - 1; $max_y = $m if $m > $max_y; $m = $x + $v->{w} - 1; $max_x = $m if $m > $max_x; } # return what we found out: ($rows,$cols,$max_x,$max_y); } 1; __END__ =head1 NAME Graph::Easy::Layout::Grid - Grid management and size calculation =head1 SYNOPSIS use Graph::Easy; my $graph = Graph::Easy->new(); my $bonn = Graph::Easy::Node->new( name => 'Bonn', ); my $berlin = Graph::Easy::Node->new( name => 'Berlin', ); $graph->add_edge ($bonn, $berlin); $graph->layout(); print $graph->as_ascii( ); # prints: # +------+ +--------+ # | Bonn | --> | Berlin | # +------+ +--------+ =head1 DESCRIPTION C contains routines that calculate cell sizes on the grid, which is necessary for ASCII, boxart and SVG output. Used automatically by Graph::Easy. =head1 EXPORT Exports nothing. =head1 SEE ALSO L. =head1 METHODS This module injects the following methods into Graph::Easy: =head2 _prepare_layout() my ($rows,$cols,$max_x,$max_y, \@V) = $graph->_prepare_layout(); Returns two hashes (C<$rows> and C<$cols>), containing the columns and rows of the layout with their nec. sizes (in chars) plus the maximum framebuffer size nec. for this layout. Also returns reference of a list of all cells to be rendered. =head1 AUTHOR Copyright (C) 2004 - 2006 by Tels L. See the LICENSE file for information. =cut Graph-Easy-0.75/lib/Graph/Easy/Edge000755000764000764 012322253245 17256 5ustar00shlomifshlomif000000000000Graph-Easy-0.75/lib/Graph/Easy/Edge/Cell.pm000444000764000764 13001312322253245 20666 0ustar00shlomifshlomif000000000000############################################################################# # Part of Graph::Easy. # ############################################################################# package Graph::Easy::Edge::Cell; use strict; use warnings; use Graph::Easy::Edge; use Graph::Easy::Attributes; require Exporter; use vars qw/$VERSION @EXPORT_OK @ISA/; @ISA = qw/Exporter Graph::Easy::Edge/; $VERSION = '0.75'; use Scalar::Util qw/weaken/; ############################################################################# # The different cell types: use constant { EDGE_CROSS => 0, # + crossing lines EDGE_HOR => 1, # -- horizontal line EDGE_VER => 2, # | vertical line EDGE_N_E => 3, # |_ corner (N to E) EDGE_N_W => 4, # _| corner (N to W) EDGE_S_E => 5, # ,- corner (S to E) EDGE_S_W => 6, # -, corner (S to W) # Joints: EDGE_S_E_W => 7, # -,- three-sided corner (S to W/E) EDGE_N_E_W => 8, # -'- three-sided corner (N to W/E) EDGE_E_N_S => 9, # |- three-sided corner (E to S/N) EDGE_W_N_S => 10, # -| three-sided corner (W to S/N) EDGE_HOLE => 11, # a hole (placeholder for the "other" # edge in a crossing section # Holes are inserted in the layout stage # and removed in the optimize stage, before # rendering occurs. # these loop types must come last EDGE_N_W_S => 12, # v--+ loop, northwards EDGE_S_W_N => 13, # ^--+ loop, southwards EDGE_E_S_W => 14, # [_ loop, westwards EDGE_W_S_E => 15, # _] loop, eastwards EDGE_MAX_TYPE => 15, # last valid type EDGE_LOOP_TYPE => 12, # first LOOP type # Flags: EDGE_START_E => 0x0100, # start from East (sorted ESWN) EDGE_START_S => 0x0200, # start from South EDGE_START_W => 0x0400, # start from West EDGE_START_N => 0x0800, # start from North EDGE_END_W => 0x0010, # end points to West (sorted WNES) EDGE_END_N => 0x0020, # end points to North EDGE_END_E => 0x0040, # end points to East EDGE_END_S => 0x0080, # end points to South EDGE_LABEL_CELL => 0x1000, # this cell carries the label EDGE_SHORT_CELL => 0x2000, # a short edge pice (for filling) EDGE_ARROW_MASK => 0x0FF0, # mask out the end/start type EDGE_START_MASK => 0x0F00, # mask out the start type EDGE_END_MASK => 0x00F0, # mask out the end type EDGE_TYPE_MASK => 0x000F, # mask out the basic cell type EDGE_FLAG_MASK => 0xFFF0, # mask out the flags EDGE_MISC_MASK => 0xF000, # mask out the misc. flags EDGE_NO_M_MASK => 0x0FFF, # anything except the misc. flags ARROW_RIGHT => 0, ARROW_LEFT => 1, ARROW_UP => 2, ARROW_DOWN => 3, }; use constant { EDGE_ARROW_HOR => EDGE_END_E() + EDGE_END_W(), EDGE_ARROW_VER => EDGE_END_N() + EDGE_END_S(), # shortcuts to not need to write EDGE_HOR + EDGE_START_W + EDGE_END_E EDGE_SHORT_E => EDGE_HOR + EDGE_END_E + EDGE_START_W, # |-> start/end at this cell EDGE_SHORT_S => EDGE_VER + EDGE_END_S + EDGE_START_N, # v start/end at this cell EDGE_SHORT_W => EDGE_HOR + EDGE_END_W + EDGE_START_E, # <-| start/end at this cell EDGE_SHORT_N => EDGE_VER + EDGE_END_N + EDGE_START_S, # ^ start/end at this cell EDGE_SHORT_BD_EW => EDGE_HOR + EDGE_END_E + EDGE_END_W, # <-> start/end at this cell EDGE_SHORT_BD_NS => EDGE_VER + EDGE_END_S + EDGE_END_N, # ^ # | start/end at this cell # v EDGE_SHORT_UN_EW => EDGE_HOR + EDGE_START_E + EDGE_START_W, # -- EDGE_SHORT_UN_NS => EDGE_VER + EDGE_START_S + EDGE_START_N, # | EDGE_LOOP_NORTH => EDGE_N_W_S + EDGE_END_S + EDGE_START_N + EDGE_LABEL_CELL, EDGE_LOOP_SOUTH => EDGE_S_W_N + EDGE_END_N + EDGE_START_S + EDGE_LABEL_CELL, EDGE_LOOP_WEST => EDGE_W_S_E + EDGE_END_E + EDGE_START_W + EDGE_LABEL_CELL, EDGE_LOOP_EAST => EDGE_E_S_W + EDGE_END_W + EDGE_START_E + EDGE_LABEL_CELL, }; ############################################################################# @EXPORT_OK = qw/ EDGE_START_E EDGE_START_W EDGE_START_N EDGE_START_S EDGE_END_E EDGE_END_W EDGE_END_N EDGE_END_S EDGE_SHORT_E EDGE_SHORT_W EDGE_SHORT_N EDGE_SHORT_S EDGE_SHORT_BD_EW EDGE_SHORT_BD_NS EDGE_SHORT_UN_EW EDGE_SHORT_UN_NS EDGE_HOR EDGE_VER EDGE_CROSS EDGE_HOLE EDGE_N_E EDGE_N_W EDGE_S_E EDGE_S_W EDGE_S_E_W EDGE_N_E_W EDGE_E_N_S EDGE_W_N_S EDGE_LOOP_NORTH EDGE_LOOP_SOUTH EDGE_LOOP_EAST EDGE_LOOP_WEST EDGE_N_W_S EDGE_S_W_N EDGE_E_S_W EDGE_W_S_E EDGE_TYPE_MASK EDGE_FLAG_MASK EDGE_ARROW_MASK EDGE_START_MASK EDGE_END_MASK EDGE_MISC_MASK EDGE_LABEL_CELL EDGE_SHORT_CELL EDGE_NO_M_MASK ARROW_RIGHT ARROW_LEFT ARROW_UP ARROW_DOWN /; my $edge_types = { EDGE_HOR() => 'horizontal', EDGE_VER() => 'vertical', EDGE_CROSS() => 'crossing', EDGE_N_E() => 'north/east corner', EDGE_N_W() => 'north/west corner', EDGE_S_E() => 'south/east corner', EDGE_S_W() => 'south/west corner', EDGE_S_E_W() => 'joint south to east/west', EDGE_N_E_W() => 'joint north to east/west', EDGE_E_N_S() => 'joint east to north/south', EDGE_W_N_S() => 'joint west to north/south', EDGE_N_W_S() => 'selfloop, northwards', EDGE_S_W_N() => 'selfloop, southwards', EDGE_E_S_W() => 'selfloop, eastwards', EDGE_W_S_E() => 'selfloop, westwards', }; my $flag_types = { EDGE_LABEL_CELL() => 'labeled', EDGE_SHORT_CELL() => 'short', EDGE_START_E() => 'starting east', EDGE_START_W() => 'starting west', EDGE_START_N() => 'starting north', EDGE_START_S() => 'starting south', EDGE_END_E() => 'ending east', EDGE_END_W() => 'ending west', EDGE_END_N() => 'ending north', EDGE_END_S() => 'ending south', }; use constant isa_cell => 1; sub edge_type { # convert edge type number to some descriptive text my $type = shift; my $flags = $type & EDGE_FLAG_MASK; $type &= EDGE_TYPE_MASK; my $t = $edge_types->{$type} || ('unknown edge type #' . $type); $flags &= EDGE_FLAG_MASK; my $mask = 0x0010; while ($mask < 0xFFFF) { my $tf = $flags & $mask; $mask <<= 1; $t .= ", $flag_types->{$tf}" if $tf != 0; } $t; } ############################################################################# sub _init { # generic init, override in subclasses my ($self,$args) = @_; $self->{type} = EDGE_SHORT_E(); # --> $self->{style} = 'solid'; $self->{x} = 0; $self->{y} = 0; $self->{w} = undef; $self->{h} = 3; foreach my $k (sort keys %$args) { # don't store "after" and "before" next unless $k =~ /^(graph|edge|x|y|type)\z/; $self->{$k} = $args->{$k}; } $self->_croak("Creating edge cell without a parent edge object") unless defined $self->{edge}; $self->_croak("Creating edge cell without a type") unless defined $self->{type}; # take over settings from edge $self->{style} = $self->{edge}->style(); $self->{class} = $self->{edge}->class(); $self->{graph} = $self->{edge}->{graph}; $self->{group} = $self->{edge}->{group}; weaken($self->{graph}); weaken($self->{group}); $self->{att} = $self->{edge}->{att}; # register ourselves at this edge $self->{edge}->_add_cell ($self, $args->{after}, $args->{before}); $self; } sub arrow_count { # return 0, 1 or 2, depending on the number of end points my $self = shift; return 0 if $self->{edge}->{undirected}; my $count = 0; my $type = $self->{type}; $count ++ if ($type & EDGE_END_N) != 0; $count ++ if ($type & EDGE_END_S) != 0; $count ++ if ($type & EDGE_END_W) != 0; $count ++ if ($type & EDGE_END_E) != 0; if ($self->{edge}->{bidirectional}) { $count ++ if ($type & EDGE_START_N) != 0; $count ++ if ($type & EDGE_START_S) != 0; $count ++ if ($type & EDGE_START_W) != 0; $count ++ if ($type & EDGE_START_E) != 0; } $count; } sub _make_cross { # Upgrade us to a cross-section. my ($self, $edge, $flags) = @_; my $type = $self->{type} & EDGE_TYPE_MASK; $self->_croak("Trying to cross non hor/ver piece at $self->{x},$self->{y}") if (($type != EDGE_HOR) && ($type != EDGE_VER)); $self->{color} = $self->get_color_attribute('color'); $self->{style_ver} = $edge->style(); $self->{color_ver} = $edge->get_color_attribute('color'); # if we are the VER piece, switch styles around if ($type == EDGE_VER) { ($self->{style_ver}, $self->{style}) = ($self->{style},$self->{style_ver}); ($self->{color_ver}, $self->{color}) = ($self->{color},$self->{color}); } $self->{type} = EDGE_CROSS + ($flags || 0); $self; } sub _make_joint { # Upgrade us to a joint my ($self, $edge, $new_type) = @_; my $type = $self->{type} & EDGE_TYPE_MASK; $self->_croak("Trying to join non hor/ver piece (type: $type) at $self->{x},$self->{y}") if $type >= EDGE_S_E_W; $self->{color} = $self->get_color_attribute('color'); $self->{style_ver} = $edge->style(); $self->{color_ver} = $edge->get_color_attribute('color'); # if we are the VER piece, switch styles around if ($type == EDGE_VER) { ($self->{style_ver}, $self->{style}) = ($self->{style},$self->{style_ver}); ($self->{color_ver}, $self->{color}) = ($self->{color},$self->{color}); } print STDERR "# creating joint at $self->{x}, $self->{y} with new type $new_type (old $type)\n" if $self->{graph}->{debug}; $self->{type} = $new_type; $self; } ############################################################################# # conversion to HTML my $edge_end_north = '
 ^ v< >       >    >    > v    <        <            <     > >     ##label##    v ^  ##label##  ##label##  >  ##label## <         >                  >              ##label##  ##label##    ???
Graph::Easy v$Graph::Easy::VERSION" . join ("", @counts) . "
$t$r->[$i]
/, 'ascii output worked'); ############################################################################# # add_group() my $group = $graph->add_group('G'); is (ref($group), 'Graph::Easy::Group', 'add_group()'); ############################################################################# # merge_nodes() with node B in a group (fixed in v0.39) $graph = Graph::Easy->new(); my ($A,$B) = $graph->add_edge('Bonn','Berlin','true'); $group = $graph->add_group('Cities'); is (scalar $group->nodes(), 0, 'no node in group'); $group->add_node($A); is (scalar $group->nodes(), 1, 'one node in group'); $group->add_node($B); is (scalar $group->nodes(), 2, 'one node in group'); is (scalar $graph->nodes(), 2, 'two nodes in graph'); is (scalar $graph->edges(), 1, 'one edge in graph'); is (scalar $group->edges(), 0, 'no edge in group'); $graph->layout(); # the edge is only added in the layout stage is (scalar $group->edges(), 0, 'no edge leading from/to group'); is (scalar $group->edges_within(), 1, 'one edge in group'); $graph->merge_nodes($A,$B); is (scalar $graph->edges(), 0, 'no edges in graph'); is (scalar $group->edges_within(), 0, 'no edges in group'); is (scalar $group->edges(), 0, 'no edge leading from/to group'); is (scalar $group->nodes(), 1, 'one node in group'); is (scalar $graph->nodes(), 1, 'one node in graph'); is (keys %{$A->{edges}}, 0, 'no edges in A'); is (keys %{$B->{edges}}, 0, 'no edges in B'); is ($B->{group}, undef, "B's group status got revoked"); Graph-Easy-0.75/t/parse_att.t000444000764000764 1326512322253245 16500 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 86; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Parser") or die($@); use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy::Parser", qw/ _parse_attributes /); ############################################################################# # parser object my $parser = Graph::Easy::Parser->new(); is (ref($parser), 'Graph::Easy::Parser'); is ($parser->error(), '', 'no error yet'); my $line = 0; $parser->no_fatal_errors(1); foreach () { chomp; next if $_ =~ /^(\s*\z|#)/; # skip empty lines or comments my ($in,$result) = split /\|/, $_; my $txt = $in; $txt =~ s/\\n/\n/g; # insert real newlines # ^ => to '|' since '|' is the sep. $txt =~ s/[\^]/\|/g; $parser->reset(); my $class = 'node'; $class = 'edge' if $txt =~ /^(start|end|labelcolor|arrow)/; $class = 'graph' if $txt =~ /^labelpos/; # need to cache this value $parser->{_match_single_attribute} = $parser->_match_single_attribute(); my $att = $parser->_parse_attributes($txt, $class); # reuse parser object if ($parser->error()) { if ($result =~ /^error=/) { my $res = $result; $res =~ s/^error=//; my $resq = quotemeta($res); like ($parser->error(), qr/$resq/, $res); } else { print '# Got unexpected error: ' . $parser->error(), "\n"; fail ("$txt"); } next; } my $exp = ''; foreach my $k (sort keys %$att) { if (ref($att->{$k}) eq 'ARRAY') { $exp .= "$k="; for my $k1 (@{$att->{$k}}) { my $v = $parser->{_graph}->unquote_attribute('graph',$k,$k1); $exp .= "$v,"; } $exp =~ s/,\z//; $exp .= ";"; } else { my $v = $parser->{_graph}->unquote_attribute('graph',$k,$att->{$k}); $exp .= "$k=$v;"; } } is ($exp, $result, $in); } __DATA__ | color: red;|color=red; color : red;|color=red; color : lime ; |color=lime; color : yellow |color=yellow; color: rgb(1,1,1);|color=rgb(1,1,1); color: rgb(255,1,1);|color=rgb(255,1,1); color: rgb(255,255,1);|color=rgb(255,255,1); color: rgb(255,255,255);|color=rgb(255,255,255); color: #ff0;|color=#ff0; color: #0f0;|color=#0f0; color: slategrey;|color=slategrey; color: slategrey;|color=slategrey; color: gray;|color=gray; color: gray;|color=gray; # color names are case-insensitive color: Slategrey;|color=slategrey; color: SlateGrey;|color=slategrey; color: SLATEGREY;|color=slategrey; colorscheme: w3c;|colorscheme=w3c; colorscheme: x11;|colorscheme=x11; colorscheme: puor6;|colorscheme=puor6; colorscheme: puor16|error=Error in attribute: 'puor16' is not a valid colorscheme for a node border-style: double;|borderstyle=double; border-width: 1;|borderwidth=1; border-color: red;|bordercolor=red; color: red; border: none; |border=none;color=red; color:|error=Error in attribute: 'color:' doesn't look valid : red;|error=Error in attribute: ': red;' doesn't look valid : red|error=Error in attribute: ': red' doesn't look valid color: reddish|error=Error in attribute: 'reddish' is not a valid color for a node color:;background: red|error=Error in attribute: 'color:;background: red' doesn't look valid shape:fruggle;|error=Error in attribute: 'fruggle' is not a valid shape for a node color: rgb(256, 0, 0);|error=Error in attribute: 'rgb(256, 0, 0)' is not a valid color for a node color: rgb(0, 256, 0);|error=Error in attribute: 'rgb(0, 256, 0)' is not a valid color for a node color: rgb(0, 0, 256);|error=Error in attribute: 'rgb(0, 0, 256)' is not a valid color for a node shape: qiggle;|error=Error in attribute: 'qiggle' is not a valid shape for a node offset: -3,-2;|offset=-3,-2; offset: 3,-2;|offset=3,-2; offset: -3,2;|offset=-3,2; offset: 2, 0;|offset=2, 0; offset: 2 , 0;|offset=2 , 0; offset: 2 , 0;|offset=2 , 0; offset: 2 , 0 ;|offset=2 , 0; fill: brown;|fill=brown; point-style: qiggle;|error=Error in attribute: 'qiggle' is not a valid pointstyle for a node toint-shape: qiggle;|error=Error in attribute: 'toint-shape' is not a valid attribute name for a node autolink: qiggle;|error=Error in attribute: 'qiggle' is not a valid autolink for a node size: 1, 2;|size=1, 2; start: south, 1;|start=south, 1; start: south , 1;|start=south , 1; start: right , -1;|start=right , -1; end: south, 1;|end=south, 1; end: south , 1;|end=south , 1; end: right , -1;|end=right , -1; end: right,12345;|error=Error in attribute: 'right,12345' is not a valid end for a edge start: right,12345;|error=Error in attribute: 'right,12345' is not a valid start for a edge autolabel: 20;|autolabel=20; autolabel: name,1;|error=Error in attribute: 'name,1' is not a valid autolabel for a node autolabel: name,10;|autolabel=name,10; autolabel: name, 10;|autolabel=name, 10; autolabel: name ,10;|autolabel=name ,10; autolabel: name , 10;|autolabel=name , 10; fill: red^green^yellow;|fill=red,green,yellow; link: http://bloodgate.com/^index.html^/test;|link=http://bloodgate.com/,index.html,/test; link: http://bloodgate.com/ ^ index.html^/test;|link=http://bloodgate.com/,index.html,/test; shape: rect^img^rect;|shape=rect,img,rect; # attribute with a ";" inside quotes, and escaped quotes label: "baz;bar"; color: red;|color=red;label=baz;bar; label: "test";|label=test; label: "test;";|label=test;; label: "\"test\"";|label="test"; label: "\"test;\"";|label="test;"; # alias names bordercolor: red;|bordercolor=red; borderstyle: solid;|borderstyle=solid; borderwidth: 1px;|borderwidth=1px; fontsize: 80%;|fontsize=80%; textstyle: bold;|textstyle=bold; textwrap: auto;|textwrap=auto; pointstyle: diamond;|pointstyle=diamond; arrowstyle: filled;|arrowstyle=filled; labelcolor: peachpuff;|labelcolor=peachpuff; labelpos: bottom;|labelpos=bottom; Graph-Easy-0.75/t/layout.t000444000764000764 1203012322253245 16020 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 32; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Layout") or die($@); }; can_ok ("Graph::Easy", qw/ _trace_path _find_path _create_cell _path_is_clear _clear_tries _find_path_astar _find_path_loop _find_chains _assign_ranks /); can_ok ("Graph::Easy::Node", qw/ _shuffle_dir /); isnt ($Graph::Easy::VERSION, undef, 'VERSION in Layout'); use Graph::Easy; Graph::Easy::Edge::Cell->import (qw/ EDGE_HOR EDGE_VER EDGE_LABEL_CELL EDGE_SHORT_S EDGE_END_S EDGE_START_N /); ############################################################################# # layout tests my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); my ($src, $dst, $edge) = $graph->add_edge('Bonn','Berlin'); my $e = 3; # elements per path cell (x,y,type) ############################################################################# # _shuffle_dir() my $array = [0,1,2,3]; is (join (",",@{ $src->_shuffle_dir($array,0) }), '3,0,2,1', 'shuffle 0' ); is (join (",",@{ $src->_shuffle_dir($array,90) }), '0,1,2,3', 'shuffle 90' ); is (join (",",@{ $src->_shuffle_dir($array) }), '0,1,2,3', 'shuffle ' ); is (join (",",@{ $src->_shuffle_dir($array,270) }), '2,3,1,0', 'shuffle 270'); is (join (",",@{ $src->_shuffle_dir($array,180) }), '1,2,0,3', 'shuffle 180'); ############################################################################# # _near_places() $src->{x} = 1; $src->{y} = 1; my $cells = {}; my @places = $src->_near_places($cells); is (scalar @places, 4 * 2, '4 places'); @places = $src->_near_places($cells,2); # $d == 2 is (scalar @places, 4 * 2, '4 places'); @places = $src->_near_places($cells,3); # $d == 3 is (scalar @places, 4 * 2, '4 places'); @places = $src->_near_places($cells,3,0); # $d == 3, type is 0 is (scalar @places, 4 * $e, '4 places'); # #1+3,1+0,1 ... is (join (',', @places), '4,1,16,1,4,32,-2,1,64,1,-2,128', 'places'); ############################################################################# # _find_path() $src->{x} = 1; $src->{y} = 1; $dst->{x} = 1; $dst->{y} = 1; my $coords = $graph->_find_path( $src, $dst, $edge); is (scalar @$coords, 1*$e, 'same cell => short edge path'); $src->{x} = 1; $src->{y} = 1; $dst->{x} = 2; $dst->{y} = 2; $coords = $graph->_find_path( $src, $dst, $edge); #print STDERR "# " . Dumper($coords) . "\n"; #print STDERR "# " . Dumper($graph->{cells}) . "\n"; is (scalar @$coords, 1*$e, 'path with a bend'); # mark one cell as already occupied $graph->{cells}->{"1,2"} = $src; $src->{x} = 1; $src->{y} = 1; $dst->{x} = 1; $dst->{y} = 3; $coords = $graph->_find_path( $src, $dst, $edge); #print STDERR "# " . Dumper($coords) . "\n"; #print STDERR "# " . Dumper($graph->{cells}) . "\n"; is (scalar @$coords, 3*$e, 'u shaped path (|---^)'); # block src over/under to avoid an U-shaped path $graph->{cells}->{"2,1"} = $src; $graph->{cells}->{"0,1"} = $src; $graph->{cache} = {}; $coords = $graph->_find_path( $src, $dst, $edge); #print STDERR "# " . Dumper($coords) . "\n"; # XXX TODO: check what path is actually generated here is (scalar @$coords, 7*$e, 'cell already blocked'); delete $graph->{cells}->{"1,2"}; $coords = $graph->_find_path( $src, $dst, $edge); is (scalar @$coords, 1*$e, 'straight path down'); is (join (":", @$coords), '1:2:' . (EDGE_SHORT_S() + EDGE_LABEL_CELL()), 'path 1,1 => 1,3'); $src->{x} = 1; $src->{y} = 0; $dst->{x} = 1; $dst->{y} = 5; $coords = $graph->_find_path( $src, $dst, $edge); is (scalar @$coords, 4*$e, 'straight path down'); my $type = EDGE_VER(); my $type_label = EDGE_VER() + EDGE_LABEL_CELL() + EDGE_START_N(); my $type_end = EDGE_VER() + EDGE_END_S(); is (join (":", @$coords), "1:1:$type_label:1:2:$type:1:3:$type:1:4:$type_end", 'path 1,0 => 1,5'); ############################################################################# ############################################################################# # as_ascii() will load Graph::Easy::Layout::Grid, this provides some # additional methods: my $ascii = $graph->as_ascii(); can_ok ("Graph::Easy", qw/ _balance_sizes _prepare_layout / ); ############################################################################# # _balance_sizes my $sizes = [ 3, 4, 5 ]; $graph->_balance_sizes( $sizes, 3+4+5); is_deeply ( $sizes, [ 3,4,5 ], 'constraint already met'); $graph->_balance_sizes( $sizes = [ 3, 4, 5 ], 3+4+5-1); is_deeply ( $sizes, [ 3,4,5 ], 'constraint already met'); $graph->_balance_sizes( $sizes = [ 3, 4, 5 ], 3+4+5+1); is_deeply ( $sizes, [ 4,4,5 ], 'smallest gets bigger'); $graph->_balance_sizes( $sizes = [ 3, 3, 3 ], 3*3 + 2); is_deeply ( $sizes, [ 4,4,3 ], 'first two smallest get bigger'); $graph->_balance_sizes( $sizes = [ 3, 3, 3 ], 3*3 + 3); is_deeply ( $sizes, [ 4,4,4 ], 'all got bigger'); $graph->_balance_sizes( $sizes = [ 3, 3, 3 ], 3*3 + 4); is_deeply ( $sizes, [ 5,4,4 ], 'all got bigger'); $graph->_balance_sizes( $sizes = [ 10, 10, 3 ], 20+7); is_deeply ( $sizes, [ 10,10,7 ], 'last got bigger'); Graph-Easy-0.75/t/layouter.t000444000764000764 321212322253245 16331 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w use Test::More; use strict; # Test parsing and laying out the graphs (with no strict checks on the # output except that it should work). Tests all inputs with the four # flow directions. BEGIN { plan tests => 34; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::Parser") or die($@); }; ############################################################################# # parser object my $parser = Graph::Easy::Parser->new( debug => 0); is (ref($parser), 'Graph::Easy::Parser'); is ($parser->error(), '', 'no error yet'); opendir DIR, "layouter" or die ("Cannot read dir 'in': $!"); my @files = readdir(DIR); closedir(DIR); foreach my $f (sort @files) { next unless -f "layouter/$f"; # only files next unless $f =~ /\.txt/; # ignore anything else print "# at $f\n"; my $txt = readfile("layouter/$f"); for my $flow (qw/down up right west left/) { my $t = "graph { flow: $flow; }\n" . $txt; my $graph = $parser->from_text($t); # reuse parser object # $graph->debug(1); if (!defined $graph) { fail ("Graph input was invalid: " . $parser->error()); next; } my $ascii = $graph->as_ascii(); is ($graph->error(), '', 'no error on layout'); # print a debug output $ascii =~ s/\n/\n# /g; $t =~ s/\n/\n# /g; print "# Input:\n#\n# $t\n"; print "# Generated:\n#\n# $ascii\n"; } # for all directions } 1; sub readfile { my ($file) = @_; open FILE, $file or die ("Cannot read file $file: $!"); local $/ = undef; # slurp mode my $doc = ; close FILE; $doc; } Graph-Easy-0.75/t/base.t000444000764000764 125412322253245 15403 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 6; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Base") or die($@); }; can_ok ("Graph::Easy::Base", qw/ new error error_as_html _init self class sub_class main_class fatal_errors no_fatal_errors /); ############################################################################# # Base tests my $base = Graph::Easy::Base->new(); is (ref($base), 'Graph::Easy::Base', 'new seemed to work'); is ($base->error(), '', 'no error yet'); $base->{class} = 'group.test'; is ($base->main_class(), 'group', 'main_class works'); is ($base->error(), '', 'no error yet'); Graph-Easy-0.75/t/html.t000444000764000764 3463512322253245 15466 0ustar00shlomifshlomif000000000000#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 74; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; ############################################################################# my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); is ($graph->nodes(), 0, '0 nodes'); is ($graph->edges(), 0, '0 edges'); is (join (',', $graph->edges()), '', '0 edges'); my $html = $graph->as_html(); like ($html, qr/
new( name => 'Bonn' ); my $berlin = Graph::Easy::Node->new( 'Berlin' ); my $edge = $graph->add_edge ($bonn, $berlin); $html = $graph->as_html(); like ($html, qr/Bonn/, 'contains Bonn'); like ($html, qr/Berlin/, 'contains Berlin'); ############################################################################# # with some nodes with atributes $bonn->set_attribute( 'autotitle' => 'name' ); $html = $graph->as_html(); like ($html, qr/title='Bonn'/, 'contains title="Bonn"'); unlike ($html, qr/title=['"]Berlin['"]/, "doesn't contain title Berlin"); ############################################################################# # edges do not have a name, will fallback to the label $edge->set_attribute( 'autotitle' => 'name' ); $html = $graph->as_html(); like ($html, qr/title='Bonn'/, 'contains title="Bonn"'); unlike ($html, qr/title=['"]Berlin['"]/, "doesn't contain title Berlin"); unlike ($html, qr/title=['"]['"]/, "no empty title"); $edge->set_attribute( 'label' => 'my edge' ); $html = $graph->as_html(); like ($html, qr/title="my edge"/, 'contains title="my edge"'); ############################################################################# # check that "shape:" does not appear in CSS or HTML $bonn->set_attribute( 'shape' => 'circle' ); $graph->set_attribute ( 'node', 'shape', 'ellipse' ); my $css = $graph->css(); $html = $graph->as_html(); unlike ($css, qr/shape/, 'shape does not appear in CSS'); unlike ($html, qr/shape/, 'shape does not appear in HTML'); ############################################################################# # "shape: invisible" should result in an empty td tag w/ "border: none" $bonn->set_attribute( 'shape' => 'invisible' ); $css = $graph->css(); $html = $graph->as_html(); unlike ($html, qr/display:\s*none/, 'shape invisible is not display: none'); like ($html, qr/td.*border:\s*none/, 'shape invisible results in border: none'); ############################################################################# # label colors $graph->set_attribute( 'edge', 'label-color' => 'blue' ); $edge->set_attribute( 'label-color' => 'red' ); $css = $graph->css(); $html = $graph->as_html(); unlike ($html, qr/border-bottom:.*;\s*color: #0000ff/, 'no edge is green'); like ($html, qr/border-bottom:.*;\s*color: #ff0000/, 'some edge is red'); ############################################################################# # edge color vs. label colors $edge->set_attribute( 'color' => 'green' ); $html = $graph->as_html(); unlike ($html, qr/border-bottom:.*#0000ff/, 'no edge got blue'); unlike ($html, qr/border-bottom:.*;\s*color: #0000ff/, 'no edge got blue'); like ($html, qr/border-bottom:.*#008000.*;\s*color: #ff0000/, 'color green, label-color red'); ############################################################################# # caption from label $graph->set_attribute( 'graph', 'label' => 'My Graph Label' ); $html = $graph->as_html(); like ($html, qr/
My Graph Label<\/td>/, 'graph caption from label'); ############################################################################# # caption with label-pos $graph->set_attribute( 'graph', 'label' => 'My Graph Label' ); $graph->set_attribute( 'graph', 'label-pos' => 'bottom' ); $html = $graph->as_html(); like ($html, qr/My Graph Label<\/td>/, 'graph caption from label'); ############################################################################# # html_file includes and charset: $html = $graph->as_html_file(); my $charset = quotemeta('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'); like ($html, qr/$charset/, 'html_file includes charset definition'); like ($html, qr/<title>My Graph Label<\/title>/, 'html_file includes <title>'); ############################################################################# # egdes with links, titles and colors $graph = Graph::Easy->new(); $edge = $graph->add_edge('Friedrichshafen', 'Immenstaad'); $edge->set_attribute('title', 'Vrooom!'); $edge->set_attribute('color', 'orange'); $edge->set_attribute('text-style', 'none'); $edge->set_attribute('font-size', '1.5em'); $edge->set_attribute('link', 'http://bloodgate.com'); $edge->set_attribute('label', 'Schiff'); # This tests edge->as_html(), which will not be called for normal operations, # in these cases we would convert the single edge cells to HTML. my $edge_html = <<EDGE <td colspan=4 rowspan=4 class='edge' title='Vrooom!'><a href='http://bloodgate.com' style="color: #ffa500; text-decoration: none; font-size: 1.5em">Schiff</a></td> EDGE ; is ($edge->as_html(), $edge_html, 'edge->as_html()'); # entire graph as html $html = $graph->as_html(); $edge_html = <<EDGE_CELL <td colspan=2 rowspan=2 class="edge lh" style="border-bottom: solid 2px #ffa500;" title="Vrooom!"><a href='http://bloodgate.com' style='color: #ffa500; text-decoration: none; font-size: 1.5em;'>Schiff</a></td> EDGE_CELL ; my $like = quotemeta($edge_html); like ($html, qr/$like/, 'graph->as_html() contains proper edge html'); ############################################################################# # edge style double, double-dash, bold etc $graph = Graph::Easy->new(); $edge = $graph->add_edge('Friedrichshafen', 'Immenstaad'); $edge->set_attribute('style', 'double'); $edge_html = <<EDGE_2 <td colspan=4 rowspan=4 class='edge'></td> EDGE_2 ; is ($edge->as_html(), $edge_html, 'edge->as_html()'); $edge_html = <<EDGE_CELL <td colspan=2 rowspan=2 class="edge lh" style="border-bottom: double #000000;"> </td> EDGE_CELL ; $like = quotemeta($edge_html); $html = $graph->as_html(); like ($html, qr/$like/, 'edge->as_html()'); $edge->set_attribute('style', 'double-dash'); $edge_html = <<EDGE_CELL <td colspan=2 rowspan=2 class="edge lh" style="border-bottom: double #000000;"> </td> EDGE_CELL ; $like = quotemeta($edge_html); $html = $graph->as_html(); like ($html, qr/$like/, 'edge->as_html()'); ############################################################################# # edge color and label-color $edge->set_attribute('label-color', 'blue'); $edge_html = <<EDGE_CELL <td colspan=2 rowspan=2 class="edge lh" style="border-bottom: double #000000;color: #0000ff;"> </td> EDGE_CELL ; $like = quotemeta($edge_html); $html = $graph->as_html(); like ($html, qr/$like/, 'edge->as_html()'); ############################################################################# # a node with a link and a fill color at the same time my $f = $graph->node('Friedrichshafen'); $f->set_attribute('link', 'http://bloodgate.com'); $f->set_attribute('fill', 'red'); $html = $f->as_html(); is ($html, <<EOF <td colspan=4 rowspan=4 class='node' style="background: #ff0000"><a href='http://bloodgate.com'>Friedrichshafen</a></td> EOF , 'fill is on the TD, not the A HREF'); ############################################################################# # a node with a link and a border at the same time $f->set_attribute('border', 'orange'); $html = $f->as_html(); is ($html, <<EOF <td colspan=4 rowspan=4 class='node' style="background: #ff0000;border: solid 1px #ffa500"><a href='http://bloodgate.com'>Friedrichshafen</a></td> EOF , 'border is on the TD, not the A HREF'); ############################################################################# # as_html_file() includes the proper classes $html = $graph->as_html_file(); for my $c (qw/eb lh lv va el sh shl/) { like ($html, qr/table.graph \.$c/, "includes '$c'"); } ############################################################################# # group labels are left-aligned $graph = Graph::Easy->new(); my $group = $graph->add_group('Cities'); my ($A,$B) = $graph->add_edge('Krefeld', 'Düren'); $group->add_nodes($A,$B); $css = $graph->css(); like ($css, qr/group[^\}]*text-align: left;/, 'contains text-align: left'); ############################################################################# # setting a graph color does not override nodes/edges/groups $graph->set_attribute('color', 'red'); $css = $graph->css(); for my $e (qw/node_anon edge group_anon/) { unlike ($css, qr/table.graph\s+\.$e\s+\{[^\}]*[^-]color: #ff0000;/m, "contains not $e color red"); } ############################################################################# # setting a graph font/fill does not override nodes/edges/groups $graph->set_attribute('font', 'times'); $graph->set_attribute('fill', 'blue'); $graph->set_attribute('font-size', '8em'); $graph->set_attribute('align', 'left'); $css = $graph->css(); unlike ($css, qr/table.graph\s+\{[^\}]*font-family: /m, "doesn't contain font-family"); unlike ($css, qr/table.graph\s+\{[^\}]*fill: /m, "doesn't contain fill"); unlike ($css, qr/table.graph\s+\{[^\}]*color: /m, "doesn't contain color"); unlike ($css, qr/table.graph\s+\{[^\}]*background[^\}]*background/m, "doesn't contain two times background"); unlike ($css, qr/table.graph\s+\{[^\}]*text-align/m, "doesn't contain font-size"); unlike ($css, qr/table.graph\s+\{[^\}]*font-size/m, "doesn't contain text-align"); ############################################################################# # multiline labels with \c, \r, and \l in them $graph = Graph::Easy->new(); ($A,$B) = $graph->add_edge('Köln', 'Rüdesheim'); $A->set_attribute('label', 'Köln\r(am Rhein)\l(NRW)\c(Deutschland)'); $html = $graph->as_html_file(); like ($html, qr/class='node'>Köln<br><span class="r">\(am Rhein\)<\/span><br><span class="l">\(NRW\)<\/span><br>\(Deutschland\)</, 'Köln with multiline text'); $A->set_attribute('align', 'right'); $html = $graph->as_html_file(); like ($html, qr/class='node' style="text-align: center"><span class="r">Köln<\/span><br><span class="r">\(am Rhein\)<\/span><br><span class="l">\(NRW\)<\/span><br>\(Deutschland\)</, 'Köln with multiline text'); ############################################################################# # multiline labels with "textwrap: N;" $graph = Graph::Easy->new(); ($A,$B) = $graph->add_edge('Köln', 'Rüdesheim'); $A->set_attribute('label', 'Köln\r(am Rhein)\l(NRW)\c(Deutschland)'); $A->set_attribute('textwrap', 10); #print join (" ", $A->_label_as_html() ); $html = $graph->as_html_file(); like ($html, qr/class='node'>Köln \(am<br>Rhein\)<br>\(NRW\)<br>\(Deutschland\)</, 'Köln with multiline text'); ############################################################################# # invisible edges $graph = Graph::Easy->new(); ($A,$B,$edge) = $graph->add_edge('Hamm', 'Hagen'); $edge->set_attribute('style','invisible'); $edge->set_attribute('label','foobarbaz'); $edge->set_attribute('color','red'); $html = $graph->as_html_file(); unlike ($html, qr/invisible/, 'no border on invisible edges'); unlike ($html, qr/#ff0000/, 'no color on invisible edges'); unlike ($html, qr/foobarbaz/, 'no label on invisible edges'); ############################################################################# # inheritance of attributes via classes $graph = Graph::Easy->new(); ($A,$B,$edge) = $graph->add_edge('green', 'blue.foo'); $graph->set_attribute('color','red'); $graph->set_attribute('node','color','blue'); $graph->set_attribute('node.foo','color','inherit'); $graph->set_attribute('node.bar','color','green'); $graph->set_attribute('edge','color','inherit'); $graph->set_attribute('edge.foo','color','inherit'); $A->set_attribute('class','bar'); $B->set_attribute('class','foo'); $edge->set_attribute('class','foobar'); # no color set my ($C,$D,$E) = $graph->add_edge('blue','red'); $E->set_attribute('class','foo'); # inherits red $D->set_attribute('color','inherit'); # inherits red from graph is ($A->attribute('color'),'green', 'node.bar is green'); is ($B->attribute('color'),'blue', 'node.foo inherits blue from node'); is ($C->attribute('color'),'blue', 'node is just blue'); is ($D->attribute('color'),'red', 'inherits red from graph'); is ($edge->attribute('color'),'black', 'no color set, so defaults to black'); is ($E->attribute('color'),'red', 'inherit red from graph'); ############################################################################# # comments $graph = Graph::Easy->new(); ($A,$B,$edge) = $graph->add_edge('green', 'blue.foo'); $graph->set_attribute('comment', 'My comment --> graph'); $A->set_attribute('comment', 'My comment --> A'); $edge->set_attribute('comment', 'My comment --> edge'); $html = $graph->as_html_file(); like ($html, qr/<!-- My comment --> graph -->/, 'graph comment'); like ($html, qr/<!-- My comment --> A -->/, 'node comment'); like ($html, qr/<!-- My comment --> edge -->/, 'edge comment'); ############################################################################# # colorscheme and class attributes $graph = Graph::Easy->new(); ($A,$B,$edge) = $graph->add_edge('A', 'B'); $graph->set_attribute('colorscheme', 'pastel19'); $graph->set_attribute('node.yellow', 'fill', '1'); $graph->set_attribute('node.yellow', 'color', 'silver'); $A->set_attribute('class', 'yellow'); $html = $graph->as_html_file(); like ($html, qr/node_yellow(.|\n)*background: #fbb4ae;/, 'background is not 1'); like ($html, qr/node_yellow(.|\n)*color: silver;/, 'color is silver'); ############################################################################# # support for \N, \E, \H, \T, \G in titles and labels $graph = Graph::Easy->new(); ($A,$B,$edge) = $graph->add_edge('A', 'B'); $graph->set_attribute('label', 'My Graph'); $graph->set_attribute('node', 'title', 'My \N in \G'); $graph->set_attribute('edge', 'title', 'My \E in \G (\T => \H)'); $html = $graph->as_html_file(); like ($html, qr/title='My A in My Graph'/, 'title with \N and \G'); like ($html, qr/title='My B in My Graph'/, 'title with \N and \G'); like ($html, qr/title="My A->B in My Graph \(A => B\)"/, 'title with \E, \H, \T'); # support for \L in titles $graph->set_attribute('node', 'label', 'labeled "My \N"'); $graph->set_attribute('node', 'title', 'My \L'); $html = $graph->as_html_file(); like ($html, qr/title='My labeled "My A"'/, 'title with \L'); ���������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/layers.t��������������������������������������������������������������������������000444��000764��000764�� 10752�12322253245� 16013� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test ranking of nodes, especially _assign_ranks(): use Test::More; use strict; BEGIN { plan tests => 60; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Layout") or die($@); }; use Graph::Easy; ############################################################################# # rank tests my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); my $A = Graph::Easy::Node->new( name => 'A' ); my $B = Graph::Easy::Node->new( 'B' ); my $C = Graph::Easy::Node->new( 'C' ); my $D = Graph::Easy::Node->new( 'D' ); my $E = Graph::Easy::Node->new( 'E' ); is ($B->name(), 'B'); is ($A->{rank}, undef, 'no ranks assigned yet'); $graph->_assign_ranks(); is ($A->{rank}, undef, 'A not part of graph'); is ($A->connections(), 0); $graph->add_edge( $A, $B ); $graph->_assign_ranks(); is ($A->connections(), 1); is ($B->connections(), 1); is_rank($A, 0); is_rank($B, 1); $graph->add_edge( $B, $C ); $graph->_assign_ranks(); is_rank($A, 0); is_rank($B, 1); is_rank($C, 2); $graph->add_edge( $C, $D ); $graph->_assign_ranks(); is_rank($A, 0); is_rank($B, 1); is_rank($C, 2); is_rank($D, 3); $graph = Graph::Easy->new(); $graph->add_edge( $C, $D ); $graph->add_edge( $A, $B ); $graph->_assign_ranks(); is_rank($A, 0); is_rank($B, 1); is_rank($C, 0); is_rank($D, 1); $graph->add_edge( $D, $E ); $graph->_assign_ranks(); is_rank($A, 0); is_rank($B, 1); is_rank($C, 0); is_rank($D, 1); is_rank($E, 2); print "# IDs A B C D E: ". $A->{id}. " ". $B->{id}. " ". $C->{id}. " ". $D->{id}. " ". $E->{id}. "\n"; # circular path C->D->E->C $graph->add_edge( $E, $C ); $graph->_assign_ranks(); is_rank($A, 0); is_rank($B, 1); is_rank($C, 0); is_rank($D, 1); is_rank($E, 2); ############################################################################# # looping node $graph = Graph::Easy->new(); $graph->add_edge( $A, $A ); $graph->_assign_ranks(); is ($A->connections(), 2); is_rank($A, 0); ############################################################################# # multiedged graph $graph = Graph::Easy->new(); $graph->add_edge( $A, $B ); $graph->add_edge( $A, $B ); # add second edge $graph->_assign_ranks(); # second edge does not alter result is (scalar $A->successors(), 1); is ($A->connections(), 2); is (scalar $B->predecessors(), 1); is ($B->connections(), 2); is_rank($A, 0); is_rank($B, 1); ############################################################################# # near nodes (2 in rank 0, one in rank 1, 1 in rank 2) $graph = Graph::Easy->new(); $graph->add_node($A); $graph->add_node($B); $graph->add_node($C); $graph->add_node($D); $graph->add_edge( $A, $B ); $graph->add_edge( $C, $B ); $graph->add_edge( $B, $D ); $graph->_assign_ranks(); is ($A->connections(), 1); is ($B->connections(), 3); is ($C->connections(), 1); is ($D->connections(), 1); is_rank($A, 0); is_rank($B, 1); is_rank($C, 0); is_rank($D, 2); my @nodes = $graph->sorted_nodes(); is_deeply (\@nodes, [ $A, $B, $C, $D ], 'nodes sorted on id'); @nodes = $graph->sorted_nodes('rank'); is_deeply (\@nodes, [ $A, $C, $B, $D ], 'nodes sorted on rank'); @nodes = $graph->sorted_nodes('rank', 'name'); is_deeply (\@nodes, [ $A, $C, $B, $D ], 'nodes sorted on rank and name'); $A->{name} = 'a'; @nodes = $graph->sorted_nodes('rank', 'name'); is_deeply (\@nodes, [ $C, $A, $B, $D ], 'nodes sorted on rank and name'); $A->{name} = 'Z'; @nodes = $graph->sorted_nodes('rank', 'name'); is_deeply (\@nodes, [ $C, $A, $B, $D ], 'nodes sorted on rank and name'); @nodes = $graph->sorted_nodes('rank', 'id'); is_deeply (\@nodes, [ $A, $C, $B, $D ], 'nodes sorted on rank and id'); @nodes = $graph->sorted_nodes('name', 'id'); is_deeply (\@nodes, [ $B, $C, $D, $A ], 'nodes sorted on name and id'); ############################################################################# # explicit set ranks $graph = Graph::Easy->new(); $graph->add_edge( $A, $B ); $graph->add_edge( $B, $C ); $graph->add_edge( $C, $D ); $graph->add_edge( $D, $E ); $C->set_attribute('rank', '0'); $E->set_attribute('rank', '5'); $graph->_assign_ranks(); is_rank($A, 0); is_rank($B, 1); is_rank($C, 0); is_rank($D, 1); is_rank($E, 5); 1; ############################################################################# sub is_rank { my ($n, $l) = @_; # Rank is "-1..-inf" for automatically assigned ranks, and "1..inf" for # user supplied ranks: my $rank = abs($n->{rank})-1; print STDERR "# called from: ", join(" ", caller),"\n" unless is ($rank, $l, "$n->{name} has rank $l"); } ����������������������Graph-Easy-0.75/t/as_vcg.t��������������������������������������������������������������������������000444��000764��000764�� 2231�12322253245� 15727� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Some basic as_vcg tests use Test::More; use strict; BEGIN { plan tests => 7; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::Parser") or die($@); }; can_ok ('Graph::Easy', qw/ as_vcg as_vcg_file /); ############################################################################# my $graph = Graph::Easy->new(); my $vcg = $graph->as_vcg(); my $vcg_file = $graph->as_vcg_file(); # remove time stamp: $vcg =~ s/ at.*//; $vcg_file =~ s/ at.*//; is ($vcg, $vcg_file, 'as_vcg and as_vcg_file are equal'); $graph->add_edge('A','B'); like ($graph->as_vcg(), qr/edge: { sourcename: "A" targetname: "B" }/, 'as_vcg matches'); # set edge label my @edges = $graph->edges(); $edges[0]->set_attribute('label', 'my car'); like ($graph->as_vcg(), qr/edge: { label: "my car" sourcename: "A" targetname: "B" }/, 'as_vcg matches'); ############################################################################# # graph label $graph = Graph::Easy->new(); $graph->set_attribute('label', 'my graph label'); like ($graph->as_vcg(), qr/title: "my graph label"/, 'as_vcg has graph label'); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/use_class.t�����������������������������������������������������������������������000444��000764��000764�� 4331�12322253245� 16451� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 8; chdir 't' if -d 't'; use lib '../lib'; use_ok qw/Graph::Easy/; use_ok qw/Graph::Easy::Parser/; } ###################################################### package Graph::Easy::MyNode; use Graph::Easy::Node; use base qw/Graph::Easy::Node/; # override here methods for your node class ###################################################### # when overriding nodes, we also need ::Anon package Graph::Easy::MyNode::Anon; #use Graph::Easy::MyNode; use base qw/Graph::Easy::MyNode/; use base qw/Graph::Easy::Node::Anon/; ###################################################### # and :::Empty package Graph::Easy::MyNode::Empty; #use Graph::Easy::MyNode; use base qw/Graph::Easy::MyNode/; ###################################################### package Graph::Easy::MyGraph; use Graph::Easy; use base qw/Graph::Easy/; ###################################################### package Graph::Easy::MyGroup; use Graph::Easy::Group; use base qw/Graph::Easy::Group/; ###################################################### package Graph::Easy::MyEdge; use Graph::Easy::Edge; use base qw/Graph::Easy::Edge/; ###################################################### package main; use Graph::Easy::Parser; use Graph::Easy; my $parser = Graph::Easy::Parser->new(); $parser->use_class('node', 'Graph::Easy::MyNode'); $parser->use_class('edge', 'Graph::Easy::MyEdge'); $parser->use_class('graph', 'Graph::Easy::MyGraph'); $parser->use_class('group', 'Graph::Easy::MyGroup'); my $graph = $parser->from_text("( Cities: [ Bonn ] -> [ Berlin| |Spree ] -> [ ])"); is (ref($graph), 'Graph::Easy::MyGraph', 'graph worked'); my $group = $graph->group('Cities:'); is (ref($group), 'Graph::Easy::MyGroup', 'group worked'); my $bonn = $graph->node('Bonn'); is (ref($bonn), 'Graph::Easy::MyNode', 'node worked'); my @nodes = $graph->nodes(); my $empty = $graph->node('BerlinSpree.1'); is (ref($empty), 'Graph::Easy::MyNode::Empty', 'empty node worked'); $graph = $parser->from_text("[ ]"); is (ref($graph), 'Graph::Easy::MyGraph', 'graph with anon node worked'); @nodes = $graph->nodes(); my $anon = $nodes[0]; is (ref($anon), 'Graph::Easy::MyNode::Anon', 'anon node worked'); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/node.t����������������������������������������������������������������������������000444��000764��000764�� 45361�12322253245� 15445� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 203; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Node") or die($@); use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::As_ascii") or die($@); }; can_ok ("Graph::Easy::Node", qw/ new as_html as_ascii error class dimensions name sorted_successors successors predecessors has_predecessors has_as_predecessor has_as_successor connections edges edges_to incoming outgoing width background height columns rows size flow angle parent pos offset x y class title link shape default_attribute del_attribute set_attribute get_attribute set_attributes attribute default_attribute color_attribute get_attributes border_attribute group add_to_group origin is_multicelled nodes_sharing_start nodes_sharing_end as_html _place _do_place _check_place _place_children find_grandparent _near_places _allowed_places /); ############################################################################# my $node = Graph::Easy::Node->new(); is (ref($node), 'Graph::Easy::Node'); is ($node->error(), '', 'no error yet'); is ($node->x(), undef, 'x == undef'); is ($node->y(), undef, 'y == undef'); is ($node->label(), 'Node #0', 'label'); is ($node->name(), 'Node #0', 'name'); is ($node->class(), 'node', 'class node'); is ($node->title(), '', 'no title per default'); is (join(",", $node->pos()), "0,0", 'pos = 0,0'); is ($node->width(), undef, 'w = undef'); # no graph => thus no width yet is ($node->height(), undef, 'h == undef'); is ($node->shape(), 'rect', 'default shape is "rect"'); is ($node->border_attribute(), '', 'border_attribute()'); is ($node->connections(), 0, 'no connections yet'); is ($node->is_multicelled(), 0, 'no multicelled'); is ($node->rows(), 1, '1 row'); is ($node->columns(), 1, '1 column'); # These are inherited: is ($node->attribute('border'), '', 'attribute("border")'); is ($node->attribute('border-style'), 'solid', 'attribute("border-style")'); is (join(",",$node->dimensions()), "7,1", 'dimensions = (7,1)'); is ($node->origin(), undef, 'not clustered'); is (join(",",$node->offset()), '0,0', 'not clustered'); is (scalar $node->successors(), undef, 'no outgoing links'); is (scalar $node->sorted_successors(), 0, 'no outgoing links'); is (scalar $node->predecessors(), undef, 'no incoming links'); is (scalar $node->incoming(), undef, 'no incoming links'); is (scalar $node->outgoing(), undef, 'no outgoing links'); my $edge = Graph::Easy::Node->new(); $edge->set_attribute('class' => 'edge'); is ($edge->class(), 'node.edge', 'class edge'); is ($edge->border_attribute(), '', 'border_attribute()'); my $other = Graph::Easy::Node->new(); is (scalar $node->edges_to($other), undef, 'no graph, no links'); is (scalar $node->edges(), undef, 'no graph, no edges'); ############################################################################# # predecessors(), successors(), connections() and edges_to() tests my $graph = Graph::Easy->new( ); $other = Graph::Easy::Node->new( 'Name' ); $edge = $graph->add_edge ($node, $other); is ($node->{graph}, $graph, "node's graph points to \$graph"); is ($other->{graph}, $graph, "other's graph points to \$graph"); is ($node->successors(), 1, '1 outgoing'); is (scalar $node->sorted_successors(), 1, '1 outgoing'); is ($node->predecessors(), 0, '0 incoming'); is (scalar $node->edges_to($other), 1, '1 link to $other'); is ($node->connections(), 1, '1 connection'); is (scalar $node->edges(), 1, '1 edge'); is ($node->has_as_successor($other), 1, 'node -> other'); is ($node->has_as_successor($node), 0, '! node -> node'); is ($node->has_as_predecessor($node), 0, '! node -> node'); is ($node->has_as_predecessor($other), 0, '! node -> node'); is ($other->has_as_successor($other), 0, '! other -> node'); is ($other->has_as_successor($node), 0, '! other -> other'); is ($other->has_as_predecessor($node), 1, ' node -> other'); is ($other->has_as_predecessor($other), 0, '! other -> other'); my @E = $node->edges_to($other); is (scalar @E, 1, '1 link to $other'); is ($E[0], $edge, 'first link to $other is $edge'); @E = $node->edges(); is ($E[0], $edge, '1 edge'); is ($other->successors(), 0, '0 outgoing'); is (scalar $other->sorted_successors(), 0, '0 outgoing'); is ($other->predecessors(), 1, '1 incoming'); is ($other->connections(), 1, '1 connection'); $graph->add_edge('First', 'Name'); @E = $node->edges_to($other); is (scalar @E, 1, '1 link to $other'); is ($E[0], $edge, 'first link to $other is $edge'); $graph->add_edge('Name', 'Name'); ############################################################################# # as_txt/as_html my $r = 'colspan=4 rowspan=4'; use_ok ('Graph::Easy::As_txt'); can_ok ('Graph::Easy::Node', qw/attributes_as_txt as_txt as_pure_txt/); is ($node->as_txt(), '[ Node \#0 ]', 'as_txt'); is ($node->as_html(), " <td $r class='node'>Node #0</td>\n", 'as_html'); # no quoting of () nec. $node->{name} = 'Frankfurt (Oder)'; is ($node->as_txt(), '[ Frankfurt (Oder) ]', 'as_txt'); is ($node->as_html(), " <td $r class='node'>Frankfurt (Oder)</td>\n", 'as_html'); # quoting of | $node->{name} = 'Frankfurt |-|'; is ($node->as_txt(), '[ Frankfurt \|-\| ]', 'as_txt'); is ($node->as_html(), " <td $r class='node'>Frankfurt |-|</td>\n", 'as_html'); # quoting of [] and {} $node->{name} = 'Frankfurt [ { #1 } ]'; is ($node->as_txt(), '[ Frankfurt \[ \{ \#1 \} \] ]', 'as_txt'); is ($node->as_html(), " <td $r class='node'>Frankfurt [ { #1 } ]</td>\n", 'as_html'); # quoting of &, < and > $node->{name} = 'Frankfurt < & >'; is ($node->as_txt(), '[ Frankfurt < & > ]', 'as_txt'); is ($node->as_html(), " <td $r class='node'>Frankfurt < & ></td>\n", 'as_html'); ############################################################################# # as_txt with labels $node->set_attribute('label', 'thelabel'); $node->{name} = 'name'; is ($node->as_txt(), '[ name ] { label: thelabel; }', 'as_txt'); # reset node for next tests $node->{name} = 'Node #0'; $node->del_attribute('label'); # test setting after deletion $node->set_attribute('label', 'my label'); is ($node->as_txt(), '[ Node \#0 ] { label: my label; }', 'as_txt'); # reset node for next tests $node->del_attribute('label'); ############################################################################# # as_txt/as_html w/ subclass and attributes $node->{class} = 'node.cities'; is ($node->as_txt(), '[ Node \#0 ] { class: cities; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_cities'>Node #0</td>\n", 'as_html'); is ($node->as_pure_txt(), '[ Node \#0 ]', 'as_txt_node'); $node->set_attribute ( 'color', 'blue' ); is ($node->as_txt(), '[ Node \#0 ] { color: blue; class: cities; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_cities' style=\"color: #0000ff\">Node #0</td>\n", 'as_html'); is ($node->as_pure_txt(), '[ Node \#0 ]', 'as_pure_txt'); $node->set_attributes ( { color => 'purple' } ); is ($node->as_txt(), '[ Node \#0 ] { color: purple; class: cities; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_cities' style=\"color: #800080\">Node #0</td>\n", 'as_html'); is ($node->as_pure_txt(), '[ Node \#0 ]', 'as_pure_txt'); ############################################################################# # set_attributes(class => foo) $node->set_attributes ( { class => 'foo', color => 'orange' } ); is ($node->class(), 'node.foo', 'class set correctly'); is ($node->sub_class(), 'foo', 'class set correctly'); is ($node->attribute('color'), 'orange', 'color set correctly'); is ($node->as_txt(), '[ Node \#0 ] { color: orange; class: foo; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_foo' style=\"color: #ffa500\">Node #0</td>\n", 'as_html'); $node->set_attribute ( 'class', 'bar' ); is ($node->as_txt(), '[ Node \#0 ] { color: orange; class: bar; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_bar' style=\"color: #ffa500\">Node #0</td>\n", 'as_html'); ############################################################################# # set_attribute() with encoded entities (%3a etc) and quotation marks foreach my $l ( 'http://bloodgate.com/', '"http://bloodgate.com/"', '"http%3a//bloodgate.com/"', ) { $node->set_attribute('link', $l); is ($node->as_txt(), '[ Node \#0 ] { color: orange; link: http://bloodgate.com/; class: bar; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_bar'><a href='http://bloodgate.com/' style=\"color: #ffa500\">Node #0</a></td>\n", 'as_html'); } foreach my $l ( 'perl/', '"perl/"', ) { $node->set_attribute('link', $l); is ($node->as_txt(), '[ Node \#0 ] { color: orange; link: perl/; class: bar; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_bar'><a href='/wiki/index.php/perl/' style=\"color: #ffa500\">Node #0</a></td>\n", 'as_html'); } $node->set_attribute('link', "test test&"); is ($node->as_txt(), '[ Node \#0 ] { color: orange; link: test test&; class: bar; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_bar'><a href='/wiki/index.php/test+test&' style=\"color: #ffa500\">Node #0</a></td>\n", 'as_html'); $node->set_attribute('color', "\\#801010"); is ($node->as_txt(), '[ Node \#0 ] { color: #801010; link: test test&; class: bar; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_bar'><a href='/wiki/index.php/test+test&' style=\"color: #801010\">Node #0</a></td>\n", 'as_html'); # test quotation marks in link: $node->set_attribute('link', "test'test"); is ($node->as_txt(), '[ Node \#0 ] { color: #801010; link: test\'test; class: bar; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_bar'><a href='/wiki/index.php/test%27test' style=\"color: #801010\">Node #0</a></td>\n", 'as_html'); # quotation mark at the end (but not at the start) $node->set_attribute('link', "test'"); is ($node->as_txt(), '[ Node \#0 ] { color: #801010; link: test\'; class: bar; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_bar'><a href='/wiki/index.php/test%27' style=\"color: #801010\">Node #0</a></td>\n", 'as_html'); ############################################################################# # multicelled nodes is ($node->is_multicelled(), 0, 'no multicelled'); is (join (",",$node->size()), '1,1', 'size 1,1'); $node->set_attribute('size', '5,3'); $node->_calc_size(); is (join (",",$node->size()), '5,3', 'size 5,3'); is ($node->is_multicelled(), 1, 'is multicelled'); is ($node->attribute('size'), '5,3', 'attribute("size")'); $node->set_attribute('size', '1,1'); $node->_calc_size(); is ($node->{att}->{rows}, 1, 'rows still present'); is ($node->{att}->{columns}, 1, 'columns still present'); is ($node->as_txt(), "[ Node \\#0 ] { color: #801010; link: test'; class: bar; }", 'size not in output'); $node->del_attribute('size'); is (exists $node->{att}->{rows} ? 1 : 0, 0, 'rows no longer present'); is (exists $node->{att}->{columns} ? 1 : 0, 0, 'columns no longer present'); ############################################################################# # skipping of attributes (should not appear in HTML) $node->set_attribute('link', "test test&"); $node->set_attribute('flow','right'); $node->set_attribute('point-style','diamond'); is ($node->as_txt(), '[ Node \#0 ] { color: #801010; flow: right; link: test test&; pointstyle: diamond; class: bar; }', 'as_txt'); is ($node->as_html(), " <td $r class='node_bar'><a href='/wiki/index.php/test+test&' style=\"color: #801010\">Node #0</a></td>\n", 'as_html'); ############################################################################# # group tests is ($node->group(), undef, 'no groups yet'); use Graph::Easy::Group; my $group = Graph::Easy::Group->new( { name => 'foo' } ); $node->add_to_group($group); is ($node->group(), $group, 'group foo'); is ($node->attribute('group'), $group->{name}, 'group foo'); ############################################################################# # title tests $node->set_attribute('title', "foo title"); is ($node->title(), 'foo title', 'foo title'); $node->del_attribute('title'); $node->set_attribute('autotitle', 'none'); is ($node->title(), '', 'no title if autotitle: none'); $node->set_attribute('autotitle', 'name'); is ($node->title(), $node->name(), 'title equals name'); $node->set_attribute('autotitle', 'label'); is ($node->title(), $node->name(), 'title equals name'); $node->set_attribute('label', 'label'); is ($node->title(), 'label', 'title equals label'); $node->set_attribute('link', ''); $node->set_attribute('autotitle', 'link'); is ($node->title(), '', 'title "" if no link'); $node->set_attribute('link', 'http://bloodgate.com/'); is ($node->title(), $node->link(), 'title eq link'); $node->set_attribute('title','my title'); is ($node->title(), 'my title', 'title will override autotitle'); ############################################################################# # invisible nodes, and nodes with shape none $node = Graph::Easy::Node->new( { name => "anon 0", label => 'X' } ); $node->set_attribute('shape', "invisible"); is ($node->as_ascii(), "", 'invisible text node'); $node->set_attribute('shape', "none"); $node->_correct_size(); is ($node->as_ascii(), " \n X \n ", 'no border for shape "none"'); ############################################################################# # as_ascii() and label vs name (bug until v0.16) $node = Graph::Easy::Node->new( { name => "Node #01234", label => 'label' } ); is ($node->label(), 'label', 'node label eq "label"'); $node->_correct_size(); is ($node->width(), '9', 'width 9 (length("label") + 2 (padding) + 2 (border)'); is ($node->height(), '3', 'height 3'); like ($node->as_ascii(), qr/label/, 'as_ascii uses label, not name'); ############################################################################# # node placement (unclustered) $node = Graph::Easy::Node->new(); my $cells = { }; my $parent = { cells => $cells }; is ($node->_do_place(1,1,$parent), 1, 'node can be placed'); is ($cells->{"1,1"}, $node, 'node was really placed'); is (scalar keys %$cells, 1, 'one entry'); is ($node->_do_place(1,1,$parent), 0, 'node cannot be placed again'); is ($cells->{"1,1"}, $node, 'node still there placed'); is (scalar keys %$cells, 1, 'one entry'); ############################################################################# # outgoing/incoming $graph = Graph::Easy->new(); my ($A,$B); ($A,$B, $edge) = $graph->add_edge('A','B'); is ($A->incoming(), 0, 'no incoming'); is ($B->outgoing(), 0, 'no outgoing'); is ($B->incoming(), 1, 'one incoming'); is ($A->outgoing(), 1, 'one outgoing'); my $C; ($B,$C, $edge) = $graph->add_edge('B', 'C'); is ($B->incoming(), 1, 'one incoming'); is ($C->incoming(), 1, 'one incoming'); is ($A->outgoing(), 1, 'one outgoing'); is ($B->outgoing(), 1, 'one outgoing'); $graph->add_edge('A', 'C'); is ($C->incoming(), 2, 'two incoming'); is ($A->outgoing(), 2, 'one outgoing'); $graph->add_edge('C', 'C'); is ($C->incoming(), 3, 'C -> C'); is ($C->outgoing(), 1, 'C -> C'); ############################################################################# # _allowed_places() $graph = Graph::Easy->new(); ($A,$B, $edge) = $graph->add_edge('A','B'); my @allowed = $A->_allowed_places ( [ 0,0, 0,1, 0,2, 0,3 ], [ 0,0, 0,2, 1,2 ]); is_deeply (\@allowed, [ 0,0, 0,2 ], '_allowed_places'); @allowed = $A->_allowed_places ( [ 0,0, 0,1, 0,2, 0,3 ], [ ]); is_deeply (\@allowed, [ ], '_allowed_places'); @allowed = $A->_allowed_places ( [ 0,0, 0,1, 0,2, 0,3 ], [ 3,1, 1,2, 0,4 ]); is_deeply (\@allowed, [ ], '_allowed_places'); @allowed = $A->_allowed_places ( [ 0,0, 0,1, 0,2, 0,3 ], [ 3,1, 1,2, 0,3 ]); is_deeply (\@allowed, [ 0,3 ], '_allowed_places'); ############################################################################# # _allow() $A->{x} = 1; $A->{y} = 2; $A->{cx} = 3; $A->{cy} = 2; my $allow = $A->_allow('south',''); is_deeply ($allow, [ 1,4, 2,4, 3,4 ], 'south'); $allow = $A->_allow('south','0'); is_deeply ($allow, [ 1,4 ], 'south,0'); $allow = $A->_allow('south','1'); is_deeply ($allow, [ 2,4 ], 'south,1'); $allow = $A->_allow('south','2'); is_deeply ($allow, [ 3,4 ], 'south,2'); $allow = $A->_allow('south','3'); is_deeply ($allow, [ 3,4 ], 'south,3'); $allow = $A->_allow('south','-1'); is_deeply ($allow, [ 3,4 ], 'south,-1'); $allow = $A->_allow('south','-2'); is_deeply ($allow, [ 2,4 ], 'south,-2'); $allow = $A->_allow('south','-3'); is_deeply ($allow, [ 1,4 ], 'south,-3'); $allow = $A->_allow('south','-4'); is_deeply ($allow, [ 1,4 ], 'south,-4'); $allow = $A->_allow('north',''); is_deeply ($allow, [ 1,1, 2,1, 3,1 ], 'north'); $allow = $A->_allow('north','0'); is_deeply ($allow, [ 1,1 ], 'north,0'); $allow = $A->_allow('north','2'); is_deeply ($allow, [ 3,1 ], 'north,0'); $allow = $A->_allow('north','-1'); is_deeply ($allow, [ 3,1 ], 'north,0'); $allow = $A->_allow('west',''); is_deeply ($allow, [ 0,2, 0,3 ], 'west'); $allow = $A->_allow('west','0'); is_deeply ($allow, [ 0,2 ], 'west'); $allow = $A->_allow('west','1'); is_deeply ($allow, [ 0,3 ], 'west'); $allow = $A->_allow('east',''); is_deeply ($allow, [ 4,2, 4,3 ], 'east'); $allow = $A->_allow('east','1'); is_deeply ($allow, [ 4,3 ], 'east,1'); $allow = $A->_allow('east','2'); is_deeply ($allow, [ 4,3 ], 'east,2'); $allow = $A->_allow('east','-1'); is_deeply ($allow, [ 4,3 ], 'east,-1'); ############################################################################# # parent() $graph = Graph::Easy->new(); ($A,$B, $edge) = $graph->add_edge('A','B'); is ($A->parent(), $graph, 'parent is graph'); $group = $graph->add_group('Test'); $group->add_node($A); is ($A->parent(), $group, 'parent is group'); ############################################################################# # angle() my @angles = qw/south south front left -90 back -45 45 +45/; my @expect = qw/180 180 90 0 0 270 45 45 135/; is ($A->angle(), 0, 'default is 0 pointing up'); $A->set_attribute('rotate', 'south'); my $i = 0; for my $e (@expect) { my $an = $angles[$i++]; $A->set_attribute('rotate', $an); is ($A->angle(), $e, "expect $e for $an"); } $A->del_attribute('flow', 'south'); is ($A->{_cached_flow}, undef, 'flow uncached by set_attribute'); $A->flow(); # cache again $A->set_attribute('flow', 'south'); is ($A->{_cached_flow}, undef, 'flow uncached by set_attribute'); @angles = qw/south south front left -90 back -45 45 +45/; @expect = qw/180 180 180 90 90 0 135 45 225/; $i = 0; for my $e (@expect) { my $an = $angles[$i++]; $A->set_attribute('rotate', $an); is ($A->angle(), $e, "expect $e for $an"); } ############################################################################# # Deleting a node should work if the node is a child node (fail untill v0.49) $graph = Graph::Easy->new(); $A = $graph->add_node('A'); $B = $graph->add_node('B'); $B->set_attribute('origin','A'); $B->set_attribute('offset','2,2'); $graph->del_node('B'); is ($graph->as_ascii(), "+---+\n| A |\n+---+\n", 'only one node rendered'); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/graphviz.t������������������������������������������������������������������������000444��000764��000764�� 53203�12322253245� 16344� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test as_graphviz() output use Test::More; use strict; BEGIN { plan tests => 157; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; ############################################################################# my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); is ($graph->nodes(), 0, '0 nodes'); is ($graph->edges(), 0, '0 edges'); is (join (',', $graph->edges()), '', '0 edges'); my $grviz = $graph->as_graphviz(); like ($grviz, qr/digraph.*\{/, 'looks like digraph'); unlike ($grviz, qr/#/, 'and has proper comment'); like ($grviz, qr#// Generated#, 'and has proper comment'); ############################################################################# # after first call to as_graphviz, these should now exist: can_ok ("Graph::Easy::Node", qw/ attributes_as_graphviz as_graphviz_txt /); ############################################################################# # with some nodes my $bonn = Graph::Easy::Node->new( name => 'Bonn' ); my $berlin = Graph::Easy::Node->new( 'Berlin' ); my $edge = $graph->add_edge ($bonn, $berlin); $grviz = $graph->as_graphviz(); like ($grviz, qr/Bonn/, 'contains Bonn'); like ($grviz, qr/Berlin/, 'contains Bonn'); like ($grviz, qr/arrowhead=open/, 'contains open arrowheads'); unlike ($grviz, qr/\w+=,/, "doesn't contain empty defintions"); ############################################################################# # with attributes on the graph $graph->set_attribute( 'graph', 'fill' => 'red' ); like ($graph->as_graphviz(), qr/bgcolor="#ff0000"/, 'contains bgcolor="#ff0000"'); ############################################################################# # with label/label-pos attributes on the graph $graph->set_attribute( 'graph', 'label' => 'My Label' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/label="My Label"/, 'graph label'); like ($grviz, qr/labelloc=top/, 'default is top (dot 1.1 seems to get this wrong)'); $graph->set_attribute( 'graph', 'label-pos' => 'top' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/label="My Label"/, 'graph label'); like ($grviz, qr/labelloc=top/, 'default is top'); $graph->set_attribute( 'graph', 'label-pos' => 'bottom' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/label="My Label"/, 'graph label'); like ($grviz, qr/labelloc=bottom/, 'now bottom'); ############################################################################# # with some nodes with atributes $bonn->set_attribute( 'shape' => 'rect' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"]/, 'contains Bonn unquoted'); like ($grviz, qr/[^"]Berlin[^"]/, 'contains Bonn unquoted'); like ($grviz, qr/shape=box/, 'contains shape'); ############################################################################# # remapped attributes, quoted attributes $bonn->set_attributes( { fill => '#808080', title => 'title string', color => 'red', 'border-color' => 'brown', class => 'city', } ); $grviz = $graph->as_graphviz(); like ($grviz, qr/fillcolor="#808080"/, 'contains fillcolor'); like ($grviz, qr/tooltip="title string"/, 'contains tooltip'); like ($grviz, qr/color="#a52a2a"/, 'contains color'); like ($grviz, qr/fontcolor="#ff0000"/, 'contains fontcolor'); unlike ($grviz, qr/(city|class)/, "doesn't contain class"); ############################################################################# # quoting (including " in node names) $bonn->{name} = 'Bonn"'; $grviz = $graph->as_graphviz(); like ($grviz, qr/"Bonn\\""/, 'quoted Bonn"'); $bonn->{name} = 'Bonn und Umgebung'; $grviz = $graph->as_graphviz(); like ($grviz, qr/"Bonn und Umgebung"/, 'quoted "Bonn und Umgebung"'); is (join(",", $graph->_graphviz_remap_edge_style('style', 'bold')), 'style,bold', 'style,bold'); my ($name,$style) = $graph->_graphviz_remap_edge_style('style', 'double'); is ($name, undef, 'style=double suppressed'); is ($style, undef, 'style=double suppressed'); ($name,$style) = $graph->_graphviz_remap_edge_style('style', 'solid'); is ($name, undef, 'style=solid suppressed'); is ($style, undef, 'style=solid suppressed'); $bonn->{name} = '2A'; $grviz = $graph->as_graphviz(); like ($grviz, qr/"2A"/, '"2A" must be quoted'); $bonn->{name} = '123'; $grviz = $graph->as_graphviz(); like ($grviz, qr/ 123 /, '"123" needs no quotes'); # strict should come last in this list: for (qw/0AB graph subgraph edge node Graph Edge Strict strict/) { $bonn->{name} = $_; $grviz = $graph->as_graphviz(); like ($grviz, qr/"$_"/, "'$_' needs quotes"); } $bonn->set_attribute('label', 'Graph::Easy'); $grviz = $graph->as_graphviz(); like ($grviz, qr/label="Graph::Easy"/, 'label with non \w needs quoting'); ############################################################################# # flow directions $graph->set_attribute('graph','flow','south'); $grviz = $graph->as_graphviz(); unlike ($grviz, qr/rankdir/, 'flow south needs no rankdir'); like ($grviz, qr/"strict" -> Berlin/, 'edge direction normal'); $graph->set_attribute('graph','flow','west'); $grviz = $graph->as_graphviz(); like ($grviz, qr/rankdir=LR/, 'flow west has LR and reversed edges'); like ($grviz, qr/Berlin -> "strict"/, 'edge direction reversed'); like ($grviz, qr/dir=back/, 'edge direction reversed'); $graph->set_attribute('graph','flow','up'); $grviz = $graph->as_graphviz(); unlike ($grviz, qr/rankdir/, 'flow west has TB and reversed edges'); like ($grviz, qr/Berlin -> "strict"/, 'edge direction reversed'); like ($grviz, qr/dir=back/, 'edge direction reversed'); ############################################################################# # arrow styles # flow is up, so arrowhead becomes arrowtail: $graph->set_attribute('edge', 'arrow-style', 'closed'); is ($graph->get_attribute('edge', 'arrow-style'), 'closed'); $grviz = $graph->as_graphviz(); like ($grviz, qr/arrowtail=empty/, 'arrow-style closed => empty'); $graph->set_attribute('edge', 'arrow-style', 'filled'); is ($graph->get_attribute('edge', 'arrow-style'), 'filled'); $grviz = $graph->as_graphviz(); like ($grviz, qr/arrowtail=normal/, 'arrow-style filled => normal'); # set flow to down, so arrowtail becomes arrowhead again $graph->set_attribute('graph','flow','down'); $grviz = $graph->as_graphviz(); like ($grviz, qr/arrowhead=normal/, 'arrow-style filled => normal'); $graph->del_attribute('edge','arrow-style'); $edge->set_attribute('arrow-style','filled'); is ($graph->error(),'', 'no error'); $grviz = $graph->as_graphviz(); like ($grviz, qr/arrowhead=normal/, 'arrow-style filled => normal'); $edge->set_attribute('arrow-style','none'); is ($graph->error(),'', 'no error'); $grviz = $graph->as_graphviz(); like ($grviz, qr/arrowhead=none/, 'arrow-style none'); ############################################################################# ############################################################################# # undirected edges my $e = $graph->add_edge('A','B'); $e->undirected(1); $e->bidirectional(0); $grviz = $graph->as_graphviz(); like ($grviz, qr/A -> B.*arrowhead=none/, 'arrowhead on undirected edge'); like ($grviz, qr/A -> B.*arrowtail=none/, 'arrowtail on undirected edge'); ############################################################################# # bidirectional edges $e->undirected(0); $e->bidirectional(1); $grviz = $graph->as_graphviz(); like ($grviz, qr/A -> B.*arrowhead=open/, 'arrowhead on bidirectional edge'); like ($grviz, qr/A -> B.*arrowtail=open/, 'arrowtail on bidirectional edge'); ############################################################################# ############################################################################# # label-color vs. color $e->bidirectional(0); $e->set_attribute('color','red'); $e->set_attribute('label-color','blue'); $e->set_attribute('label','A to B'); $grviz = $graph->as_graphviz(); like ($grviz, qr/A -> B \[ color="#ff0000", fontcolor="#0000ff", label/, 'label-color'); ############################################################################# # missing label-color (fall back to color) $e->del_attribute('label-color'); $grviz = $graph->as_graphviz(); like ($grviz, qr/A -> B \[ color="#ff0000", fontcolor="#ff0000", label/, 'label-color'); $e->del_attribute('label','A to B'); ############################################################################# # no label, no fontcolor nec.: $e->del_attribute('label'); $grviz = $graph->as_graphviz(); like ($grviz, qr/A -> B \[ color="#ff0000" \]/, 'label-color'); ############################################################################# # link vs. autolink and linkbase $graph->set_attribute('node','linkbase','http://bloodgate.com/'); $grviz = $graph->as_graphviz(); unlike ($grviz, qr/bloodgate.com/, 'linkbase alone does nothing'); unlike ($grviz, qr/link/, 'linkbase alone does nothing'); $graph->set_attribute('node','autolink','name'); $grviz = $graph->as_graphviz(); like ($grviz, qr/URL="http:\/\/bloodgate.com/, 'linkbase plus link'); $graph->del_attribute('node','autolink'); $graph->set_attribute('graph','autolink','name'); is ($graph->attribute('graph','autolink'), 'name', 'autolink=name'); $grviz = $graph->as_graphviz(); like ($grviz, qr/URL="http:\/\/bloodgate.com/, 'linkbase plus link'); ############################################################################# # link vs. autolink and linkbase $bonn->set_attribute('point-style', 'star'); is ($graph->error(),'', 'no error'); $grviz = $graph->as_graphviz(); unlike ($grviz, qr/point-style/, 'point-style is filtered out'); ############################################################################# # node shape "none" $bonn->{name} = 'Bonn'; $bonn->set_attribute( 'shape' => 'none' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"]/, 'contains Bonn unquoted'); like ($grviz, qr/Bonn.*shape=plaintext/, 'contains shape=plaintext'); # some different node shapes for my $s (qw/ invhouse invtrapezium invtriangle triangle octagon hexagon pentagon house septagon trapezium /) { $bonn->set_attribute( 'shape' => $s ); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"]/, 'contains Bonn unquoted'); like ($grviz, qr/Bonn.*shape=$s/, "contains shape=$s"); } ############################################################################# # font-size support $bonn->set_attribute( 'font-size' => '2em' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"]/, 'contains Bonn unquoted'); like ($grviz, qr/Bonn.*fontsize=22/, '11px eq 1em'); ############################################################################# # bold-dash, broad and wide edges $bonn->set_attribute( 'border-style' => 'broad' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"]/, 'contains Bonn unquoted'); like ($grviz, qr/Bonn.*style="filled,setlinewidth\(5\)"/, '5 pixel for broad border'); ############################################################################# # quoting of special characters $bonn->set_attribute( 'label' => '$a = 2;' ); $grviz = $graph->as_graphviz(); like ($graph->as_graphviz(), qr/Bonn.*label="\$a = 2;"/, 'contains label unquoted'); $bonn->set_attribute( 'label' => '2"' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/Bonn.*label="2\\""/, 'contains label 2"'); ############################################################################# # groups as clusters $graph = Graph::Easy->new(); ($bonn, $berlin, $edge) = $graph->add_edge ('Bonn', 'Berlin'); my $group = $graph->add_group ('Test:'); $group->add_node($bonn); $group->add_node($berlin); $grviz = $graph->as_graphviz(); like ($grviz, qr/subgraph "cluster\d+"\s+\{/, 'contains cluster'); ############################################################################# # nodes w/o links and attributes in a group $graph = Graph::Easy->new(); $bonn = $graph->add_node ('Bonn'); $berlin = $graph->add_node ('Berlin'); $group = $graph->add_group ('Test:'); $group->add_node($bonn); $group->add_node($berlin); $grviz = $graph->as_graphviz(); like ($grviz, qr/Bonn(.|\n)*Berlin(.|\n)*\}(.|\n)*\}/, 'contains nodes inside group'); ############################################################################# # node with border-style: none: $graph = Graph::Easy->new(); $bonn = $graph->add_node ('Bonn'); $bonn->set_attribute('border-style', 'none'); $grviz = $graph->as_graphviz(); like ($grviz, qr/Bonn.*color="#ffffff".*style=filled/, 'contains color white, style filled'); ############################################################################# # node with shape: rounded; $bonn->del_attribute('border-style'); $bonn->set_attribute( 'shape' => 'rounded' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"]/, 'contains Bonn unquoted'); like ($grviz, qr/Bonn.*style="rounded,filled"/, 'contains rounded,filled'); ############################################################################# # invisible nodes and node with shape: point; $bonn->del_attribute('border-style'); $bonn->set_attribute( 'shape' => 'invisible' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"]/, 'contains Bonn unquoted'); like ($grviz, qr/Bonn.*shape=plaintext/, 'contains shape plaintext'); like ($grviz, qr/Bonn.*label=" "/, 'contains label=" "'); $bonn->del_attribute('border-style'); $bonn->set_attribute( 'shape' => 'point' ); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"]/, 'contains Bonn unquoted'); like ($grviz, qr/Bonn.*shape=plaintext/, 'contains shape plaintext'); like ($grviz, qr/Bonn.*label="*"/, 'contains label="*"'); ############################################################################# # edge styles double and double-dash $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $edge->set_attribute('style','double'); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"].*color="#000000:#000000/, 'contains Bonn and black:black'); unlike ($grviz, qr/style="?solid/, "doesn't contain solid"); $edge->set_attribute('style','double-dash'); $grviz = $graph->as_graphviz(); like ($grviz, qr/[^"]Bonn[^"].*color="#000000:#000000/, 'contains Bonn and black:black'); unlike ($grviz, qr/style="?solid/, "doesn't contain solid"); like ($grviz, qr/style="?dashed/, 'contains solid'); ############################################################################# # root node (also testing that a root of '0' actually works) $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('0','1'); $graph->set_attribute('root','0'); $grviz = $graph->as_graphviz(); like ($grviz, qr/root=0/, 'contains root=0'); like ($grviz, qr/0.*rank=0/, 'contains rank=0'); $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('a','b'); $graph->set_attribute('root','b'); $grviz = $graph->as_graphviz(); like ($grviz, qr/root=b/, 'contains root=0'); like ($grviz, qr/b.*rank=0/, 'contains rank=0'); ############################################################################# # headport/tailport $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $edge->set_attribute('start','west'); $edge->set_attribute('end','east'); $grviz = $graph->as_graphviz(); like ($grviz, qr/tailport=w/, 'contains tailport=w'); like ($grviz, qr/headport=e/, 'contains headport=e'); # headport/tailport with relative flow $edge->set_attribute('start','right'); $edge->set_attribute('end','left'); $grviz = $graph->as_graphviz(); like ($grviz, qr/tailport=s/, 'contains tailport=s'); like ($grviz, qr/headport=n/, 'contains headport=n'); ############################################################################# # colorscheme support $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $graph->add_group('Cities'); $graph->set_attribute('node','colorscheme','pastel19'); $graph->set_attribute('color','red'); $edge->set_attribute('color','1'); $berlin->set_attribute('color','1'); $berlin->set_attribute('colorscheme','set23'); $bonn->set_attribute('color','1'); $grviz = $graph->as_graphviz(); like ($grviz, qr/graph(.|\n)*color="#ff0000"/, 'contains graph color=#ff0000'); like ($grviz, qr/Bonn.*color="#fbb4ae"/, 'contains Bonn color=#fbb4ae'); like ($grviz, qr/Berlin.*color="#66c2a5"/, 'contains Berlin color=#66c2a5'); like ($grviz, qr/->.*Berlin.*color="#a6cee3"/, 'contains edge with default color 1 from set312'); ############################################################################# # test inheritance of colorscheme for edges, groups and anon things: $graph->set_attribute('colorscheme','pastel19'); $grviz = $graph->as_graphviz(); like ($grviz, qr/->.*Berlin.*color="#fbb4ae"/, 'contains edge with color 1 from pastel19'); ############################################################################# # autolabel is skipped $graph->set_attribute('node','autolabel','15'); $grviz = $graph->as_graphviz(); unlike ($grviz, qr/autolabel/, "doesn't contain autolabel"); ############################################################################# # test that the attributes group, rows and columns are skipped $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $group = $graph->add_group('Cities'); $group->add_nodes($bonn, $berlin); $bonn->set_attribute('size','2,2'); $graph->layout(); $grviz = $graph->as_graphviz(); unlike ($grviz, qr/rows=/, 'does not contain rows='); unlike ($grviz, qr/columns=/, 'does not contain columns='); unlike ($grviz, qr/group=/, 'does not contain group='); ############################################################################# # test output of fillcolor and color of groups $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $group = $graph->add_group('Cities'); $group->add_nodes($bonn, $berlin); $group->set_attribute('fill','red'); $group->set_attribute('color','blue'); $graph->layout(); $grviz = $graph->as_graphviz(); like ($grviz, qr/fillcolor="#ff0000"/, 'fillcolor=red'); like ($grviz, qr/fontcolor="#0000ff"/, 'fontcolor=blue'); ############################################################################# # test group class attributes $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $group = $graph->add_group('Cities'); $group->add_nodes($bonn, $berlin); $graph->set_attribute('group','fill','red'); $graph->layout(); $grviz = $graph->as_graphviz(); like ($grviz, qr/cluster(.|\n)*fillcolor="#ff0000"/, 'fillcolor=blue'); ############################################################################# # node->as_graphviz() $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $group = $graph->add_group('Cities'); $group->add_nodes($bonn, $berlin); $grviz = $graph->as_graphviz(); unlike ($grviz, qr/Berlin.*label=.*Berlin/, "label isn't output needlessly"); ############################################################################# # HSV colors and alpha channel should be preserved in output $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $group = $graph->add_group('Cities'); $group->add_nodes($bonn, $berlin); # as hex (not preserved) due to alpha channel $bonn->set_attribute('color', 'hsv(0, 1.0, 0.5, 0.5)'); $berlin->set_attribute('color', '#ff000080'); # preserved $graph->set_attribute('color', 'hsv(0, 0.6, 0.7)'); $grviz = $graph->as_graphviz(); like ($grviz, qr/fontcolor="0 0.6 0.7"/, "graph color was preserved"); like ($grviz, qr/Berlin.*fontcolor="#ff000080"/, "Berlin's color got converted"); like ($grviz, qr/Bonn.*fontcolor="#8000007f"/, "Bonn's color got converted"); ############################################################################# # edge label $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $edge->set_attribute('label','car'); $grviz = $graph->as_graphviz(); like ($grviz, qr/label=car/, "edge label appears in output"); ############################################################################# # fill as class attribute $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $bonn->set_attribute('class','red'); $graph->set_attribute('node.red', 'fill', 'red'); $grviz = $graph->as_graphviz(); like ($grviz, qr/fillcolor="#ff0000"/, "contains fill red"); ############################################################################# # \c in labels $graph = Graph::Easy->new(); $graph->set_attribute('label', 'foo\cbar'); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $bonn->set_attribute('label', 'bar\cbar'); $grviz = $graph->as_graphviz(); unlike ($grviz, qr/\\c/, "no \\c in output"); ############################################################################# # borderwidth == 0 overrides style $graph = Graph::Easy->new(); ($bonn,$berlin,$edge) = $graph->add_edge ('Bonn','Berlin'); $bonn->set_attribute('borderstyle','dashed'); $bonn->set_attribute('borderwidth','0'); $berlin->set_attribute('borderstyle','double'); $berlin->set_attribute('borderwidth','0'); $grviz = $graph->as_graphviz(); print $grviz; unlike ($grviz, qr/style=.*dashed/, "no dashed in output"); unlike ($grviz, qr/peripheries/, "no peripheries in output"); ############################################################################# # subgraph #$graph = Graph::Easy->new(); my $g = Graph::Easy->new; my $a_ = $g->add_group('A'); my $b_ = $g->add_group('B'); my $c = $g->add_group('C'); my $d = $g->add_group('D'); my $n1 = $g->add_node('one'); my $n2 = $g->add_node('two'); my $n3 = $g->add_node('three'); my $n4 = $g->add_node('four'); $a_->add_member($n1); $b_->add_member($c); $b_->add_member($n2); $a_->add_member($b_); $c->add_member($n3); $d->add_member($n4); $grviz = $g->as_graphviz(); is($a_->{_order},1,'subgraph A is level 1'); is($d->{_order},1,'subgraph D is level 1'); is($b_->{_order},2,'subgraph B is level 2'); is($c->{_order},3,'subgraph C is level 3'); like($grviz,qr/subgraph "cluster\d+" {\n label="A";\n subgraph "cluster\d+" {/,'subgraph indent'); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/node_mc.t�������������������������������������������������������������������������000444��000764��000764�� 5414�12322253245� 16077� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test nodes with more than one cell use Test::More; use strict; BEGIN { plan tests => 30; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Node") or die($@); use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy::Node", qw/ new /); ############################################################################# my $node = Graph::Easy::Node->new(); is (ref($node), 'Graph::Easy::Node'); is ($node->error(), '', 'no error yet'); is ($node->connections(), 0, 'no connections yet'); my $other = Graph::Easy::Node->new(); ############################################################################# # connections() tests my $graph = Graph::Easy->new( ); $other = Graph::Easy::Node->new( 'Name' ); $graph->add_edge ($node, $other); is ($node->connections(), 1, 'one connection'); ############################################################################# # grow tests for (1..4) { my $o = Graph::Easy::Node->new( "Name $_" ); $graph->add_edge ($node, $o); } is ($node->connections(), 5, '5 connections'); $node->_grow(); is ($node->connections(), 5, '5 connections'); is ($node->columns(), 1, '1 column'); is ($node->rows(), 3, '3 rows'); is ($node->is_multicelled(), 1, 'is multicelled'); ############################################################################# # edges_to() tests # this will delete the old Graph::Easy object in graph, and clean out # the refs in the nodes/edges. Thus $node will have {edges} == undef. $graph = Graph::Easy->new(); is ($node->{edges}, undef, 'cleanup worked'); $other = Graph::Easy::Node->new( "other" ); my @E; for (1..5) { push @E, scalar $graph->add_edge ($node, $other); } @E = sort { $a->{id} <=> $b->{id} } @E; is ($node->connections(), 5, '5 connections'); is (scalar $node->edges_to($other), 5, '5 edges from node to other'); my @E2 = $node->edges_to($other); @E2 = sort { $a->{id} <=> $b->{id} } @E2; for (1..5) { is ($E[$_], $E2[$_], 'edges_to() worked'); } my @suc = $node->successors(); is (scalar @suc, 1, 'one successor'); is ($suc[0], $other, 'one successor'); #use Data::Dumper; print Dumper(\@suc); ############################################################################# # node placement (multi-cell) my $cells = { }; my $parent = { cells => $cells }; is ($node->_do_place(1,1,$parent), 1, 'node can be placed'); is (scalar keys %$cells, 3, '3 entries (3 rows)'); is ($cells->{"1,1"}, $node, 'node was really placed'); my $filler = $cells->{"1,2"}; is (ref($filler), 'Graph::Easy::Node::Cell', 'filler cell'); is ($filler->node(), $node, 'filler associated with node'); is ($node->_do_place(1,1,$parent), 0, 'node cannot be placed again'); is ($cells->{"1,1"}, $node, 'node still there placed'); is (scalar keys %$cells, 3, 'still three entries'); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/re_layout.t�����������������������������������������������������������������������000444��000764��000764�� 4524�12322253245� 16477� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test layouts after setting attributes use Test::More; use strict; BEGIN { plan tests => 12; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ('Graph::Easy', qw/ new /); ############################################################################# # setup a graph my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); my ($bonn,$berlin,$edge) = $graph->add_edge('Bonn','Berlin'); ############################################################################# # lay out as ascii my $ascii = $graph->as_ascii(); is ($ascii, <<EOF +------+ +--------+ | Bonn | --> | Berlin | +------+ +--------+ EOF , 'as_ascii'); ############################################################################# # change label of Bonn to be longer $bonn->set_attribute('label', 'Frankfurt a. Main'); $ascii = $graph->as_ascii(); is ($ascii, <<EOF +-------------------+ +--------+ | Frankfurt a. Main | --> | Berlin | +-------------------+ +--------+ EOF , 'as_ascii'); $bonn->set_attribute('label', 'Frankfurt\n(a. Main)'); $ascii = $graph->as_ascii(); is ($ascii, <<EOF +-----------+ +--------+ | Frankfurt | | Berlin | | (a. Main) | --> | | +-----------+ +--------+ EOF , 'as_ascii'); # Change label of Bonn to be shorter (and one line high, this also tests # resetting the height of Berlin even though we did not change an attribute # on Berlin itself: $bonn->set_attribute('label', 'Frankfurt'); $ascii = $graph->as_ascii(); is ($ascii, <<EOF +-----------+ +--------+ | Frankfurt | --> | Berlin | +-----------+ +--------+ EOF , 'as_ascii'); is ($bonn->{w}, 13, 'w is 13'); is ($bonn->{h}, 3, 'h is 2'); ############################################################################# # change edge label $edge->set_attribute('label', 'Test'); $ascii = $graph->as_ascii(); is ($ascii, <<EOF +-----------+ Test +--------+ | Frankfurt | ------> | Berlin | +-----------+ +--------+ EOF , 'as_ascii'); $edge->set_attribute('label', 'Testtest'); $ascii = $graph->as_ascii(); is ($ascii, <<EOF +-----------+ Testtest +--------+ | Frankfurt | ----------> | Berlin | +-----------+ +--------+ EOF , 'as_ascii'); ############################################################################# ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/copy.t����������������������������������������������������������������������������000444��000764��000764�� 7156�12322253245� 15452� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test the copy() method use Test::More; use strict; BEGIN { plan tests => 55; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ('Graph::Easy', qw/ new copy /); ############################################################################# my $graph = Graph::Easy->new(); check_graph($graph); my $copy = $graph->copy(); check_graph($copy); my $bonn = Graph::Easy::Node->new( name => 'Bonn' ); my $berlin = Graph::Easy::Node->new( 'Berlin' ); my $edge = $graph->add_edge ($bonn, $berlin); my $group = $graph->add_group ('Cities'); is (ref($edge), 'Graph::Easy::Edge', 'add_edge() returns the new edge'); $bonn->set_attribute('color','red'); $edge->set_attribute('fill','blue'); $graph->set_attribute('graph','fill','purple'); check_members($graph); $copy = $graph->copy(); check_members($copy); ############################################################################# # settings on the graph object itself $graph->fatal_errors(); $graph->catch_warnings(1); $graph->catch_errors(1); check_settings($graph); $copy = $graph->copy(); check_settings($copy); ############################################################################# # groups with nodes $graph = Graph::Easy->new('( Cities [ Bonn ] -> [ Berlin ] )' ); $copy = $graph->copy(); $group = $graph->group('Cities'); is (scalar $group->nodes(), 2, '2 nodesi in original group'); $group = $copy->group('Cities'); is (scalar $group->nodes(), 2, '2 nodes in copied group'); ############################################################################# ############################################################################# sub check_settings { my $graph = shift; is ($graph->{_catch_warnings}, 1, 'catch warnings'); is ($graph->{_catch_errors}, 1, 'catch errors'); is ($graph->{fatal_errors}, 1, 'fatal errors'); } sub check_members { my $graph = shift; # use Data::Dumper; print Dumper($graph); is ($graph->nodes(), 2, '2 nodes added'); is ($graph->edges(), 1, '1 edge'); is ($graph->as_txt(), <<EOF graph { fill: purple; } [ Bonn ] { color: red; } ( Cities ) [ Bonn ] --> { fill: blue; } [ Berlin ] EOF , 'as_txt for 2 nodes'); is (ref($graph->edge($bonn,$berlin)), 'Graph::Easy::Edge', 'edge from objects'); is ($graph->edge($berlin,$bonn), undef, 'berlin not connecting to bonn'); is (ref($graph->edge('Bonn', 'Berlin')), 'Graph::Easy::Edge', 'edge from names'); my @E = $graph->edges(); my $en = ''; for my $e (@E) { $en .= $e->style() . '.'; } is ($en, 'solid.', 'edges() in list context'); is( $graph->node('Bonn')->attribute('color'),'red', 'Bonn is red'); is( $graph->edge('Bonn','Berlin')->attribute('fill'),'blue', 'Bonn->Berlin is blue'); is( $graph->get_attribute('fill'), 'purple', 'graph is purple'); } ############################################################################# sub check_graph { my $graph = shift; # use Data::Dumper; print Dumper($graph); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); is ($graph->output_format(), 'html', 'default output format is html'); is ($graph->timeout(), 5, '5 seconds'); is ($graph->strict(), 1, 'is strict'); is ($graph->nodes(), 0, '0 nodes'); is ($graph->edges(), 0, '0 edges'); is ($graph->border_attribute('graph'), 'none', 'graph border is none'); is ($graph->border_attribute('group'), 'dashed', 'group border is dashed 1px black'); is ($graph->border_attribute('node'), 'solid', 'node border is solid 1px black'); is (join (',', $graph->edges()), '', '0 edges'); like ($graph->output(), qr/table/, 'default output worked'); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/easypm.t��������������������������������������������������������������������������000444��000764��000764�� 27503�12322253245� 16014� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 138; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy", qw/ new css as_html as_html_page as_txt as_vcg as_boxart as_gdl as_ascii as_ascii_html as_graphviz as_svg as_ascii_file as_html_file as_svg_file as_vcg_file as_boxart_file as_gdl_file as_graphml as_graphml_file as_debug html_page_header html_page_footer error edge node nodes edges edges_within anon_nodes svg_information add_edge add_node add_anon_node merge_nodes del_node del_edge flip_edges rename_node rename_group set_attributes set_attribute get_attribute get_attributes get_color_attribute default_attribute raw_attribute color_attribute attribute del_attribute score id group groups add_group del_group is_simple_graph is_simple is_directed is_undirected text_style text_styles text_styles_as_css animation_as_graph /); ############################################################################# # adding edges/nodes my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); is ($graph->is_simple_graph(), 1, 'simple graph (0 nodes)'); is ($graph->is_simple(), 1, 'simple graph (0 nodes)'); is ($graph->is_directed(), 1, 'directed graph'); my $node = Graph::Easy::Node->new( name => 'Bonn' ); my $node2 = Graph::Easy::Node->new( name => 'Berlin' ); is (scalar $graph->nodes(), 0, 'no nodes'); is (scalar $graph->anon_nodes(), 0, 'no anon nodes'); is (scalar $graph->edges(), 0, 'no edges'); $graph->add_edge( $node, $node2 ); is (scalar $graph->nodes(), 2, '2 nodes'); is (scalar $graph->edges(), 1, '1 edges'); is ($graph->is_simple_graph(), 1, 'simple graph (2 nodes, 1 edge)'); my $node3 = Graph::Easy::Node->new( name => 'Frankfurt'); $graph->add_edge( $node2, $node3 ); is (scalar $graph->nodes(), 3, '3 nodes'); is (scalar $graph->edges(), 2, '2 edges'); is ($graph->is_simple_graph(), 1, 'still simple graph'); my $node4 = Graph::Easy::Node->new( name => 'Dresden' ); $graph->add_edge( $node3, $node4 ); is (scalar $graph->nodes(), 4, '4 nodes'); is (scalar $graph->edges(), 3, '3 edges'); is ($graph->is_simple_graph(), 1, 'still simple graph'); my $node5 = Graph::Easy::Node->new( name => 'Potsdam' ); $graph->add_edge( $node2, $node5 ); is (scalar $graph->nodes(), 5, '5 nodes'); is (scalar $graph->edges(), 4, '4 edges'); is ($graph->is_simple_graph(), 1, 'still simple graph'); my $node6 = Graph::Easy::Node->new( name => 'Cottbus' ); $graph->add_edge( $node5, $node6 ); is (scalar $graph->nodes(), 6, '6 nodes'); is (scalar $graph->edges(), 5, '5 edges'); is ($graph->is_simple_graph(), 1, 'still simple graph'); ############################################################################# # attribute tests is ($graph->attribute('background'), 'inherit', 'graph background = undef'); is ($graph->attribute('node', 'background'), 'inherit', 'node background = undef'); is ($graph->attribute('node', 'fill'), 'white', 'node { fill: white }'); is ($graph->attribute('graph', 'border'), 'none', 'graph { border: none; }'); $graph->set_attributes ('graph', { color => 'white', background => 'red' }); is ($graph->attribute('graph', 'background'), 'red', 'now: graph { background: red }'); is ($graph->attribute('graph', 'color'), 'white', 'now: graph { color: white }'); good_css ($graph); ############################################################################# # ID tests is ($graph->id(), '', 'id is empty string'); is ($graph->id('42'), '42', 'id is now 42'); good_css($graph); ############################################################################# # ID tests with sub-classes $graph->set_attributes ('node.cities', { color => '#0000ff' } ); good_css($graph, 'table.graph42 .node_cities', 'table.graph42 .node,table.graph42 .node_anon,table.graph42 .node_cities' ); ############################################################################# # group tests is ($graph->groups(), 0, 'no groups yet'); is ($graph->group('foo'), undef, 'no groups yet'); is ($graph->groups(), 0, 'no groups yet'); my $group = Graph::Easy::Group->new( { name => 'Cities' } ); $graph->add_group($group); is ($graph->group('Cities'), $group, "group 'cities'"); is ($graph->groups(), 1, 'one group'); is ($graph->group('cities'), undef, 'no group'); is ($graph->groups(), 1, 'one group'); is ($graph->as_txt(), <<HERE graph { background: red; color: white; } node.cities { color: #0000ff; } ( Cities ) [ Bonn ] --> [ Berlin ] [ Berlin ] --> [ Frankfurt ] [ Berlin ] --> [ Potsdam ] [ Frankfurt ] --> [ Dresden ] [ Potsdam ] --> [ Cottbus ] HERE , 'with empty group Cities'); $node->add_to_group($group); is ($graph->as_txt(), <<HERE graph { background: red; color: white; } node.cities { color: #0000ff; } ( Cities [ Bonn ] ) [ Bonn ] --> [ Berlin ] [ Berlin ] --> [ Frankfurt ] [ Berlin ] --> [ Potsdam ] [ Frankfurt ] --> [ Dresden ] [ Potsdam ] --> [ Cottbus ] HERE , 'with empty group Cities'); ############################################################################# # title/link/autolink/autotitle/linkbase not in CSS $graph->set_attributes ('node', { link => 123, title => 123, autolink => 'name', autotitle => 'name' } ); $graph->set_attributes ('graph', { linkbase => '123/' } ); good_css ($graph); # check that add_node( 'name' ) works $graph = Graph::Easy->new(); my $bonn = $graph->add_node( 'Bonn' ); is (scalar $graph->nodes(), 1, 'one node'); is ($graph->node('Bonn'), $bonn, 'add_node returned $bonn'); # already in graph, try to add as "name" my $bonn2 = $graph->add_node( 'Bonn' ); is (scalar $graph->nodes(), 1, 'one node'); is ($bonn2, $graph->node('Bonn'), 'add_node returned $bonn'); is ($bonn, $bonn2, 'same node'); # already in graph, try to add as node object my $bonn3 = $graph->add_node( $bonn ); is (scalar $graph->nodes(), 1, 'one node'); is ($bonn3, $graph->node('Bonn'), 'add_node returned $bonn'); is ($bonn, $bonn3, 'same node'); my $bonn5 = Graph::Easy::Node->new('Bonn'); my $bonn4 = $graph->add_node( $bonn5); #make sure that $bonn is not replaced by $bonn5 in graph! is (scalar $graph->nodes(), 1, 'one node'); is ($bonn4, $graph->node('Bonn'), 'add_node returned $bonn'); is ($bonn, $bonn4, 'same node'); ############################################################################# # adding an edge with two plain scalars as names $graph = Graph::Easy->new(); my ($T1,$T2,$edge) = $graph->add_edge( 'Test', 'Test2' ); is (scalar $graph->nodes(), 2, '2 nodes'); is (scalar $graph->edges(), 1, '1 edge'); is ($graph->edge('Test', 'Test2'), $edge, 'edge("A","B") works'); is ($graph->edge($T1,$T2), $edge, 'edge($A,$B) works'); # adding a multi-edge $graph->add_edge( 'Test', 'Test2' ); is (scalar $graph->nodes(), 2, '2 nodes'); is (scalar $graph->edges(), 2, '2 edges'); # this assumes "Test" is created before "Test2" my @N = sort { $a->{id} <=> $b->{id} } $graph->nodes(); my @E = $N[0]->edges_to($N[1]); is (@E, 2, '2 edges from Test to Test2'); # this should work now: my $ascii = $graph->as_ascii(); like ($ascii, qr/Test/, 'Test found in output'); like ($ascii, qr/Test2/, 'Test found in output'); # test that add_edge('Test','Test') does not create two nodes $graph = Graph::Easy->new(); my ($a,$b,$e) = $graph->add_edge( 'Test', 'Test' ); is ($a->{id}, $b->{id}, "one node for ('test','test')"); is ($a, $b, "one object for ('test','test')"); ############################################################################# # is_ascii_html() $ascii = $graph->as_ascii_html(); like ($ascii, qr/<pre>(.|\n)*<\/pre>/, 'as_ascii_html'); ############################################################################# # is_simple_graph() $graph = Graph::Easy->new(); $edge = $graph->add_edge( 'Test', 'Test2' ); is ($graph->is_simple_graph(), 1, 'still simple graph'); $edge = $graph->add_edge( 'Test', 'Test2' ); is ($graph->is_simple_graph(), 0, 'not simple graph'); $edge = $graph->add_edge( 'Test', 'Test2' ); is ($graph->is_simple_graph(), 0, 'not simple graph'); $graph = Graph::Easy->new(); $edge = $graph->add_edge( 'Test', 'Test' ); is ($graph->is_simple_graph(), 1, 'still simple graph'); $edge = $graph->add_edge( 'Test', 'Test2' ); is ($graph->is_simple_graph(), 1, 'still simple graph'); $edge = $graph->add_edge( 'Test', 'Test' ); is ($graph->edges(), 3, '3 edges'); is ($graph->nodes(), 2, '2 nodes'); is ($graph->is_simple_graph(), 0, 'not simple graph'); ############################################################################# # adding nodes with name '0' and '' $graph = Graph::Easy->new(); $node = Graph::Easy::Node->new( { name => '0' } ); $node = $graph->add_node($node); is ($graph->nodes(), '1', 'one node'); is ($graph->{nodes}->{0}, $node, 'got inserted with name 0'); is ($graph->node('0'), $node, 'found node 0 again'); ############################################################################# # renaming nodes ############################################################################# # node is not a reference $graph = Graph::Easy->new(); $node = $graph->rename_node('abc','bcd'); is ($graph->nodes(), '1', 'one node'); is ($graph->{nodes}->{bcd}, $node, 'got inserted with name bcd'); ############################################################################# # node is not yet part of any graph $graph = Graph::Easy->new(); $node = Graph::Easy::Node->new( { name => 'abc' } ); my $new_node = $graph->rename_node($node,'bcd'); is ($graph->nodes(), '1', 'one node'); is ($new_node->{name}, 'bcd', 'got renamed'); is ($graph->{nodes}->{bcd}, $node, 'got inserted with name bcd'); is ($node->{graph}, $graph, 'node is part of this graph'); is ($new_node, $node, 'returned node'); ############################################################################# # node is not part of another graph $graph = Graph::Easy->new(); my $g2 = Graph::Easy->new(); $node = $g2->add_node( 'abc' ); $new_node = $graph->rename_node($node,'bcd'); is ($graph->nodes(), '1', 'one node'); is ($g2->nodes(), '0', 'other graph has now zero'); is ($graph->{nodes}->{bcd}, $node, 'got inserted with name bcd'); is ($node->{graph}, $graph, 'node is part of this graph'); is ($new_node, $node, 'returned node'); ############################################################################# # directed/undirected $graph = Graph::Easy->new(); is ($graph->is_directed(), 1, 'directed graph'); is ($graph->is_undirected(), 0, 'directed graph'); $graph->set_attribute('type','directed'); is ($graph->is_directed(), 1, 'directed graph'); is ($graph->is_undirected(), 0, 'directed graph'); $graph->set_attribute('type','undirected'); is ($graph->is_directed(), 0, 'undirected graph'); is ($graph->is_undirected(), 1, 'undirected graph'); my $ge = Graph::Easy->new( undirected => 1 ); is (ref($ge), 'Graph::Easy'); is ($ge->attribute('type'), 'undirected', 'is undirected'); is ($ge->is_undirected(), 1, 'is undirected'); ############################################################################# # merging nodes $graph = Graph::Easy->new('[A]->[B]->[C]->[D]'); $graph->merge_nodes( 'A', 'B' ); is ($graph->as_txt(), "[ A ] --> [ C ]\n[ C ] --> [ D ]\n", 'merge worked'); $graph->merge_nodes( 'A', 'C', ' ' ); is ($graph->as_txt(), "[ A ] { label: A C; }\n\n[ A ] --> [ D ]\n", 'merge worked'); $graph->merge_nodes( 'A', 'D', ' \n ' ); is ($graph->as_txt(), "[ A ] { label: A C \\n D; }\n\n", 'merge worked'); 1; # all tests done ############################################################################# sub good_css { my $graph = shift; my $css = $graph->css(); foreach my $class (qw/edge node/, ) { like ($css, qr/table\.graph\d* \.$class/, "$class in css"); } like ($css, qr/graph\d* \{/, "graph in css"); foreach my $add (@_) { like ($css, qr/$add/, "$add in css"); } foreach my $attr (qw/link label title linkbase autotitle autolabel/) { unlike ($css, qr/$attr/, "$attr not in css"); } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/split.t���������������������������������������������������������������������������000444��000764��000764�� 6061�12322253245� 15625� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # parser.t does general parser tests, this one deals only with "[A|B|C]" style # nodes and tests that this feature does work correctly. use Test::More; use strict; BEGIN { plan tests => 20; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Parser") or die($@); }; can_ok ("Graph::Easy::Parser", qw/ new from_text from_file reset error _parse_attributes /); ############################################################################# # parser object my $parser = Graph::Easy::Parser->new(); is (ref($parser), 'Graph::Easy::Parser'); is ($parser->error(), '', 'no error yet'); ############################################################################# # split a node and check all relevant fields my $graph = $parser->from_text("[A|B|C]"); is (scalar $graph->nodes(), 3, '3 nodes'); my $A = $graph->node('ABC.0'); is (ref($A), 'Graph::Easy::Node', 'node is node'); is ($A->origin(), undef, 'A is the origin itself'); my $B = $graph->node('ABC.1'); is (ref($B), 'Graph::Easy::Node', 'node is node'); is ($B->origin(), $A, 'A is the origin of B'); is (join(",", $B->offset()), "1,0", 'B is at +1,0'); my $C = $graph->node('ABC.2'); is (ref($C), 'Graph::Easy::Node', 'node is node'); is ($C->origin(), $B, 'B is the origin of C'); is (join(",", $C->offset()), "1,0", 'C is at +1,0 from B'); ############################################################################# # general split tests my $line = 0; foreach (<DATA>) { chomp; next if $_ =~ /^\s*\z/; # skip empty lines next if $_ =~ /^#/; # skip comments die ("Illegal line $line in testdata") unless $_ =~ /^(.*)\|([^\|]*)$/; my ($in,$result) = ($1,$2); my $txt = $in; $txt =~ s/\\n/\n/g; # insert real newlines Graph::Easy::Node->_reset_id(); # to get "#0" for each test my $graph = $parser->from_text($txt); # reuse parser object if (!defined $graph) { fail($parser->error()); next; } my $got = scalar $graph->nodes(); my @edges = $graph->edges(); my $es = 0; foreach my $e (sort { $a->label() cmp $b->label() } @edges) { $es ++ if $e->label() ne ''; } $got .= '+' . $es if $es > 0; for my $n ( sort { $a->{name} cmp $b->{name} } ($graph->nodes(), $graph->edges()) ) { # normalize color output my $b = Graph::Easy->color_as_hex($n->attribute('fill')); my $dx = $n->{dx}||0; my $dy = $n->{dy}||0; $got .= ";" . $n->name() . "," . $n->label() . "=$dx.$dy." . $b; } is ($got, $result, $in); } __DATA__ # split tests with attributes [A|B|C]|3;ABC.0,A=0.0.#ffffff;ABC.1,B=1.0.#ffffff;ABC.2,C=1.0.#ffffff [A|B|C] { fill: red; }|3;ABC.0,A=0.0.#ff0000;ABC.1,B=1.0.#ff0000;ABC.2,C=1.0.#ff0000 [A|B|C] { label: foo; fill: red; }|3;ABC.0,foo=0.0.#ff0000;ABC.1,foo=1.0.#ff0000;ABC.2,foo=1.0.#ff0000 [A| |C]|3;AC.0,A=0.0.#ffffff;AC.1, =1.0.#ffffff;AC.2,C=1.0.#ffffff [A||B|C]|3;ABC.0,A=0.0.#ffffff;ABC.1,B=0.1.#ffffff;ABC.2,C=1.0.#ffffff [A||B||C]|3;ABC.0,A=0.0.#ffffff;ABC.1,B=0.1.#ffffff;ABC.2,C=0.1.#ffffff [A|| |C]|3;AC.0,A=0.0.#ffffff;AC.1, =0.1.#ffffff;AC.2,C=1.0.#ffffff �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/boxart.t��������������������������������������������������������������������������000444��000764��000764�� 4540�12322253245� 15771� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 15; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::As_ascii") or die($@); }; can_ok ("Graph::Easy", qw/ as_boxart as_boxart_html as_boxart_html_file as_boxart_file /); ############################################################################# binmode STDERR, ':utf8'; # some of our strings are written in utf8 use utf8; my $graph = Graph::Easy->new(); my ($bonn, $berlin, $edge) = $graph->add_edge ('Bonn', 'Berlin'); my $boxart = $graph->as_boxart(); like ($boxart, qr/Bonn/, 'contains Bonn'); like ($boxart, qr/Berlin/, 'contains Berlin'); unlike ($boxart, qr/-/, "doesn't contain '-'"); ############################################################################# # border tests $berlin->set_attribute('border-style', 'dotted'); ############################################################################# # arrow tests my $open = '──>'; my $closed = '──▷'; my $filled = '──▶'; $boxart = $graph->as_boxart(); like ($boxart, qr/$open/, 'contains edge with open arrow'); $edge->set_attribute('arrow-style', 'open'); $boxart = $graph->as_boxart(); like ($boxart, qr/$open/, 'contains edge with open arrow'); $edge->set_attribute('arrow-style', 'closed'); $boxart = $graph->as_boxart(); like ($boxart, qr/$closed/, 'contains edge with closed arrow'); $edge->set_attribute('arrow-style', 'filled'); $boxart = $graph->as_boxart(); like ($boxart, qr/$filled/, 'contains edge with filled arrow'); ############################################################################# # arrow tests with dotted lines $open = "··>"; $closed = '··▷'; $filled = '··▶'; $edge->set_attribute('style', 'dotted'); $edge->del_attribute('arrow-style'); is ($edge->style(), 'dotted', 'edge is now dotted'); $boxart = $graph->as_boxart(); like ($boxart, qr/$open/, 'contains edge with open arrow'); $edge->set_attribute('arrow-style', 'open'); $boxart = $graph->as_boxart(); like ($boxart, qr/$open/, 'contains edge with open arrow'); $edge->set_attribute('arrow-style', 'closed'); $boxart = $graph->as_boxart(); like ($boxart, qr/$closed/, 'contains edge with closed arrow'); $edge->set_attribute('arrow-style', 'filled'); $boxart = $graph->as_boxart(); like ($boxart, qr/$filled/, 'contains edge with filled arrow'); ����������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/parser_dot_html.t�����������������������������������������������������������������000444��000764��000764�� 2670�12322253245� 17662� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test Graph::Easy::Parser::Graphviz with HTML-like labels use Test::More; use strict; use utf8; BEGIN { plan tests => 7; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Parser::Graphviz") or die($@); }; can_ok ("Graph::Easy::Parser::Graphviz", qw/ new /); binmode (STDERR, ':utf8') or die ("Cannot do binmode(':utf8') on STDERR: $!"); binmode (STDOUT, ':utf8') or die ("Cannot do binmode(':utf8') on STDOUT: $!"); ############################################################################# # parser object my $c = 'Graph::Easy::Parser::Graphviz'; my $parser = Graph::Easy::Parser::Graphviz->new( debug => 0 ); is (ref($parser), $c); is ($parser->error(), '', 'no error yet'); ############################################################################# # HTML-like labels: my $graph = Graph::Easy::Parser::Graphviz->from_text(<<EOF digraph G { A [ color="dodgerblue4" shape="box" style="" label=<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD>Name</TD></TR></TABLE>> ]; B [ color="dodgerblue4" shape="box" style="" label=<<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR><TD>Name2</TD></TR><TR><TD ALIGN="LEFT" BALIGN="LEFT" PORT="E4">Somewhere<BR/>test1<BR>test</TD></TR></TABLE>> ]; A -> B } EOF ); #print $graph->as_txt(); is (ref($graph), 'Graph::Easy'); is ($graph->nodes(), 3, 'three nodes'); is ($graph->edges(), 1, 'edge did not get lost (bug until v0.60)'); ������������������������������������������������������������������������Graph-Easy-0.75/t/group.t���������������������������������������������������������������������������000444��000764��000764�� 16672�12322253245� 15657� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test Graph::Easy::Group and Graph::Easy::Group::Cell use Test::More; use strict; BEGIN { plan tests => 72; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Group") or die($@); use_ok ("Graph::Easy::Group::Cell") or die($@); use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy::Group", qw/ new error name add_node add_nodes add_member has_as_successor has_as_predecessor successors predecessors nodes edges _add_cell _del_cell _cells _clear_cells del_node del_edge del_member /); can_ok ("Graph::Easy::Group::Cell", qw/ _set_type class /); ############################################################################# my $group = Graph::Easy::Group->new(); is (ref($group), 'Graph::Easy::Group'); is ($group->error(), '', 'no error yet'); my $graph = Graph::Easy->new(); use_ok ('Graph::Easy::As_txt'); # "insert" into a graph to get default attributes $group->{graph} = $graph; is ($group->as_txt(), "( Group \\#0 )\n\n", 'as_txt (empty group)'); is (scalar $group->nodes(), 0, 'no nodes in group'); is (scalar $group->edges(), 0, 'no edges in group'); is ($group->name(), 'Group #0', 'name()'); my $first = Graph::Easy::Node->new( name => 'first' ); my $second = Graph::Easy::Node->new( name => 'second' ); $group->add_node($first); is (scalar $group->nodes(), 1, 'one node in group'); is ($first->attribute('group'), $group->name(), 'node has group attribute set'); $group->add_nodes($first, $second); is (scalar $group->nodes(), 2, 'two nodes in group'); is ($second->attribute('group'), $group->name(), 'node has group attribute set'); is ($second->{group}, $group, 'add_nodes() worked'); is ($group->as_txt(), <<HERE ( Group \\#0 [ first ] [ second ] ) HERE , 'as_txt (group with two nodes)'); ############################################################################# # attribute nodeclass $group = Graph::Easy::Group->new(); $group->set_attributes ( { 'nodeclass' => 'city', } ); is ($first->class(),'node', 'class is "node"'); $group->add_node($first); is ($first->class(),'node.city', 'class is now "node.city"'); ############################################################################# # Group::Cells my $c = '_cells'; my $cell = Graph::Easy::Group::Cell->new( group => $group, x => 0, y => 0, ); is (scalar keys %{$group->{$c}}, 1, 'one cell'); my $cells = { '0,0' => $cell }; $cell->_set_type( $cells ); is ($cell->class(), 'group ga', 'group ga'); is ($cell->group( $group->{name} ), $group, "group()"); my $cell2 = Graph::Easy::Group::Cell->new( group => $group, x => 1, y => 0 ); is (scalar keys %{$group->{$c}}, 2, 'one more cell'); $cells->{'1,0'} = $cell2; my $cell3 = Graph::Easy::Group::Cell->new( group => $group, x => 0, y => -1 ); is (scalar keys %{$group->{$c}}, 3, 'one more cell'); $cells->{'0,-1'} = $cell3; my $cell4 = Graph::Easy::Group::Cell->new( group => $group, x => 0, y => 1 ); is (scalar keys %{$group->{$c}}, 4, 'one more cell'); $cells->{'0,1'} = $cell4; is ($cell2->group( $group->{name} ), $group, "group()"); $cell->_set_type( $cells ); is ($cell->class(), 'group gl', 'group gl'); ############################################################################# # attributes on cells # The default attributes are returned by attribute(): is ($group->attribute('border-style'), 'dashed', 'group border'); is ($group->attribute('borderstyle'), 'dashed', 'group border'); is ($cell->attribute('border'), '', 'default border on this cell'); is ($cell->attribute('border-style'), 'dashed', 'default border on this cell'); is ($group->default_attribute('border-style'), 'dashed', 'group is dashed'); is ($cell->default_attribute('border'), 'dashed 1px #000000', 'dashed border on this cell'); is ($cell->default_attribute('border-style'), 'dashed', 'dashed border on this cell'); is ($group->default_attribute('fill'), '#a0d0ff', 'fill on group'); is ($group->attribute('fill'), '#a0d0ff', 'fill on group'); is ($cell->default_attribute('fill'), '#a0d0ff', 'fill on group cell'); is ($cell->attribute('fill'), '#a0d0ff', 'fill on group cell'); ############################################################################# # del_cell(); #print join (" ", keys %{$group->{cells}}),"\n"; is (scalar keys %{$group->{$c}}, 4, 'one less'); $group->_del_cell($cell); is (scalar keys %{$group->{$c}}, 3, 'one less'); is ($cell->group(), undef, "no group() on deleted cell"); ############################################################################# # del_node() & del_edge(), when node/edge are in a group (bug until 0.39) $graph = Graph::Easy->new(); $group = $graph->add_group('group'); my ($A,$B,$E) = $graph->add_edge('A','B','E'); for my $m ($A,$B,$E) { $group->add_member($m); } is ($group->nodes(), 2, '2 nodes in group'); is ($group->edges(), 0, '0 edges going from/to group'); is ($group->edges_within(), 1, '1 edge in group'); is ($A->attribute('group'), $group->name(), 'group attribute got added'); $graph->del_node($A); is ($A->attribute('group'), '', 'group attribute got deleted'); is ($group->nodes(), 1, '1 node in group'); is ($group->edges(), 0, '0 edges in group'); ($A,$B,$E) = $graph->add_edge('A','B','E'); $group->add_member($A); $group->add_member($E); is ($group->nodes(), 2, '2 nodes in group'); is ($group->edges(), 0, '0 edges going from/to group'); is ($group->edges_within(), 1, '1 edge in group'); $graph->del_edge($E); is ($group->nodes(), 2, '2 nodes in group'); is ($group->edges(), 0, '0 edges in group'); is ($group->edges_within(), 0, '0 edges in group'); ############################################################################# # successors and predecessors $graph = Graph::Easy->new(); $group = $graph->add_group('group'); my ($g1,$bonn) = $graph->add_edge($group, 'Bonn'); my ($berlin,$g2) = $graph->add_edge('Berlin', $group); is ($group->has_as_successor($bonn), 1, 'group -> bonn'); is ($group->has_as_successor($berlin), 0, '! group -> berlin'); is ($group->has_as_predecessor($berlin), 1, 'berlin -> group'); is ($group->has_as_predecessor($bonn), 0, '! bonn -> group'); is ($bonn->has_as_successor($group), 0, '! group -> bonn'); is ($berlin->has_as_predecessor($group), 0, 'group -> berlin'); is ($bonn->has_as_predecessor($group), 1, 'bonn -> group'); my @suc = $group->successors(); is (scalar @suc, 1, 'one successor'); is ($suc[0], $bonn, 'group => bonn'); ############################################################################# # add_node('Bonn'), add_member('Bonn','Berlin') etc. $graph = Graph::Easy->new(); $group = $graph->add_group('group'); $bonn = $group->add_node('Bonn'); is (ref($bonn), 'Graph::Easy::Node', "add_node('Bonn') works for groups"); ($bonn,$berlin) = $group->add_nodes('Bonn','Berlin'); is (ref($bonn), 'Graph::Easy::Node', "add_nodes('Bonn') works for groups"); is ($bonn->name(), 'Bonn', "add_nodes('Bonn') works for groups"); is (ref($berlin), 'Graph::Easy::Node', "add_nodes('Berlin') works for groups"); is ($berlin->name(), 'Berlin', "add_nodes('Berlin') works for groups"); # add_edge() my $edge = $group->add_edge('Bonn','Kassel'); my $kassel = $graph->node('Kassel'); is (ref($kassel), 'Graph::Easy::Node', "add_edge('Bonn','Kassel') works for groups"); # add_edge_once() $edge = $group->add_edge_once('Bonn','Kassel'); my @edges = $graph->edges('Bonn','Kassel'); is (scalar @edges, 1, 'one edge from Bonn => Kassel'); # add_edge() twice $edge = $group->add_edge('Bonn','Kassel'); @edges = $graph->edges('Bonn','Kassel'); is (scalar @edges, 2, 'two edges from Bonn => Kassel'); ����������������������������������������������������������������������Graph-Easy-0.75/t/messages.t������������������������������������������������������������������������000444��000764��000764�� 1714�12322253245� 16301� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; # test catching of error and warnings: BEGIN { plan tests => 10; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy", qw/ catch_messages catch_errors catch_warnings errors warnings /); ############################################################################# # adding edges/nodes my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); $graph->catch_messages(1); $graph->error('foo'); my @errors = $graph->errors(); my @warnings = $graph->warnings(); is (scalar @errors, 1, '1 error'); is (scalar @warnings, 0, '0 warnings'); is ($errors[0], 'foo', '1 error'); $graph->warn('Bar'); @errors = $graph->errors(); @warnings = $graph->warnings(); is (scalar @errors, 1, '1 error'); is (scalar @warnings, 1, '1 warning'); is ($warnings[0], 'Bar', '1 warning'); 1; # all tests done ����������������������������������������������������Graph-Easy-0.75/t/anon.t����������������������������������������������������������������������������000444��000764��000764�� 5753�12322253245� 15434� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test anonymous nodes use Test::More; use strict; BEGIN { plan tests => 31; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Node::Anon") or die($@); use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::As_txt") or die($@); require_ok ("Graph::Easy::As_ascii") or die($@); }; can_ok ("Graph::Easy::Node::Anon", qw/ new as_txt as_html error class name successors predecessors width height pos x y class del_attribute set_attribute set_attributes attribute attributes_as_txt as_pure_txt group add_to_group /); ############################################################################# my $node = Graph::Easy::Node::Anon->new(); is (ref($node), 'Graph::Easy::Node::Anon'); is ($node->error(), '', 'no error yet'); is ($node->x(), undef, 'x == undef'); is ($node->y(), undef, 'y == undef'); is ($node->width(), undef, 'w == undef'); is ($node->height(), undef, 'h == undef'); is ($node->label(), ' ', 'label'); is ($node->name(), '#0', 'name'); is ($node->title(), '', 'no title per default'); is (join(",", $node->pos()), "0,0", 'pos = 0,0'); is ($node->{graph}, undef, 'no graph'); is (scalar $node->successors(), undef, 'no outgoing links'); is (scalar $node->predecessors(), undef, 'no incoming links'); is ($node->{graph}, undef, 'successors/predecssors leave graph alone'); $node->_correct_size(); is ($node->width(), 3, 'w == 3'); is ($node->height(), 3, 'h == 3'); ############################################################################# # as_txt/as_html my $graph = Graph::Easy->new(); $graph->add_node($node); is ($node->as_txt(), '[ ]', 'anon as_txt'); is ($node->as_html(), " <td colspan=4 rowspan=4 class='node_anon'></td>\n", 'as_html'); is ($node->as_ascii(), " \n \n ", 'anon as_ascii'); require Graph::Easy::As_graphviz; is ($node->as_graphviz_txt(), '"#0"', 'anon as_graphviz'); ############################################################################# # anon node as_graphviz my $grviz = $graph->as_graphviz(); my $match = quotemeta('"#0" [ color="#ffffff", label=" ", style=filled ]'); like ($grviz, qr/$match/, 'anon node'); ############################################################################# # with border attribute $node->set_attribute('border-style', 'dotted'); is ($node->as_txt(), '[ ] { border: dotted; }', 'anon as_txt'); is ($node->as_html(), " <td colspan=4 rowspan=4 class='node_anon' style=\"border: dotted 1px #000000\"></td>\n", 'as_html'); $grviz = $graph->as_graphviz(); $match = quotemeta('"#0" [ label=" ", style="filled,dotted" ]'); like ($grviz, qr/$match/, 'anon node as graphviz'); ############################################################################# # with fill attribute $node->set_attribute('fill', 'orange'); is ($node->as_txt(), '[ ] { fill: orange; border: dotted; }', 'anon as_txt'); is ($node->as_html(), " <td colspan=4 rowspan=4 class='node_anon' style=\"background: #ffa500; border: dotted 1px #000000\"></td>\n", 'as_html'); ���������������������Graph-Easy-0.75/t/edge.t����������������������������������������������������������������������������000444��000764��000764�� 12426�12322253245� 15420� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 43; chdir 't' if -d 't'; use lib '../lib'; use_ok qw/Graph::Easy::Edge/; use_ok qw/Graph::Easy::Edge::Cell/; } can_ok ("Graph::Easy::Edge", qw/ new error label _cells _add_cell _clear_cells _unplace attribute undirected bidirectional has_ports flip set_attribute set_attributes group add_to_group background edge_flow flow port start_port end_port from to start_at to from nodes as_ascii as_txt /); use Graph::Easy::Edge::Cell qw/EDGE_SHORT_E/; use Graph::Easy; ############################################################################# # We need a graph to insert the edge into it, so that the edge gets the # default settings from it. # XXX TODO: should we change the above? my $graph = Graph::Easy->new(); my $edge = Graph::Easy::Edge->new(); $edge->{graph} = $graph; is (ref($edge), 'Graph::Easy::Edge'); is ($edge->error(), '', 'no error yet'); is ($edge->undirected(), undef, 'not undirected'); is ($edge->bidirectional(), undef, 'not bidiriectional'); is ($edge->has_ports(), 0, 'has no port restrictions'); use_ok ('Graph::Easy::As_txt'); is ($edge->as_txt(), ' --> ', 'default is "-->"'); ############################################################################# # different styles $edge = Graph::Easy::Edge->new( style => 'double' ); $edge->{graph} = $graph; is ($edge->as_txt(), ' ==> ', '"==>"'); $edge = Graph::Easy::Edge->new( style => 'dotted' ); $edge->{graph} = $graph; is ($edge->as_txt(), ' ..> ', '"..>"'); $edge = Graph::Easy::Edge->new( style => 'dashed' ); $edge->{graph} = $graph; is ($edge->as_txt(), ' - > ', '"- >"'); $edge = Graph::Easy::Edge->new( style => 'wave' ); $edge->{graph} = $graph; is ($edge->as_txt(), ' ~~> ', '"~~>"'); $edge = Graph::Easy::Edge->new( style => 'dot-dash' ); $edge->{graph} = $graph; is ($edge->as_txt(), ' .-> ', '".->"'); $edge = Graph::Easy::Edge->new( style => 'double-dash' ); $edge->{graph} = $graph; is ($edge->as_txt(), ' = > ', '"= >"'); $edge = Graph::Easy::Edge->new( style => 'dot-dot-dash' ); $edge->{graph} = $graph; is ($edge->as_txt(), ' ..-> ', '"= >"'); $edge = Graph::Easy::Edge->new( style => 'bold' ); $edge->{graph} = $graph; is ($edge->as_txt(), ' --> { style: bold; } ', ' --> { style: bold; }'); ############################################################################# $edge = Graph::Easy::Edge->new( label => 'train' ); $edge->{graph} = $graph; is ($edge->as_txt(), ' -- train --> ', ' -- train -->'); ############################################################################# # cells is (scalar $edge->_cells(), 0, 'no cells'); my $c = Graph::Easy::Edge::Cell->new ( edge => $edge, type => EDGE_SHORT_E, x => 1, y => 1, after => 0, ); is (scalar $edge->_cells(), 1, 'one cell'); my @cells = $edge->_cells(); is ($cells[0], $c, 'added this cell'); my $c_1 = Graph::Easy::Edge::Cell->new ( edge => $edge, type => EDGE_SHORT_E, x => 2, y => 1, after => $c, ); is (scalar $edge->_cells(), 2, 'two cells'); @cells = $edge->_cells(); is ($cells[0], $c, 'first cell stayed'); is ($cells[1], $c_1, 'added after first cell'); $edge->_clear_cells(); is (scalar $edge->_cells(), 0, 'no cells'); ############################################################################# # undirected/bidirectional is ($edge->undirected(2), 1, 'undirected'); is ($edge->undirected(), 1, 'undirected'); is ($edge->undirected(0), 0, 'not undirected'); is ($edge->bidirectional(2), 1, 'bidiriectional'); is ($edge->bidirectional(), 1, 'bidiriectional'); is ($edge->bidirectional(0), 0, 'not bidiriectional'); ############################################################################# # has_ports() $edge->set_attribute('start', 'south'); is ($edge->has_ports(), 1, 'has port restrictions'); $edge->set_attribute('end', 'north'); is ($edge->has_ports(), 1, 'has port restrictions'); $edge->del_attribute('start'); is ($edge->has_ports(), 1, 'has port restrictions'); $edge->del_attribute('end'); is ($edge->has_ports(), 0, 'has no port restrictions'); ############################################################################# # port() $edge->set_attribute('start', 'south'); my @u = $edge->port('start'); is_deeply (\@u, ['south'], "port('start')"); $edge->del_attribute('end'); $edge->del_attribute('start'); ############################################################################# # background() is ($edge->background(), 'inherit', 'background()'); $graph = Graph::Easy->new(); my ($A,$B); ($A,$B,$edge) = $graph->add_edge('A','B'); my $group = $graph->add_group('G'); $group->add_member($edge); my $cell = Graph::Easy::Edge::Cell->new( edge => $edge, graph => $graph ); # default group background is ($cell->background(), '#a0d0ff', 'background() for group member'); $group->set_attribute('background', 'red'); is ($cell->background(), '#a0d0ff', 'background() for group member'); # now has the fill of the group as background $group->set_attribute('fill', 'green'); is ($cell->background(), '#008000', 'background() for group member'); ############################################################################# # flip() my $from = $edge->from(); my $to = $edge->to(); $edge->flip(); is ($from, $edge->to(), 'from/to flipped'); is ($to, $edge->from(), 'from/to flipped'); ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/as_txt.t��������������������������������������������������������������������������000444��000764��000764�� 1237�12322253245� 15774� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 4; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy", qw/ as_txt /); ############################################################################# # as_txt use Graph::Easy::Parser; my $parser = Graph::Easy::Parser->new(); my $graph = $parser->from_text( "[A] { link: http://foo.com; color: red; origin: B; offset: 2,1; }" ); is ($parser->error(), '', 'no parsing error' ); is ($graph->as_txt(), <<EOF [ A ] { color: red; link: http://foo.com; offset: 2,1; origin: B; } [ B ] EOF , 'as_txt with offset and origin'); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/chain.t���������������������������������������������������������������������������000444��000764��000764�� 6413�12322253245� 15555� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 44; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Layout::Chain") or die($@); use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy::Layout::Chain", qw/ new error length nodes add_node layout /); ############################################################################# # chain tests my $c = 'Graph::Easy::Layout::Chain'; my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); my ($node, $node2) = $graph->add_edge('A','B'); my $chain = Graph::Easy::Layout::Chain->new( start => $node, graph => $graph ); is (ref($chain), $c, 'new() seemed to work'); is ($chain->error(), '', 'no error'); is ($chain->start(), $node, 'start node is $node'); is ($chain->end(), $node, 'end node is $node'); is ($node->{_chain}, $chain, 'chain stored at node'); is ($chain->length(), 1, 'length() is 1'); is ($chain->length($node), 1, 'length($node) is 1'); $chain->add_node($node2); is ($node->{_chain}, $chain, 'chain stored at node'); is ($node2->{_chain}, $chain, 'chain stored at node2'); is ($chain->length(), 2, 'length() is now 2'); is ($chain->start(), $node, 'start node is $node'); is ($chain->end(), $node2, 'end node is $node2'); is ($chain->length($node), 2, 'length($node) is 2'); is ($chain->length($node2), 1, 'length($node2) is 1'); ############################################################################# # merging two chains my ($node3, $node4) = $graph->add_edge('C','D'); my $other = $c->new ( start => $node3, graph => $graph ); is (ref($other), $c, 'new() seemed to work'); is ($other->error(), '', 'no error'); is ($other->length(), 1, 'length() is 1'); is ($other->start(), $node3, 'start node is $node3'); is ($other->end(), $node3, 'end node is $node3'); $other->add_node($node4); is ($other->length(), 2, 'length() is now 2'); is ($other->start(), $node3, 'start node is $node3'); is ($other->end(), $node4, 'end node is $node4'); #diag ("merging chains\n"); $chain->merge($other); is ($other->error(), '', 'no error'); is ($other->length(), 0, 'other length() is still 0'); is ($other->start(), undef, 'start node is $node3'); is ($other->end(), undef, 'end node is $node4'); is ($chain->error(), '', 'no error'); is ($chain->length(), 4, 'chain length() is now 4'); is ($chain->start(), $node, 'start node is $node3'); is ($chain->end(), $node4, 'end node is $node4'); my @nodes = $chain->nodes(); is_deeply (\@nodes, [ $node, $node2, $node3, $node4 ], 'nodes got merged'); ############################################################################# # merging two chains, with offset my ($node5, $node6) = $graph->add_edge('E','F'); $other = $c->new ( start => $node5, graph => $graph ); $other->add_node($node6); # merge $chain into $other, but keep the first 3 nodes of $chain $other->merge($chain, $node3); is ($chain->length(), 4, 'left all four nodes'); is ($other->length(), 4, 'consumed two nodes'); @nodes = $chain->nodes(); is_deeply (\@nodes, [ $node, $node2, $node3, $node4 ], 'nodes got merged'); @nodes = $other->nodes(); is_deeply (\@nodes, [ $node5, $node6, $node3, $node4 ], 'other got two nodes'); for my $node ( @nodes ) { is ($node->{_chain}, $other, 'node got set to new chain'); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/vcg.t�����������������������������������������������������������������������������000444��000764��000764�� 15243�12322253245� 15273� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Some basic VCG tests use Test::More; use strict; BEGIN { plan tests => 52; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::Parser") or die($@); }; can_ok ('Graph::Easy', qw/ as_vcg as_vcg_file /); ############################################################################# my $graph = Graph::Easy->new(); my $vcg = $graph->as_vcg(); my $vcg_file = $graph->as_vcg_file(); foreach ($vcg,$vcg_file) { s{(// Generated by Graph::Easy)[^\n]*}{$1}ms; } is ($vcg, $vcg_file, 'as_vcg and as_vcg_file are equal'); ############################################################################# # Parsing my $parser = Graph::Easy::Parser->new( debug => 0 ); $graph = $parser->from_text( <<EOG // test graph: { node: { title: "A" } node: { title: "B" } edge: { sourcename: "A" targetname: "B" } } EOG ); is (ref($graph), 'Graph::Easy', 'Parsing worked'); is (scalar $graph->nodes(), 2, 'two nodes'); my $nodes = ''; for my $n ($graph->nodes()) { $nodes .= "$n->{name}, "; } is ($nodes, "A, B, ", 'two nodes A and B'); is (scalar $graph->edges(), 1, 'one edge'); is ($graph->as_txt(), <<EOF edge { arrowstyle: filled; } graph { flow: south; } node { align: left; } [ A ] --> [ B ] EOF , 'as_txt matches'); ############################################################################# $graph = $parser->from_text( <<EOG // test graph: { edge.color: black node.textcolor: red node: { title: "A" } node.textcolor: blue node: { title: "B" } edge: { sourcename: "A" targetname: "B" } } EOG ); is (ref($graph), 'Graph::Easy', 'Parsing worked'); is (scalar $graph->nodes(), 2, 'two nodes'); $nodes = ''; for my $n ($graph->nodes()) { $nodes .= "$n->{name}, "; } is ($nodes, "A, B, ", 'two nodes A and B'); is (scalar $graph->edges(), 1, 'one edge'); is ($graph->node('A')->attribute('color'), 'red', 'textcolor red for A'); is ($graph->node('B')->attribute('color'), 'blue', 'textcolor blue for B'); ############################################################################# $graph = $parser->from_text( <<EOG graph: {title: "red vs. black" colorentry 42: 128 128 128 node: { title: "A" color: 42 } node: { title: "B" color: 1 } edge: { sourcename: "A" targetname: "B" } } EOG ); is ($parser->error(), '', 'no error'); is (ref($graph), 'Graph::Easy', 'Parsing worked'); is (scalar $graph->nodes(), 2, 'two nodes'); is ($graph->label(), 'red vs. black', 'title => label'); my $A = $graph->node('A'); is ($A->attribute('fill'), 'rgb(128,128,128)', 'A is grey'); ############################################################################# # custom attributes from parsed text # XXX TODO: this doesn't work: "energetic attraction: 0.7" $graph = $parser->from_text( <<EOG graph: {title: "red vs. black" colorentry 42: 128 128 128 ignore_singles: 1 node: { title: "A" color: 42 fontname: "serif" focus: 2 } node: { title: "B" color: 1 focus: 1 } edge: { sourcename: "A" targetname: "B" class: 1 anchor: foo } } EOG ); is ($parser->error(), '', 'no error'); is (ref($graph), 'Graph::Easy', 'Parsing worked'); is (scalar $graph->nodes(), 2, 'two nodes'); is ($graph->label(), 'red vs. black', 'title => label'); is ($graph->attribute('x-vcg-ignore_singles'), '1', 'graph has x-ignore_singles'); $A = $graph->node('A'); is ($A->attribute('font'), 'serif', 'fontname => font'); is ($A->attribute('x-vcg-focus'), '2', 'A has x-vcg-focus'); my $B = $graph->node('B'); is ($B->attribute('x-vcg-focus'), '1', 'B has x-vcg-focus'); my $E = $graph->edge('A','B'); is ($E->attribute('x-vcg-anchor'), 'foo', 'B->B has x-vcg-anchor'); ############################################################################# # attributes (custom and normal) $vcg = $graph->as_vcg(); unlike ($vcg, qr/x-/, 'no custom attributs were output'); like ($vcg, qr/fontname/, 'no custom attributs were output'); unlike ($vcg, qr/font:/, 'font => fontname'); ############################################################################# # Parsing multi-line labels and \fiXXX in strings # test that both "0x0c" and "\\f" are supported: $graph = $parser->from_text( <<EOG // test graph: { node: { title: "A" label: " i065" } node: { title: "\\fi066" label: "foo bar baz" } edge: { sourcename: "A" targetname: "B" } } EOG ); is ($parser->error(), '', 'no error'); is (ref($graph), 'Graph::Easy', 'Parsing worked'); is (scalar $graph->nodes(), 2, 'two nodes'); is ($graph->node('B')->label(), 'foo\nbar\nbaz', 'label of B'); # unquoted from \f064 to A is ($graph->node('A')->label(), 'A', 'label of A'); ############################################################################# # classname attribute $graph = $parser->from_text( <<EOG // test graph: { infoname1: "test" infoname2: "test" classname 1: "classa" classname 2: "classB" node: { title: "A" } node: { title: "B" } edge: { sourcename: "A" targetname: "B" class:1 } edge: { sourcename: "B" targetname: "A" class:2 } } EOG ); is ($parser->error(), '', 'no error'); is (ref($graph), 'Graph::Easy', 'Parsing worked'); is (scalar $graph->nodes(), 2, 'two nodes'); is (scalar $graph->edges(), 2, 'two edges'); my $e = $graph->edge('A','B'); is (ref($e), 'Graph::Easy::Edge', "got edge from A to B"); is ($e->class(), 'edge.classa', 'classname 1 worked'); $e = $graph->edge('B','A'); is (ref($e), 'Graph::Easy::Edge', "got edge from B to A"); is ($e->class(), 'edge.classb', 'classname 2 worked'); ############################################################################# # flow => orientation $graph = Graph::Easy->new('graph { flow: right; } [A]->[B]'); $graph->set_attribute('node','align','right'); $vcg = $graph->as_vcg(); like ($vcg, qr/orientation: "left_to_right"/, 'flow => orientation'); like ($vcg, qr/node.textmode: "right_justify"/, 'node align => node.textmode'); ############################################################################# # class attributes $graph = $parser->from_text( <<EOG graph: { node.color: red edge.color: green node: { title: "A" } node: { title: "B" } edge: { source: "A" target: "B" } } EOG ); $vcg = $graph->as_vcg(); like ($vcg, qr/edge.*color: "green"/, 'edge color survived'); like ($vcg, qr/node.*color: "red"/, 'node color survived'); ############################################################################# # node shapes: circle, trapeze etc. $graph = $parser->from_text( <<EOG graph: { node.shape: circle node: { title: "A" } node: { title: "B" shape: trapeze } node: { title: "C" invisible: yes } edge: { source: "A" target: "B" } } EOG ); $vcg = $graph->as_vcg(); like ($vcg, qr/node.*shape: "circle".*A/, 'A is circle'); like ($vcg, qr/node.*shape: "trapeze".*B/, 'B is trapeze'); like ($vcg, qr/node.*invisible: "yes".*C/, 'C is invisible'); �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fb.t������������������������������������������������������������������������������000444��000764��000764�� 11014�12322253245� 15073� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test printing into a framebuffer use Test::More; use strict; BEGIN { plan tests => 36; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Node") or die($@); use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::As_ascii") or die($@); }; can_ok ("Graph::Easy::Node", qw/ as_ascii _printfb _printfb_ver _draw_label _framebuffer _aligned_label /); ############################################################################# # general framebuffer tests my $node = Graph::Easy::Node->new(); is (ref($node), 'Graph::Easy::Node'); is ($node->error(), '', 'no error yet'); my $fb = $node->_framebuffer(2,3); is (join ("::", @$fb), " :: :: ", 'framebuffer set up'); $node->_printfb( $fb, 0,0, '+'); is (join ("::", @$fb), "+ :: :: ", 'print +'); $node->_printfb( $fb, 1,0, '+'); is (join ("::", @$fb), "++:: :: ", 'print +'); $node->_printfb( $fb, 1,2, '+'); is (join ("::", @$fb), "++:: :: +", 'print +'); $node->_printfb( $fb, 0,0, '--'); is (join ("::", @$fb), "--:: :: +", 'print --'); $node->_printfb( $fb, 0,1, "''"); is (join ("::", @$fb), "--::'':: +", "print ''"); ############################################################################# # multiline printing $fb = $node->_framebuffer(2,5); $node->_printfb( $fb, 0,3, "+", "+"); is (join ("::", @$fb), " :: :: ::+ ::+ ", 'print "+\n+"'); $node->_printfb( $fb, 0,2, "|", "|"); is (join ("::", @$fb), " :: ::| ::| ::+ ", 'print "\|\n\|"'); $fb = $node->_framebuffer(4,5); is (join ("::", @$fb), " :: :: :: :: ", 'new fb set up'); $node->_printfb( $fb, 1,1, "01", "234"); is (join ("::", @$fb), " :: 01 :: 234:: :: ", 'new fb set up'); ############################################################################# # _draw_border() tests $fb = $node->_framebuffer(12,6); $node->{w} = 12; $node->{h} = 6; $node->_draw_border( $fb, 'solid', 'solid', 'solid', 'solid'); is (join ("::", @$fb), '+----------+::| |::| |::| |::| |::+----------+', 'solid border'); $fb = $node->_framebuffer(8,4); $node->{w} = 8; $node->{h} = 4; my @expect = ( ' \n \n \n ', '+------+\n| |\n| |\n+------+', '........\n: :\n: :\n:......:', '+ - - -+\n\' \'\n\' \'\n+ - - -+', '+-.-.-.+\n! !\n! !\n+-.-.-.+', '+.-..-.+\n| |\n: :\n+.-..-.+', '########\n# #\n# #\n########', '#======#\nH H\nH H\n#======#', '# = = =#\n" "\n" "\n# = = =#', '+~~~~~~+\n{ {\n} }\n+~~~~~~+', ); my $i = 0; for my $style (qw/ none solid dotted dashed dot-dash dot-dot-dash bold double double-dash wave/) { $node->_draw_border( $fb, $style, $style, $style, $style); is (join ('\n', @$fb), $expect[$i], "$style border"); $i++; } ############################################################################# # _draw_border() tests with different styles $fb = $node->_framebuffer(8,4); $node->{w} = 8; $node->{h} = 4; $node->_draw_border( $fb, 'solid', 'dotted', 'solid', 'solid'); is (join ("::", @$fb), '+------+::| |::| |:::......:', 'solid border, except bottom, which is dotted'); ############################################################################# # label alignments $node->set_attribute('label', 'left\r right\l left\c center\n normal'); my ($lines,$aligns) = $node->_aligned_label(); is_deeply ( $lines, [ 'left', 'right', 'left', 'center', 'normal' ], 'lines are ok'); is_deeply ( $aligns, [ 'c', 'r', 'l', 'c', 'c', ], 'aligns is ok'); # empty lines at the are thrown away $node->set_attribute('label', 'left\r right\l left\c center\n normal\c'); ($lines,$aligns) = $node->_aligned_label(); is_deeply ( $lines, [ 'left', 'right', 'left', 'center', 'normal' ], 'lines are ok'); is_deeply ( $aligns, [ 'c', 'r', 'l', 'c', 'c', ], 'aligns is ok'); # start with alignment $node->set_attribute('label', '\rleft\r right\l left\c center\n normal\c'); ($lines,$aligns) = $node->_aligned_label(); is_deeply ( $lines, [ '', 'left', 'right', 'left', 'center', 'normal' ], 'lines are ok'); is_deeply ( $aligns, [ 'c', 'r', 'r', 'l', 'c', 'c', ], 'aligns is ok'); # start with alignment $node->set_attribute('label', '\r\l\rleft\r right\l left\c center\n normal\c'); ($lines,$aligns) = $node->_aligned_label(); is_deeply ( $lines, [ '','','','left', 'right', 'left', 'center', 'normal' ], 'lines are ok'); is_deeply ( $aligns, [ 'c','r','l','r', 'r', 'l', 'c', 'c', ], 'aligns is ok'); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/attributes.t����������������������������������������������������������������������000444��000764��000764�� 30313�12322253245� 16675� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test the attribute system, especially getting, setting attributes # on objects and classes: use Test::More; use strict; BEGIN { plan tests => 123; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Attributes") or die($@); use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy", qw/ color_as_hex color_name color_value _remap_attributes valid_attribute get_custom_attributes raw_attributes custom_attributes /); can_ok ("Graph::Easy::Node", qw/ get_custom_attributes raw_attributes set_attribute get_attribute custom_attributes /); can_ok ("Graph::Easy::Edge", qw/ get_custom_attributes raw_attributes set_attribute get_attribute custom_attributes /); can_ok ("Graph::Easy::Group", qw/ get_custom_attributes raw_attributes set_attribute get_attribute custom_attributes /); ############################################################################# # color_as_hex: my $att = 'Graph::Easy'; is ($att->color_as_hex( 'red' ), '#ff0000', 'color red'); is ($att->color_as_hex( '#0000ff' ), '#0000ff', 'color #0000ff'); is ($att->color_as_hex( '#f0c' ), '#ff00cc', 'color #f0c'); is ($att->color_as_hex( 'rgb(128,255,0)' ), '#80ff00', 'color rgb(128,255,0)'); is ($att->color_as_hex('lavender'), '#e6e6fa', 'color lavender'); is ($att->color_as_hex('lavenderblush'), '#fff0f5', 'color lavenderblush'); is ($att->color_as_hex('lavenderbush'), undef, 'color lavenderbush does not exist'); ############################################################################# # color_name: is ($att->color_name('red'), 'red', 'red => red'); is ($att->color_name('#ff0000'), 'red', '#ff0000 => red'); is ($att->color_name('#ffffff'), 'white', '#ffffff => white'); is ($att->color_name('#808080'), 'gray', '#808080 => gray'); ############################################################################# # color scheme support: is ($att->color_name('grey', 'x11'), 'grey', 'grey => grey'); is ($att->color_name('#c0c0c0','x11'), 'gray', '#c0c0c0 => gray'); is ($att->color_name('#ffffff','x11'), 'white', '#ffffff => white'); is ($att->color_name('grey23','x11'), 'grey23', 'grey23 => grey23'); # 1 => '#ca0020', 2 => '#f4a582', 3 => '#bababa', 4 => '#404040', is ($att->color_name('1','rdgy4'), '1', '1 => 1 under rdgy4'); ############################################################################# # color_value: is ($att->color_value('red'), '#ff0000', 'red => #ff0000'); is ($att->color_value('grey'), '#808080', 'grey => #808080'); is ($att->color_value('grey','x11'), '#c0c0c0', 'grey => #c0c0c0 under x11'); is ($att->color_value('grey23','x11'), '#3b3b3b', 'grey23 => #3b3b3b under x11'); # 1 => '#ca0020', 2 => '#f4a582', 3 => '#bababa', 4 => '#404040', is ($att->color_value('1','rdgy4'), '#ca0020', '1 => #ca0020 under rdgy4'); is ($att->color_value('4','rdgy4'), '#404040', '4 => #404040 under rdgy4'); ############################################################################# # valid_attribute: $att = Graph::Easy->new(); $att->no_fatal_errors(1); my $new_value = $att->valid_attribute( 'color', 'redbrownish' ); is ($new_value, undef, 'color redbrownish is not valid'); $new_value = $att->valid_attribute( 'fill', 'redbrownish' ); is ($new_value, undef, 'fill redbrownish is not valid'); $new_value = $att->valid_attribute( 'border-shape', 'double' ); is (ref($new_value), 'ARRAY', 'border-shape is not valied'); # no class name: 'all' will be tested for my $name ( 'red','w3c/red','x11/red', 'chocolate4', 'rgb(1,2,3)', 'rgb(10%,1%,2%)', 'rgb(8,1%,0.2)', 'w3c/grey', ) { for my $class ( undef, 'node', 'node.subclass') { my $new_value = $att->valid_attribute( 'color', $name, $class ); is ($new_value, $name, "color $name is valid"); } } ############################################################################# # fallback to color scheme 'x11' $new_value = $att->valid_attribute( 'color', 'chocolate4' ); is ($new_value, 'chocolate4', 'color chocolate4 is valid'); ############################################################################# # valid_attribute for graph only: $new_value = $att->valid_attribute( 'gid', '123', 'graph' ); is ($new_value, '123', 'gid 123 is valid for graph'); $new_value = $att->valid_attribute( 'gid', '123', 'node' ); is (ref($new_value), 'ARRAY', 'gid is invalid for nodes'); $new_value = $att->valid_attribute( 'gid', '123', 'edge' ); is (ref($new_value), 'ARRAY', 'gid is invalid for edges'); $new_value = $att->valid_attribute( 'output', 'html', 'graph' ); is ($new_value, 'html', 'output "html" is valid for graph'); $new_value = $att->valid_attribute( 'output', 'html', 'node' ); is (ref($new_value), 'ARRAY', 'output is invalid for nodes'); $new_value = $att->valid_attribute( 'output', 'html', 'edge' ); is (ref($new_value), 'ARRAY', 'output is invalid for edges'); ############################################################################# # setting attributes on graphs, nodes and edges my $graph = Graph::Easy->new(); $graph->no_fatal_errors(1); my ($n,$m,$e) = $graph->add_edge('A','B'); $n->set_attribute('color','red'); is ($graph->error(),'','no error'); $graph->error(''); # reset potential error for next test $n->set_attribute('shape','point'); is ($graph->error(),'','no error'); $graph->error(''); # reset potential error for next test $graph->set_attribute('graph', 'shape', 'point'); is ($graph->error(),"Error in attribute: 'shape' is not a valid attribute name for a graph", 'shape is not a valid attribute'); $graph->error(''); # reset potential error for next test $e->no_fatal_errors(1); $e->set_attribute('shape','point'); is ($graph->error(),"Error in attribute: 'shape' is not a valid attribute name for a edge", 'shape is not a valid attribute'); $graph->error(''); # reset potential error for next test ############################################################################# # Setting an attribute on the graph directly is the same as setting it on # the class 'graph': $graph->set_attribute('graph', 'flow', 'south'); is ($graph->attribute('flow'), 'south', 'flow was set to south'); $graph->set_attribute('flow', 'west'); is ($graph->attribute('flow'), 'west', 'flow was set to south'); is ($graph->attribute('label-pos'), 'top', 'label-pos defaults to top'); is ($graph->attribute('labelpos'), 'top', 'label-pos defaults to top'); $graph->set_attribute('graph', 'label-pos', 'bottom'); is ($graph->attribute('label-pos'), 'bottom', 'label-pos was set to bottom'); is ($graph->attribute('labelpos'), 'bottom', 'label-pos was set to bottom'); $graph->del_attribute('label-pos'); is ($graph->attribute('label-pos'), 'top', 'label-pos defaults to top'); is ($graph->attribute('labelpos'), 'top', 'label-pos defaults to top'); $graph->set_attribute('graph', 'labelpos', 'bottom'); is ($graph->attribute('label-pos'), 'bottom', 'label-pos was set to bottom'); is ($graph->attribute('labelpos'), 'bottom', 'label-pos was set to bottom'); ############################################################################# # text-style attribute for my $class (qw/edge graph node group/) { $graph->set_attribute($class, 'text-style', 'none'); is ($graph->error(), '', "could set text-style on $class"); $graph->error(''); # reset potential error for next test $graph->set_attribute($class, 'text-style', 'bold'); is ($graph->error(), '', "could set text-style on $class"); $graph->error(''); # reset potential error for next test $graph->set_attribute($class, 'text-style', 'bold underline'); is ($graph->error(), '', "could set text-style on $class"); $graph->error(''); # reset potential error for next test $graph->set_attribute($class, 'text-style', 'bold underline overline italic'); is ($graph->error(), '', "could set text-style on $class"); $graph->error(''); # reset potential error for next test } $graph->set_attribute('graph', 'text-style', 'bold underline overline italic'); my $styles = $graph->text_styles(); is (join(',', sort keys %$styles), 'bold,italic,overline,underline', 'text_styles()'); my $node = $graph->add_node('one'); $node->set_attribute('text-style', 'bold underline overline italic'); $styles = $node->text_styles(); is (join(',', sort keys %$styles), 'bold,italic,overline,underline', 'text_styles() on node'); ############################################################################# # border-style vs. borderstyle $graph = Graph::Easy->new(); $graph->no_fatal_errors(1); ($n,$m,$e) = $graph->add_edge('A','B'); is ($n->attribute('border-style'),'solid', 'border-style is solid'); is ($n->attribute('borderstyle'),'solid', 'borderstyle is solid'); $n->set_attribute('border-style','dashed'); is ($n->attribute('border-style'),'dashed', 'border-style is now dashed'); is ($n->attribute('borderstyle'),'dashed', 'border-style is now dashed'); ############################################################################# # inheritance of values ('inherit') $graph = Graph::Easy->new(); ($n,$m,$e) = $graph->add_edge('A','B'); $graph->set_attribute('node', 'color', 'red'); $graph->set_attribute('color', 'green'); $n->set_attribute('color', 'inherit'); $n->set_attribute('class', 'foo'); is ($n->attribute('class'), 'foo', 'get_attribute("class") works'); # N inherits from class "node" is ($n->attribute('color'),'red', 'inherited red from class "node"'); is ($m->attribute('color'),'red', 'inherited red from class "node"'); $graph->set_attribute('node', 'color', 'inherit'); is ($n->attribute('color'),'green', 'inherited green from graph'); is ($m->attribute('color'),'green', 'inherited green from graph'); $m->set_attribute('color', 'blue'); is ($m->attribute('color'),'blue', 'got blue'); ############################################################################# # raw_attribute() and get_raw_attributes() $graph = Graph::Easy->new(); ($n,$m,$e) = $graph->add_edge('A','B'); $graph->set_attribute('node', 'color', 'red'); $graph->set_attribute('color', 'green'); $n->set_attribute('color', 'inherit'); $n->set_attribute('class', 'foo'); $m->set_attribute('color', 'blue'); # N inherits from class "node" is ($n->raw_attribute('fill'), undef, 'attribute fill not set'); is ($n->raw_attribute('color'), 'red', 'attribute color set to inherit, so we inherit red'); is ($graph->raw_attribute('fill'), undef, 'attribute fill not set on graph'); is ($graph->raw_attribute('color'), 'green', 'attribute color set to green on graph'); is ($m->raw_attribute('color'), 'blue', 'attribute color set to blue on node B'); is ($m->raw_attribute('fill'), undef, 'attribute fill not set on node m'); my $str = _att_to_str($n->raw_attributes()); is ($str, 'color=>red;', 'node A has only color set'); $str = _att_to_str($m->raw_attributes()); is ($str, 'color=>blue;', 'node B has only color set'); $str = _att_to_str($graph->raw_attributes()); is ($str, 'color=>green;', 'graph has only color set'); $str = _att_to_str($e->raw_attributes()); is ($str, '', 'edge has no attributes set'); ############################################################################# # virtual attribute 'class' $graph = Graph::Easy->new(); ($n,$m,$e) = $graph->add_edge('Bonn','Berlin'); is ($graph->attribute('class'), '', 'class graph'); is ($n->attribute('class'), '', 'class node'); is ($e->attribute('class'), '', 'class edge'); $n->set_attribute('class', 'anon'); is ($n->attribute('class'), 'anon', 'class anon for node Bonn'); $e->set_attribute('class', 'foo'); is ($e->attribute('class'), 'foo', 'class foo for edge'); ############################################################################# # attribute 'link' $graph = Graph::Easy->new(); ($n,$m,$e) = $graph->add_edge('Bonn','Berlin'); $n->set_attribute('autolink','name'); # default linkbase + autolink from name is ($n->link(), '/wiki/index.php/Bonn', "link() for 'Bonn'"); is ($graph->link(), '', "no link on graph"); $graph->set_attribute('autolink','name'); # graph doesn't have a name => no link is ($graph->link(), '', "link() is 'Bonn'"); $graph->set_attribute('link','Berlin'); # default linkbase + link is ($graph->link(), '/wiki/index.php/Berlin', "link() for graph"); 1; ############################################################################# sub _att_to_str { my $out = shift; my $str = ''; for my $k (sort keys %$out) { $str .= $k . '=>' . $out->{$k} . ';'; } $str; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/pod.t�����������������������������������������������������������������������������000444��000764��000764�� 2710�12322253245� 15251� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; my $tests; BEGIN { $tests = 23; plan tests => $tests; chdir 't' if -d 't'; use lib '../lib'; }; SKIP: { skip( 'Test::Pod not installed on this system', $tests ) unless do { eval "use Test::Pod;"; $@ ? 0 : 1; }; pod_file_ok( '../lib/Graph/Easy.pm' ); pod_file_ok( '../lib/Graph/Easy/Base.pm' ); pod_file_ok( '../lib/Graph/Easy/Layout.pm' ); pod_file_ok( '../lib/Graph/Easy/Layout/Chain.pm' ); pod_file_ok( '../lib/Graph/Easy/Layout/Scout.pm' ); pod_file_ok( '../lib/Graph/Easy/Layout/Path.pm' ); pod_file_ok( '../lib/Graph/Easy/Layout/Grid.pm' ); pod_file_ok( '../lib/Graph/Easy/Layout/Repair.pm' ); pod_file_ok( '../lib/Graph/Easy/Node.pm' ); pod_file_ok( '../lib/Graph/Easy/Edge.pm' ); pod_file_ok( '../lib/Graph/Easy/Group.pm' ); pod_file_ok( '../lib/Graph/Easy/Parser.pm' ); pod_file_ok( '../lib/Graph/Easy/Parser/Graphviz.pm' ); pod_file_ok( '../lib/Graph/Easy/Parser/VCG.pm' ); pod_file_ok( '../lib/Graph/Easy/Attributes.pm' ); pod_file_ok( '../lib/Graph/Easy/As_ascii.pm' ); pod_file_ok( '../lib/Graph/Easy/As_txt.pm' ); pod_file_ok( '../lib/Graph/Easy/As_graphviz.pm' ); pod_file_ok( '../lib/Graph/Easy/Edge/Cell.pm' ); pod_file_ok( '../lib/Graph/Easy/Node/Anon.pm' ); pod_file_ok( '../lib/Graph/Easy/Node/Cell.pm' ); pod_file_ok( '../lib/Graph/Easy/Group/Cell.pm' ); pod_file_ok( '../lib/Graph/Easy/Group/Anon.pm' ); } ��������������������������������������������������������Graph-Easy-0.75/t/gv.t������������������������������������������������������������������������������000444��000764��000764�� 11060�12322253245� 15121� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; use File::Spec; sub _write_utf8_file { my ($out_path, $contents) = @_; open my $out_fh, '>:encoding(utf8)', $out_path or die "Cannot open '$out_path' for writing - $!"; print {$out_fh} $contents; close($out_fh); return; } # test graphviz (dot) file input => ASCII output # and back to as_txt() again BEGIN { plan tests => 140; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::Parser") or die($@); use_ok ("Graph::Easy::Parser::Graphviz") or die($@); }; my @warnings; ############################################################################# # override the warn method to catch warnigs { no warnings 'redefine'; package Graph::Easy::Base; sub warn { my ($self,$msg) = @_; push @warnings, $msg; } } ############################################################################# # parser object my $def_parser = Graph::Easy::Parser->new(debug => 0); is (ref($def_parser), 'Graph::Easy::Parser'); is ($def_parser->error(), '', 'no error yet'); my $dot_parser = Graph::Easy::Parser::Graphviz->new(debug => 0); is (ref($dot_parser), 'Graph::Easy::Parser::Graphviz'); is ($dot_parser->error(), '', 'no error yet'); my $dir = File::Spec->catdir('in','dot'); opendir DIR, $dir or die ("Cannot read dir '$dir': $!"); my @files = readdir(DIR); closedir(DIR); opendir DIR, 'dot' or die ("Cannot read dir 'dot': $!"); push @files, readdir(DIR); closedir(DIR); binmode (STDERR, ':utf8') or die ("Cannot do binmode(':utf8') on STDERR: $!"); binmode (STDOUT, ':utf8') or die ("Cannot do binmode(':utf8') on STDOUT: $!"); eval { require Test::Differences; }; foreach my $f (sort { $a =~ /^(\d+)/; my $a1 = $1 || '1'; $b =~ /^(\d+)/; my $b1 = $1 || '1'; $a1 <=> $b1 || $a cmp $b; } @files) { my $file = File::Spec->catfile($dir,$f); my $parser = $def_parser; if (!-f $file) { $file = File::Spec->catfile('dot',$f); next unless -f $file; # only files # for files in t/dot, we need to use the Graphviz parser as they # look like Graph::Easy text to the normal parser, which then fails $parser = $dot_parser; } next unless $f =~ /\.dot/; # ignore anything else print "# at $f\n"; my $txt = readfile($file); $parser->reset(); my $graph = $parser->from_text($txt); # reuse parser object $f =~ /^(\d+)/; my $nodes = $1; if (!defined $graph) { fail ("Graphviz input was invalid: " . $parser->error()); next; } is (scalar $graph->nodes(), $nodes, "$nodes nodes"); # for slow testing machines $graph->timeout(20); my $ascii = $graph->as_ascii(); my $of = $f; $of =~ s/\.dot/\.txt/; my $out_path = File::Spec->catfile('out','dot',$of); my $out = readfile($out_path); $out =~ s/(^|\n)#[^# ]{2}.*\n//g; # remove comments $out =~ s/\n\n\z/\n/mg; # remove empty lines # print "txt: $txt\n"; # print "ascii: $ascii\n"; # print "should: $out\n"; if (! is ($ascii, $out, "from $f")) { if ($ENV{__SHLOMIF__UPDATE_ME}) { _write_utf8_file($out_path, $ascii); } if (defined $Test::Differences::VERSION) { Test::Differences::eq_or_diff ($ascii, $out); } else { fail ("Test::Differences not installed"); } } # if the txt output differes, read it in my $f_txt = File::Spec->catfile('txt','dot',$of); if (-f $f_txt) { $txt = readfile($f_txt); } $graph->debug(1); if (! is ($graph->as_txt(), $txt, "$f as_txt")) { if ($ENV{__SHLOMIF__UPDATE_ME}) { _write_utf8_file($f_txt, scalar( $graph->as_txt() )); } if (defined $Test::Differences::VERSION) { Test::Differences::eq_or_diff ($graph->as_txt(), $txt); } else { fail ("Test::Differences not installed"); } } # print a debug output my $debug = $ascii; $debug =~ s/\n/\n# /g; print "# Generated:\n#\n# $debug\n"; } # check that only the expected warnings were generated use Data::Dumper; print STDERR Dumper(\@warnings) unless is (scalar @warnings, 6, 'Got exactly 6 warnings'); my $i = 0; for my $name (qw/bar foo pname fname bar brabble/) { like ($warnings[$i], qr/Ignoring unknown attribute '$name' for class/, "Got warning about $name"); $i++; } 1; sub readfile { my ($file) = @_; open my $FILE, $file or die ("Cannot read file $file: $!"); binmode ($FILE, ':utf8') or die ("Cannot do binmode(':utf8') on $FILE: $!"); local $/ = undef; # slurp mode my $doc = <$FILE>; close $FILE; $doc; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/gdl.t�����������������������������������������������������������������������������000444��000764��000764�� 5643�12322253245� 15245� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; use File::Spec; # test GDL (Graph Description Language) file input => ASCII output # and back to as_txt() again BEGIN { plan tests => 20; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::Parser") or die($@); use_ok ("Graph::Easy::Parser::VCG") or die($@); }; ############################################################################# # parser object my $def_parser = Graph::Easy::Parser->new(debug => 0); is (ref($def_parser), 'Graph::Easy::Parser'); is ($def_parser->error(), '', 'no error yet'); my $dir = File::Spec->catdir('in','gdl'); opendir DIR, $dir or die ("Cannot read dir $dir: $!"); my @files = readdir(DIR); closedir(DIR); binmode (STDERR, ':utf8') or die ("Cannot do binmode(':utf8') on STDERR: $!"); binmode (STDOUT, ':utf8') or die ("Cannot do binmode(':utf8') on STDOUT: $!"); eval { require Test::Differences; }; foreach my $f (sort { $a =~ /^(\d+)/; my $a1 = $1 || '1'; $b =~ /^(\d+)/; my $b1 = $1 || '1'; $a1 <=> $b1 || $a cmp $b; } @files) { my $file = File::Spec->catfile($dir,$f); my $parser = $def_parser; next unless $f =~ /\.gdl/; # ignore anything else print "# at $f\n"; my $txt = readfile($file); $parser->reset(); my $graph = $parser->from_text($txt); # reuse parser object $f =~ /^(\d+)/; my $nodes = $1; if (!defined $graph) { fail ("GDL input was invalid: " . $parser->error()); next; } is (scalar $graph->nodes(), $nodes, "$nodes nodes"); # for slow testing machines $graph->timeout(20); my $ascii = $graph->as_ascii(); my $of = $f; $of =~ s/\.gdl/\.txt/; my $out = readfile(File::Spec->catfile('out','gdl',$of)); $out =~ s/(^|\n)#[^# ]{2}.*\n//g; # remove comments $out =~ s/\n\n\z/\n/mg; # remove empty lines # print "txt: $txt\n"; # print "ascii: $ascii\n"; # print "should: $out\n"; if (! is ($ascii, $out, "from $f")) { if (defined $Test::Differences::VERSION) { Test::Differences::eq_or_diff ($ascii, $out); } else { fail ("Test::Differences not installed"); } } # if the txt output differes, read it in my $f_txt = File::Spec->catfile('txt','gdl',$of); if (-f $f_txt) { $txt = readfile($f_txt); } $graph->debug(1); if (! is ($graph->as_txt(), $txt, "$f as_txt")) { if (defined $Test::Differences::VERSION) { Test::Differences::eq_or_diff ($graph->as_txt(), $txt); } else { fail ("Test::Differences not installed"); } } # print a debug output my $debug = $ascii; $debug =~ s/\n/\n# /g; print "# Generated:\n#\n# $debug\n"; } 1; sub readfile { my ($file) = @_; open my $FILE, $file or die ("Cannot read file $file: $!"); binmode ($FILE, ':utf8') or die ("Cannot do binmode(':utf8') on $FILE: $!"); local $/ = undef; # slurp mode my $doc = <$FILE>; close $FILE; $doc; } ���������������������������������������������������������������������������������������������Graph-Easy-0.75/t/graph-maker.t���������������������������������������������������������������������000444��000764��000764�� 3041�12322253245� 16663� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test interface being compatible to Graph.pm so that Graph::Maker works: use Test::More; use strict; BEGIN { plan tests => 15; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ('Graph::Easy', qw/ new add_vertex add_vertices has_edge vertices add_path add_cycle /); ############################################################################# my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); $graph->add_vertex('A'); my $A = $graph->node('A'); is (scalar $graph->vertices(), 1, '1 vertex'); my @nodes = $graph->vertices(); is ($nodes[0], $A, '1 vertex'); my $edge = $graph->add_edge ('A', 'B'); is ($graph->has_edge('A','B'), 1, 'has_edge()'); is ($graph->has_edge($A,'B'), 1, 'has_edge()'); is ($graph->has_edge('C','B'), 0, 'has_edge()'); $graph->add_vertices('A','B','C'); is (scalar $graph->vertices(), 3, '3 vertices'); $graph->set_vertex_attribute('A','fill','#deadff'); my $atr = $graph->get_vertex_attribute('A','fill'); is ($atr, $A->attribute('fill'), 'attribute got set'); ############################################################################# ## add_cycle and add_path # $graph = Graph::Easy->new(); $graph->add_path('A','B','C'); is (scalar $graph->vertices(), 3, '3 vertices'); is (scalar $graph->edges(), 2, '2 vertices'); $graph = Graph::Easy->new(); $graph->add_cycle('A','B','C'); is (scalar $graph->vertices(), 3, '3 vertices'); is (scalar $graph->edges(), 3, '3 vertices'); �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/heap.t����������������������������������������������������������������������������000444��000764��000764�� 5536�12322253245� 15415� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test the Heap structure for A* use Test::More; use strict; BEGIN { plan tests => 72; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Layout") or die($@); use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy::Heap", qw/ add extract_top elements delete /); my $heap = Graph::Easy::Heap->new(); ############################################################################# # heap tests is (ref($heap), 'Graph::Easy::Heap', 'new() worked'); is ($heap->elements(), 0, '0 elements'); # add some elements (some of them with the same weight) $heap->add( [ 1, '', 0,0] ); is ($heap->elements(), 1, '1 elements'); $heap->add( [ 1, '', 1,0] ); is ($heap->elements(), 2, '2 elements'); $heap->add( [ 2, '', 2,0] ); is ($heap->elements(), 3, '3 elements'); $heap->add( [ 2, '', 3,0] ); is ($heap->elements(), 4, '4 elements'); $heap->add( [ 2, '', 4,0] ); is ($heap->elements(), 5, '5 elements'); $heap->add( [ 2, '', 5,0] ); is ($heap->elements(), 6, '6 elements'); $heap->add( [ 3, '', 6,0] ); is ($heap->elements(), 7, '7 elements'); # extract them again for (my $i = 0; $i < 7; $i++) { my $e = $heap->extract_top(); is ($e->[2], $i, "elem $i extracted"); } ############################################################################# # add some elements (some of them with the same weight) $heap->add( [ 1, '', 0,0] ); is ($heap->elements(), 1, '1 elements'); $heap->add( [ 1, '', 1,0] ); is ($heap->elements(), 2, '2 elements'); $heap->add( [ 2, '', 2,0] ); is ($heap->elements(), 3, '3 elements'); $heap->add( [ 2, '', 3,0] ); is ($heap->elements(), 4, '4 elements'); $heap->add( [ 2, '', 4,0] ); is ($heap->elements(), 5, '5 elements'); $heap->add( [ 2, '', 5,0] ); is ($heap->elements(), 6, '6 elements'); $heap->add( [ 3, '', 7,0] ); is ($heap->elements(), 7, '7 elements'); # supposed to end at the end of the row of "2" $heap->add( [ 2, '', 6,0] ); is ($heap->elements(), 8, '8 elements'); # extract them again for (my $i = 0; $i < 8; $i++) { my $e = $heap->extract_top(); is ($e->[2], $i, "elem $i extracted"); } is ($heap->elements(), 0, '0 elements'); ############################################################################# # overflow the simple algorithm (more than 16) and use binary search for add for (my $i = 0; $i < 8; $i++) { $heap->add( [ 1, '', $i,0] ); } is ($heap->elements(), 8, '8 elements'); for (my $i = 0; $i < 7; $i++) { $heap->add( [ 2, '', $i+8,0] ); } is ($heap->elements(), 15, '15 elements'); for (my $i = 0; $i < 16; $i++) { $heap->add( [ 3, '', $i+8+8,0] ); } is ($heap->elements(), 31, '31 elements'); # supposed to end at the end of the row of "2" $heap->add( [ 2, '', 15,0] ); is ($heap->elements(), 32, '32 elements'); # extract them again for (my $i = 0; $i < 32; $i++) { my $e = $heap->extract_top(); is ($e->[2], $i, "elem $i extracted"); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/layout_r.t������������������������������������������������������������������������000444��000764��000764�� 1432�12322253245� 16325� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test the recursive layouter use Test::More; use strict; BEGIN { plan tests => 3; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::As_txt") or die($@); require_ok ("Graph::Easy::As_ascii") or die($@); }; ############################################################################# # laying out a group of nodes my $g = Graph::Easy->new(); my $gr = $g->add_group('Am Rhein:'); my ($a,$b,$e) = $g->add_edge('St. Goarshausen','St. Goar', 'Ferry'); $gr->add_node($a); $gr->add_node($b); #$g->{debug} = 1; # this is only called for the graph itself, so force it beforehand $g->_edges_into_groups(); $gr->_layout(); #use Data::Dumper; #print STDERR Dumper($gr->{cells}); #print $g->as_ascii(); ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/cluster.t�������������������������������������������������������������������������000444��000764��000764�� 2656�12322253245� 16161� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 12; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; ############################################################################# # basic tests my $graph = Graph::Easy->new(); my ($first, $second, $edge) = $graph->add_edge('first', 'second'); $second->set_attribute('origin', $first->{name}); is (join(",", $second->offset()), '0,0', 'offset is 0,0'); is ($second->origin(), $first, 'origin is $first'); ############################################################################# # graph tests # node placement (clustered) $graph = Graph::Easy->new(); $first = $graph->add_node('A'); $second = $graph->add_node('B'); $second->relative_to($first, 1,0); is (scalar $graph->nodes(), 2, 'two nodes'); my $cells = { }; my $parent = { cells => $cells }; is ($first->_do_place(1,1,$parent), 1, 'node can be placed'); is ($cells->{"1,1"}, $first, 'first was really placed'); is ($cells->{"2,1"}, $second, 'second node was placed, too'); is (scalar keys %$cells, 2, 'two nodes placed'); # 1,0 and 2,0 are blocked, so 0,0+1,0; 1,0+2,0 and 2,0+3,0 are blocked, too: is ($first->_do_place(0,1,$parent), 0, 'node cannot be placed again'); is ($first->_do_place(1,1,$parent), 0, 'node cannot be placed again'); is ($first->_do_place(2,1,$parent), 0, 'node cannot be placed again'); is (scalar keys %$cells, 2, 'two nodes placed'); ����������������������������������������������������������������������������������Graph-Easy-0.75/t/astar.t���������������������������������������������������������������������������000444��000764��000764�� 7341�12322253245� 15606� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 21; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy", qw/ new _find_path_astar _astar_distance _astar_modifier _astar_edge_type /); can_ok ("Graph::Easy::Heap", qw/ new extract_top add /); use Graph::Easy::Edge::Cell qw/ EDGE_N_E EDGE_N_W EDGE_S_E EDGE_S_W EDGE_HOR EDGE_VER /; ############################################################################# # _distance tests my $dis = 'Graph::Easy::_astar_distance'; my $mod = 'Graph::Easy::_astar_modifier'; my $typ = 'Graph::Easy::_astar_edge_type'; { no strict 'refs'; is (&$dis( 0,0, 3,0 ), 3 + 0 + 0, '0,0 => 3,0: 4 (no corner)'); is (&$dis( 3,0, 3,5 ), 0 + 5 + 0, '3,0 => 3,5: 5 (no corner)'); is (&$dis( 0,0, 3,5 ), 3 + 5 + 1, '0,0 => 3,5: 3+5+1 (one corner)'); is (&$mod( 0,0 ), 1, 'modifier(0,0) is 1'); is (&$mod( 0,0, 1,0, 0,1 ), 7, 'going round a bend is 7'); is (&$mod( 0,0, 1,0, -1,0 ), 1, 'going straight is 1'); is (&$typ( 0,0, 1,0, 2,0 ), EDGE_HOR, 'EDGE_HOR'); is (&$typ( 2,0, 3,0, 4,0 ), EDGE_HOR, 'EDGE_HOR'); is (&$typ( 4,0, 3,0, 2,0 ), EDGE_HOR, 'EDGE_HOR'); is (&$typ( 2,0, 2,1, 2,2 ), EDGE_VER, 'EDGE_VER'); is (&$typ( 2,2, 2,3, 2,4 ), EDGE_VER, 'EDGE_VER'); is (&$typ( 2,2, 2,1, 2,0 ), EDGE_VER, 'EDGE_VER'); is (&$typ( 0,0, 1,0, 1,1 ), EDGE_S_W, 'EDGE_S_W'); is (&$typ( 1,1, 1,0, 0,0 ), EDGE_S_W, 'EDGE_S_W'); is (&$typ( 1,1, 1,0, 2,0 ), EDGE_S_E, 'EDGE_S_E'); is (&$typ( 2,0, 1,0, 1,1 ), EDGE_S_E, 'EDGE_S_E'); is (&$typ( 0,0, 1,0, 1,-1 ), EDGE_N_W, 'EDGE_N_W'); is (&$typ( 1,-1, 1,0, 0,0 ), EDGE_N_W, 'EDGE_N_W'); #print &$typ( 1,2, 2,2, 2,1),"\n"; #print &$typ( 0,2, 1,2, 2,2),"\n"; #print &$typ( 0,1, 0,2, 1,2),"\n"; } exit; ############################################################################# # path finding tests my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); my $node = Graph::Easy::Node->new( name => 'Bonn' ); my $node2 = Graph::Easy::Node->new( name => 'Berlin' ); my $cells = {}; place($cells, $node, 0, 0); place($cells, $node2, 3, 0); #my $path = $graph->_find_path_astar( $cells, $node, $node2 ); #is_deeply ($path, [ 0,0, 1,0, 2,0, 3,0 ], '0,0 => 1,0 => 2,0 => 3,0'); place($cells, $node, 0, 0); place($cells, $node2, 3, 1); #$path = $graph->_find_path_astar( $cells, $node, $node2 ); #is_deeply ($path, [ 0,0, 1,0, 2,0, 3,0, 3,1 ], '0,0 => 1,0 => 2,0 => 3,0 => 3,1'); $cells = {}; place($cells, $node, 5, 7); $node2->{cx} = 2; $node2->{cy} = 2; place($cells, $node2, 14, 14); block ($cells,13,14); block ($cells,14,13); block ($cells,13,15); block ($cells,15,13); block ($cells,14,16); block ($cells,16,14); #block ($cells,3,11); #block ($cells,3,10); #block ($cells,4,9); #block ($cells,5,9); #block ($cells,5,11); #block ($cells,5,13); #for (5..15) # { # block ($cells,15,$_); # block ($cells,$_,5); # block ($cells,$_,15); # } #block ($cells,15,16); #block ($cells,14,17); #block ($cells,3,16); $graph->{cells} = $cells; $graph->{_astar_bias} = 0; my ($p, $closed, $open) = $graph->_find_path_astar($node, $node2 ); #use Data::Dumper; print Dumper($cells); open FILE, ">test.html" or die ("Cannot write test.html: $!"); print FILE $graph->_map_as_html($cells, $p, $closed, $open); close FILE; sub block { my ($cells, $x,$y) = @_; $cells->{"$x,$y"} = 1; } sub place { my ($cells, $node,$x,$y) = @_; my $c = ($node->{cx} || 1) - 1; my $r = ($node->{cy} || 1) - 1; $node->{x} = $x; $node->{y} = $y; for my $rr (0..$r) { my $cy = $y + $rr; for my $cc (0..$c) { my $cx = $x + $cc; $cells->{"$cx,$cy"} = $node; } } diag ("Placing $node->{name} at $node->{x},$node->{y}\n"); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/parser_dot.t����������������������������������������������������������������������000444��000764��000764�� 24066�12322253245� 16661� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test Graph::Easy::Parser::Graphviz use Test::More; use strict; use utf8; BEGIN { plan tests => 126; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Parser::Graphviz") or die($@); }; can_ok ("Graph::Easy::Parser::Graphviz", qw/ new from_text from_file reset error use_class _parse_attributes _remap_attributes _match_comment _build_match_stack /); binmode (STDERR, ':utf8') or die ("Cannot do binmode(':utf8') on STDERR: $!"); binmode (STDOUT, ':utf8') or die ("Cannot do binmode(':utf8') on STDOUT: $!"); ############################################################################# # parser object my $c = 'Graph::Easy::Parser::Graphviz'; my $parser = Graph::Easy::Parser::Graphviz->new( debug => 0 ); is (ref($parser), $c); is ($parser->error(), '', 'no error yet'); ############################################################################# # from_text() and from_file() with Class->method style calling my $graph = Graph::Easy::Parser::Graphviz->from_text('digraph G1 { "A" }'); is (ref($graph), 'Graph::Easy'); is ($graph->nodes(), 1, 'one node'); $graph = Graph::Easy::Parser::Graphviz->from_text('graph G { run -- init }'); is (ref($graph), 'Graph::Easy'); is ($graph->nodes(), 2, 'two nodes'); is ($graph->edges(), 1, 'one edge'); my @a = $graph->nodes(); for (@a) { $_ = $_->{name}; } is (join (",", sort @a), 'init,run', 'two nodes'); ############################################################################# # matching nodes my $node_qr = $parser->_match_node(); like ('"A"', $node_qr, '"A" is a node'); like ('Bonn12', $node_qr, 'Bonn12 is a node'); like ('"Bonn"', $node_qr, '"Bonn" is a node'); ############################################################################# # scopes and scope attributes $graph = Graph::Easy::Parser::Graphviz->from_text( <<EOG digraph GRAPH_0 { node [ color=red ] Red node [ color=green ] Green { node [ color=blue ] Blue } Green2 } EOG ); is (scalar $graph->nodes(), 4, 'scopes: four nodes'); for my $n (qw/Red Green Green2 Blue/) { my $node = $graph->node($n); my $color = lc($node->{name}); $color =~ s/\d//g; is ($node->attribute('color'), $color, "scopes: $n => $color"); } ############################################################################# # test new scope only overriding new attributes plus one source attribute # mapping to two target attributes (shape=doublecircle => shape: circle, # border-style: double) $graph = Graph::Easy::Parser::Graphviz->from_text( <<EOG1 digraph GRAPH_0 { node [ color=red, shape=doublecircle ] Red node [ color=green ] Green { node [ color=blue ] Blue } Green2 } EOG1 ); is (scalar $graph->nodes(), 4, 'scopes: four nodes'); for my $n (qw/Red Green Green2 Blue/) { my $node = $graph->node($n); my $color = lc($node->{name}); $color =~ s/\d//g; is ($node->attribute('color'), $color, "scopes: $n => $color"); is ($node->attribute('shape'), 'circle', "scopes: ${n}'s shope is 'circle'"); is ($node->attribute('border-style'), 'double', "scopes: ${n}'s border-style is 'doube'"); } ############################################################################# # test "a -> { b c d } $graph = Graph::Easy::Parser::Graphviz->from_text( <<EOG2 digraph GRAPH_0 { a -> { b c d } } EOG2 ); is (scalar $graph->nodes(), 4, 'scopes: four nodes'); is (scalar $graph->edges(), 3, 'scopes: three egdes'); ############################################################################# # color parsing my $tests = { '1.0,0.0,1.0' => 'rgb(255,255,255)', # white '1.0,0.0,0.5' => 'rgb(128,128,128)', # grey '1.0,0.0,0.0' => 'rgb(0,0,0)', # black '0.0,1.0,1.0' => 'rgb(255,0,0)', # red '1.0,1.0,1.0' => 'rgb(255,0,0)', # red '1.0,1.0,0.5' => 'rgb(128,0,0)', # darkred '0.1666,1.0,1.0' => 'rgb(255,255,0)', # yellow '0.3333,1.0,1.0' => 'rgb(0,255,0)', # green '0.3333,1.0,0.5' => 'rgb(0,128,0)', # darkgreen '0.5,1.0,1.0' => 'rgb(0,255,255)', # cyan '0.6666,1.0,1.0' => 'rgb(0,0,255)', # blue '0.8333,1.0,1.0' => 'rgb(255,0,255)', # magenta '0.482,0.714,0.878' => 'rgb(64,224,207)', # turquoise '0.051,0.718,0.627' => 'rgb(160,80,45)', # sienna }; for my $test (keys %$tests) { my $color = 'rgb(' . join(",", Graph::Easy::_hsv_to_rgb(split/,/, $test) ) . ')'; my $result = $tests->{$test}; is ($color, $result, "hsv('$test') results in '$result'"); $result =~ /([0-9]+),([0-9]+),([0-9]+)/; my $hex = sprintf("#%02x%02x%02x", $1, $2, $3); $color = Graph::Easy->color_as_hex( 'hsv(' . $test .')' ); is ($color, $hex, "color_as_hex(hsv($test))"); } my $color = Graph::Easy::Parser::Graphviz->_from_graphviz_color('color',"/accent4/4"); is ($color, '#ffff99', "/accent4/4 works"); ############################################################################# # HSL colors my $hsl_tests = { '0,0.0,1.0' => 'rgb(255,255,255)', # white '0,0.0,0.5' => 'rgb(128,128,128)', # grey '0,0.0,0.0' => 'rgb(0,0,0)', # black '0,1.0,0.5' => 'rgb(255,0,0)', # red '0,1.0,0.75' => 'rgb(255,128,128)', # lightred '360,1.0,0.5' => 'rgb(255,0,0)', # red '120,1.0,0.75' => 'rgb(128,255,128)', # light green '240,1.0,0.25' => 'rgb(0,0,128)', # medium blue '60,1.0,0.5' => 'rgb(255,255,0)', # yellow '300,1.0,0.5' => 'rgb(255,0,255)', # magenta }; for my $test (keys %$hsl_tests) { my $color = 'rgb(' . join(",", Graph::Easy::_hsl_to_rgb(split/,/, $test) ) . ')'; my $result = $hsl_tests->{$test}; is ($color, $result, "hsl('$test') results in '$result'"); $result =~ /([0-9]+),([0-9]+),([0-9]+)/; my $hex = sprintf("#%02x%02x%02x", $1, $2, $3); $color = Graph::Easy->color_as_hex( 'hsl(' . $test .')' ); } ############################################################################# ############################################################################# # general pattern tests my $line = 0; foreach (<DATA>) { chomp; next if $_ =~ /^\s*\z/; # skip empty lines next if $_ =~ /^#/; # skip comments $parser->reset(); die ("Illegal line $line in testdata") unless $_ =~ /^(.*)\|([^\|]*)$/; my ($in,$result) = ($1,$2); my $txt = "digraph G {\n" . $in . "\n}"; $txt =~ s/\\n/\n/g; # insert real newlines eval { $graph = $parser->from_text($txt); # reuse parser object }; if (!defined $graph) { fail($parser->error()); next; } if ($graph->error) { fail($graph->error()); next; } my $got = scalar $graph->nodes(); my @edges = $graph->edges(); my $es = 0; foreach my $e (sort { $a->label() cmp $b->label() } @edges) { $es ++ if $e->label() ne ''; } $got .= '+' . $es if $es > 0; for my $n ( sort { $a->name() cmp $b->name() || $b->{att}->{label} cmp $a->{att}->{label} } ($graph->nodes(), $graph->edges()) ) { $got .= "," . $n->label() unless $n->label() =~ /^\s?\z/ || $n->label() eq $n->name(); $got .= "," . $n->name() unless $n->name() eq ''; } my @groups = $graph->groups(); for my $gr ( @groups ) { $got .= ',' . $gr->name(); } is ($got, $result, $in); } __DATA__ |0 # anon nodes ""|1,#0 ""->""|2,#0,#1 "Bonn"->""|2,#1,Bonn ""->"Bonn"|2,#0,Bonn # lines starting with '#' are discared "Bonn"\n#"Berlin"|1,Bonn # First "#0" and "#1" are created, and ID 2 goes to the edge. # then "#3" is created, and ID 4 goes to the second edge. Therefore # "#0" and "#3" are the two anon nodes. ""->"Bonn"->""|3,#0,#3,Bonn # nodes with _ and reserved text "node" node_1 -> node_2 |2,node_1,node_2 # "foo"+"bar style continuations "frankfurt"+" (oder)"|1,frankfurt (oder) "frankfurt" + " (oder)"|1,frankfurt (oder) "frankfurt" + " (oder)"|1,frankfurt (oder) "frank" + "furt" + " (oder)"|1,frankfurt (oder) # multiple spaces in nodes " Bonn and Berlin "|1,Bonn and Berlin " Bonn and Berlin "|1,Bonn and Berlin " Bonn and Berlin "|1,Bonn and Berlin " Bonn \n and Berlin "|1,Bonn and Berlin " Bonn \n\n and Berlin "|1,Bonn and Berlin # normal tests " Berlin "|1,Berlin "Hamburg"|1,Hamburg " Dresden " |1,Dresden " Pirna " [ color="red" ]|1,Pirna " Bonn " -> " Berlin "|2,Berlin,Bonn " Bonn " -> " Berlin "\n"Berlin" -> "Frankfurt"|3,Berlin,Bonn,Frankfurt " Bonn \( \#1 \) " -> " Berlin "\n"Berlin" -> "Frankfurt"|3,Berlin,Bonn ( #1 ),Frankfurt " Bonn " [ color=red ]\n"Berlin" -> "Frankfurt"|3,Berlin,Bonn,Frankfurt "Bonn"[color=red]\n"Berlin"->"Frankfurt"|3,Berlin,Bonn,Frankfurt " Bonn " -> " Berlin "\n"Berlin" -> "Frankfurt"|3,Berlin,Bonn,Frankfurt " Bonn " -> "Berlin" [color=blue] \n"Berlin" -> "Frankfurt"|3,Berlin,Bonn,Frankfurt Bonn -> Berlin [color=blue] \nBerlin -> Frankfurt|3,Berlin,Bonn,Frankfurt # funky node names and colors _exit -- run [ color = "0.001 0.002 0.4" ]|2,_exit,run # comments " Bonn " -> " Berlin " [ color="#A0a0A0" ] // failed " Bonn " -> [ Ulm ]|2,Berlin,Bonn " Bonn " -> " Berlin " [ color="#A0a0A0" ] //80808080 failed [ Bonn ] -> [ Ulm ]|2,Berlin,Bonn " Bonn " -> " Berlin " [ color="#A0a0A0" ] //808080 failed [ Bonn ] -> [ Ulm ]|2,Berlin,Bonn " Bonn " -> " Berlin " [ color="#A0a0A0" ] /*808080 failed [ Bonn ] -> [ Ulm ]*/|2,Berlin,Bonn " Bonn " -> " Berlin " [ color="#A0a0A0" ] /*808080 failed\n [ Bonn ] -> [ Ulm ]*/|2,Berlin,Bonn " Bonn /* * comment * */ " -> " Berlin " /*808080 failed\n [ Bonn ] -> [ Ulm ]*/|2,Berlin,Bonn /* * comment * */ # node chains " Bonn " -> " Berlin "\n -> " Kassel "|3,Berlin,Bonn,Kassel # node chains across line-endings a1 -> a2\na2 -> a3|3,a1,a2,a3 # attributes w/ and w/o value graph [ center ]|0 graph [ center=1 ]|0 graph [ center="" ]|0 graph [ center="1" ]|0 graph [ center, truecolor ]|0 graph [ center=1, truecolor ]|0 graph [ center="", truecolor ]|0 graph [ center="1", truecolor ]|0 edge [ ]|0 edge [\n ]|0 edge [ f=1 ]|0 # ']' inside attributes "node" [ shape="box" label="[U]" color="red" ]|1,[U],node node [ label="[U]" ]|0 # HTML entities names "> ü €   < & &;; &$;"|1,> ü € < & ; $ # v-- non-breakable-space! "HTML" [label="> ü €   < & &;; &$;"]|1,> ü € < & ; $,HTML # color with no leading 0: "node" [ color=".7 .2 1.2"]|1,node ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/nesting.t�������������������������������������������������������������������������000444��000764��000764�� 5646�12322253245� 16151� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test nesting of groups use Test::More; use strict; BEGIN { plan tests => 34; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Group") or die($@); use_ok ("Graph::Easy::Group::Cell") or die($@); use_ok ("Graph::Easy") or die($@); }; ############################################################################# # $group->add_member($inner); my $graph = Graph::Easy->new(); my $group = $graph->add_group('Outer'); is (ref($group), 'Graph::Easy::Group'); is ($group->error(), '', 'no error yet'); my $inner = $graph->add_group('Inner'); $group->add_member($inner); check_groups($group,$inner); ############################################################################# # groups_within(): is ($graph->groups_within(), 2, '2 groups'); is ($graph->groups_within(-1), 2, '2 groups'); is ($graph->groups_within(0), 1, '1 group in outer'); is ($graph->groups_within(1), 2, '2 groups in outer+inner'); is ($graph->groups_within(2), 2, 'no more groups'); ############################################################################# # $inner->add_to_group($group); $graph = Graph::Easy->new(); $group = $graph->add_group('Outer'); is (ref($group), 'Graph::Easy::Group'); is ($group->error(), '', 'no error yet'); $inner = $graph->add_group('Inner'); $inner->add_to_group($group); check_groups($group,$inner); ############################################################################# # groups_within(): my $inner_2 = $graph->add_group('Inner 2'); my $inner_3 = $graph->add_group('Inner 3'); # Level Groups Sum # 0: Outer 1 # 1: Inner Inner 3 3 # 2: Inner 2 4 $inner_2->add_to_group($inner); $inner_3->add_to_group($group); is ($graph->groups_within(), 4, '4 groups'); is ($graph->groups_within(-1), 4, '4 groups'); is ($graph->groups_within(0), 1, '1 group in outer'); is ($graph->groups_within(1), 3, '3 groups in outer+inner'); is ($graph->groups_within(2), 4, '4 groups in total'); # also test calling add_group() with a scalar on another group: my $inner_4 = $group->add_group('Inner 4'); # Level Groups Sum # 0: Outer 1 # 1: Inner Inner 3 Inner 4 4 # 2: Inner 2 5 is ($graph->groups_within(), 5, '5 groups'); is ($graph->groups_within(-1), 5, '5 groups'); is ($graph->groups_within(0), 1, '1 group in outer'); is ($graph->groups_within(1), 4, '4 groups in outer+inner'); is ($graph->groups_within(2), 5, '5 groups in total'); # all tests done 1; ############################################################################# sub check_groups { my ($group,$inner) = @_; is ($inner->{group}, $group, 'inner is in outer'); my @groups = $group->groups(); is (@groups, 1, 'one group in outer'); is ($groups[0], $inner, 'and it is "Inner"'); @groups = $inner->groups(); is (@groups, 0, 'no group in Inner'); is ($inner->attribute('group'), 'Outer', 'attribute("group")'); is ($group->attribute('group'), '', 'attribute("group")'); } ������������������������������������������������������������������������������������������Graph-Easy-0.75/t/graphml.t�������������������������������������������������������������������������000444��000764��000764�� 13532�12322253245� 16145� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Some basic GraphML tests use Test::More; use strict; use utf8; BEGIN { plan tests => 14; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::Parser") or die($@); }; can_ok ('Graph::Easy', qw/ as_graphml as_graphml_file /); ############################################################################# my $graph = Graph::Easy->new(); my $graphml_file = $graph->as_graphml_file(); $graphml_file =~ s/\n.*<!--.*-->\n//; _compare ($graph, $graphml_file, 'as_graphml and as_graphml_file are equal'); my $graphml = $graph->as_graphml(); like ($graphml, qr/<\?xml version="1.0" encoding="UTF-8"\?>/, 'as_graphml looks like xml'); ############################################################################# # some nodes and edges $graph->add_edge('Ursel','Viersen'); $graphml = $graph->as_graphml(); like ($graphml, qr/<node.*id="Ursel"/, 'as_graphml contains nodes'); like ($graphml, qr/<node.*id="Viersen"/, 'as_graphml contains nodes'); like ($graphml, qr/<edge.*source="Ursel"/, 'as_graphml contains edge'); like ($graphml, qr/<edge.*target="Viersen"/, 'as_graphml contains edge'); ############################################################################# # some attributes: # node.foo { color: red; } [A] {class:foo;}-> { color: blue; } [B] $graph = Graph::Easy->new(); my ($A,$B,$edge) = $graph->add_edge('A','B'); $graph->set_attribute('node.foo','color','red'); $edge->set_attribute('color','blue'); $A->set_attribute('class','foo'); my $result = <<EOT <key id="d0" for="node" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d1" for="edge" attr.name="color" attr.type="string"> <default>black</default> </key> <graph id="G" edgedefault="directed"> <node id="A"> <data key="d0">red</data> </node> <node id="B"> </node> <edge source="A" target="B"> <data key="d1">blue</data> </edge> </graph> </graphml> EOT ; _compare($graph, $result, 'GraphML with attributes'); ############################################################################# # some attributes with no default valu with no default value: # Also test escaping for valid XML: $edge->set_attribute('label', 'train-station & <Überlingen "Süd">'); $result = <<EOT2 <key id="d0" for="node" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d1" for="edge" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d2" for="edge" attr.name="label" attr.type="string"/> <graph id="G" edgedefault="directed"> <node id="A"> <data key="d0">red</data> </node> <node id="B"> </node> <edge source="A" target="B"> <data key="d1">blue</data> <data key="d2">train-station & <Überlingen "Süd"></data> </edge> </graph> </graphml> EOT2 ; _compare($graph, $result, 'GraphML with attributes'); ############################################################################# # node names with things that need escaping: $graph->rename_node('A', '<&\'">'); $result = <<EOT3 <key id="d0" for="node" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d1" for="edge" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d2" for="edge" attr.name="label" attr.type="string"/> <graph id="G" edgedefault="directed"> <node id="<&'">"> <data key="d0">red</data> </node> <node id="B"> </node> <edge source="<&'">" target="B"> <data key="d1">blue</data> <data key="d2">train-station & <Überlingen "Süd"></data> </edge> </graph> </graphml> EOT3 ; _compare($graph, $result, 'GraphML with attributes'); ############################################################################# # double attributes $graph = Graph::Easy->new(); ($A,$B,$edge) = $graph->add_edge('A','B'); my ($C,$D,$edge2) = $graph->add_edge('A','C'); $edge->set_attribute('label','car'); $edge2->set_attribute('label','train'); $result = <<EOT4 <key id="d0" for="edge" attr.name="label" attr.type="string"/> <graph id="G" edgedefault="directed"> <node id="A"> </node> <node id="B"> </node> <node id="C"> </node> <edge source="A" target="B"> <data key="d0">car</data> </edge> <edge source="A" target="C"> <data key="d0">train</data> </edge> </graph> </graphml> EOT4 ; _compare($graph, $result, 'GraphML with attributes'); ############################################################################# # as_graphml() with groups (bug until v0.63): $graph = Graph::Easy->new(); my $bonn = Graph::Easy::Node->new('Bonn'); my $cities = $graph->add_group('Cities"'); $cities->add_nodes($bonn); $result = <<EOT5 <graph id="G" edgedefault="directed"> <graph id="Cities"" edgedefault="directed"> <node id="Bonn"> </node> </graph> </graph> </graphml> EOT5 ; _compare($graph, $result, 'GraphML with group'); # all tests done ############################################################################# ############################################################################# sub _compare { my ($graph, $result, $name) = @_; my $graphml = $graph->as_graphml(); $graphml =~ s/\n.*<!--.*-->\n//; $result = <<EOR <?xml version="1.0" encoding="UTF-8"?> <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"> EOR . $result unless $result =~ /<\?xml/; if (!is ($graphml, $result, $name)) { eval { require Test::Differences; }; if (defined $Test::Differences::VERSION) { Test::Differences::eq_or_diff ($result, $graphml); } } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/custom.t��������������������������������������������������������������������������000444��000764��000764�� 3773�12322253245� 16013� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test the custom attributes. use Test::More; use strict; BEGIN { plan tests => (4*4+4) * 6 + (8+2) * 4 + 3; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Attributes") or die($@); use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy", qw/ valid_attribute /); ############################################################################# # valid_attribute: my $att = Graph::Easy->new(); $att->no_fatal_errors(1); for my $n (qw/ foo-bar bar-foo b-f-a boo-f-bar bar b-f /) { my $new_value = $att->valid_attribute( "x-$n", 'furble, barble' ); is ($new_value, "furble, barble", "x-$n is valid"); my @new_value = $att->validate_attribute( "x-$n", 'furble, barble' ); is ($new_value[0], undef, "x-$n is valid"); is ($new_value[1], "x-$n", "x-$n is valid"); is ($new_value[2], "furble, barble", "x-$n is valid"); for my $class (qw/ graph group node edge /) { my $new_value = $att->valid_attribute( "x-$n", 'furble, barble', $class ); is ($new_value, "furble, barble", "x-$n is valid in class $class"); my @new_value = $att->validate_attribute( "x-$n", 'furble, barble', $class ); is ($new_value[0], undef, "x-$n is valid in class $class"); is ($new_value[1], "x-$n", "x-$n is valid"); is ($new_value[2], "furble, barble", "x-$n is valid in class $class"); } } for my $n (qw/ -foo-bar bar-foo- b--a -boo-f-bar- /) { my $new_value = $att->valid_attribute( "x-$n", 'furble, barble' ); is (ref($new_value), 'ARRAY', "x-$n is not valid"); my @new_value = $att->validate_attribute( "x-$n", 'furble, barble' ); is ($new_value[0], 1, "x-$n is not valid"); for my $class (qw/ graph group node edge /) { my $new_value = $att->valid_attribute( "x-$n", 'furble, barble', $class ); is (ref($new_value), 'ARRAY', "x-$n is not valid in class $class"); my @new_value = $att->validate_attribute( "x-$n", 'furble, barble', $class ); is ($new_value[0], 1, "x-$n is not valid in class $class"); } } 1; �����Graph-Easy-0.75/t/parser.t��������������������������������������������������������������������������000444��000764��000764�� 30054�12322253245� 16005� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 146; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Parser") or die($@); }; can_ok ("Graph::Easy::Parser", qw/ new from_text from_file reset error use_class _parse_attributes /); ############################################################################# # parser object my $parser = Graph::Easy::Parser->new( debug => 0 ); is (ref($parser), 'Graph::Easy::Parser'); is ($parser->error(), '', 'no error yet'); ############################################################################# # parse_error(): $parser->no_fatal_errors(1); $parser->reset(); $parser->{line_nr} = 0; is ($parser->parse_error(1,'foo','bar','node'), "Error in attribute: 'bar' is not a valid attribute for a node at line 0"); $parser->{line_nr} = 0; is ($parser->parse_error(2,'boldly','style','edge'), "Error in attribute: 'boldly' is not a valid style for a edge at line 0"); $parser->{line_nr} = 0; is ($parser->parse_error(3), "Error: Found attributes, but expected group or node start at line 0"); ############################################################################# # from_text() and from_file() with Class->method style calling my $graph = Graph::Easy::Parser->from_text('[A]'); is (ref($graph), 'Graph::Easy'); is ($graph->nodes(), 1, 'one node from_text'); # from_text with graphviz code $graph = Graph::Easy::Parser->from_text('digraph Graph1 { Bonn1 -> Berlin1 }'); is (ref($graph), 'Graph::Easy'); is ($graph->nodes(), 2, 'two nodes from graphviz texts'); $graph = Graph::Easy::Parser->from_file('in/1node.txt'); is (ref($graph), 'Graph::Easy'); is ($graph->nodes(), 1, 'one node'); ############################################################################# # test for invalid input with only one line my $graph2 = $parser->from_text('invalid'); like ($parser->error(), qr/invalid/, 'one invalid line results in error'); ############################################################################# # matching classes with space in front $graph2 = $parser->from_text("# comment\n node { color: red; }\n"); is ($parser->error(), '', 'parsed ok'); ############################################################################# # matching nodes my $node_qr = $parser->_match_node(); like ('[]', $node_qr, '[] is a node'); like ('[ ]', $node_qr, '[ ] is a node'); ############################################################################# # check that setting a new subclass invalidates the cache in Base.pm $graph = Graph::Easy::Parser->from_text( <<EOF group.local { fill: yellow; } ( A [A] { class: foo; } ) { class: local; } EOF ); is ($graph->attribute('group.local','fill'), 'yellow', 'fill is yellow'); my $group = $graph->group('A'); is ($graph->attribute('group.local','fill'), 'yellow', 'fill is yellow'); is ($group->attribute('fill'), 'yellow', 'fill is still yellow'); is ($group->class(), 'group.local', 'group class is group.local'); ############################################################################# # general pattern tests my $line = 0; foreach (<DATA>) { chomp; next if $_ =~ /^\s*\z/; # skip empty lines next if $_ =~ /^#/; # skip comments $parser->reset(); die ("Illegal line $line in testdata") unless $_ =~ /^(.*)\|([^\|]*)$/; my ($in,$result) = ($1,$2); my $txt = $in; $txt =~ s/\\n/\n/g; # insert real newlines my $graph = $parser->from_text($txt); # reuse parser object if (!defined $graph || $graph->error() || $parser->error()) { my $error = $parser->error(); $error = $graph->error() if ref($graph) && $graph->error(); if ($result =~ /ERROR/) { isnt ($error, '', 'got some error'); } else { fail("$error. Input was: $txt"); } next; } my $got = scalar $graph->nodes(); my @edges = $graph->edges(); my $es = 0; foreach my $e (sort { $a->label() cmp $b->label() } @edges) { $es ++ if $e->label() ne ''; } $got .= '+' . $es if $es > 0; for my $n ( sort { $a->name() cmp $b->name() } ($graph->nodes(), $graph->edges()) ) { $got .= "," . $n->label() unless $n->label() =~ /^\s?\z/ || $n->label() eq $n->name(); $got .= "," . $n->name() unless $n->name() eq ''; } my @groups = $graph->groups(); for my $gr ( @groups ) { $got .= ',' . $gr->name(); } is ($got, $result, $in); } __DATA__ |0 # attributes graph { color: red; }|0 group { color: red; }|0 node { color: red; }|0 edge { color: red; }|0 # attributes with space in front graph { color: red; }|0 group { color: red; }|0 node { color: red; }|0 edge { color: red; }|0 # anon nodes []|1,#0 []->[]|2,#0,#1 [Bonn]->[]|2,#1,Bonn []->[Bonn]|2,#0,Bonn # First "#0" and "#1" are created, and ID 2 goes to the edge. # then "#3" is created, and ID 4 goes to the second edge. Therefore # "#0" and "#3" are the two anon nodes. []->[Bonn]->[]|3,#0,#3,Bonn # multiple spaces in nodes [ Bonn and Berlin ]|1,Bonn and Berlin [ Bonn and Berlin ]|1,Bonn and Berlin [ Bonn and Berlin ]|1,Bonn and Berlin [ Bonn \n and Berlin ]|1,Bonn and Berlin [ Bonn \n\n and Berlin ]|1,Bonn and Berlin # split nodes [ A | B ]|2,A,AB.0,B,AB.1 [ A | B | C ]|3,A,ABC.0,B,ABC.1,C,ABC.2 [ A | B | C ] => [ A ]|4,A,A,ABC.0,B,ABC.1,C,ABC.2 [ A | B | C ] => [ A ] [ A | B | C ] => [ A ]|7,A,A,ABC-1.0,B,ABC-1.1,C,ABC-1.2,A,ABC.0,B,ABC.1,C,ABC.2 # unique cluster names, despite trickery in source with "ABC-1" as split node: [ A | B | C | -1 ] => [ A ] [ A | B | C ] => [ A ]|8,A,A,ABC-1.0,B,ABC-1.1,C,ABC-1.2,-1,ABC-1.3,A,ABC.0,B,ABC.1,C,ABC.2 [ A | B | C | -1 ] => [ A ] [ A | B | C ] => [ A ] [ A | B | C ]|11,A,A,ABC-1.0,B,ABC-1.1,C,ABC-1.2,-1,ABC-1.3,A,ABC-2.0,B,ABC-2.1,C,ABC-2.2,A,ABC.0,B,ABC.1,C,ABC.2 # nodes with \[\] [ char\[\] ]|1,char[] [ char\[\] ] -> [ \[\] ]|2,[],char[] # split nodes with \[\] [ char\[\] || int ]|2,char[],char[]int.0,int,char[]int.1 # error testing (no end of node) [ Bonn\[\]|ERROR # normal tests [ Berlin ]|1,Berlin [Hamburg]|1,Hamburg [ Dresden ] |1,Dresden [ Pirna ] { color: red; }|1,Pirna [ Bonn ] -> [ Berlin ]|2,Berlin,Bonn [ Bonn ] -> [ Berlin ]\n[Berlin] -> [Frankfurt]|3,Berlin,Bonn,Frankfurt [ Bonn ] ==> [ Berlin ]\n[Berlin] -> [Frankfurt]|3,Berlin,Bonn,Frankfurt [ Bonn ] = > [ Berlin ]\n[Berlin] -> [Frankfurt]|3,Berlin,Bonn,Frankfurt [ Bonn ] ~~> [ Berlin ]\n[Berlin] -> [Frankfurt]|3,Berlin,Bonn,Frankfurt [ Bonn ] ..> [ Berlin ]\n[Berlin] -> [Frankfurt]|3,Berlin,Bonn,Frankfurt [ Bonn ] - > [ Berlin ]\n[Berlin] -> [Frankfurt]|3,Berlin,Bonn,Frankfurt [ Bonn \( \#1 \) ] - > [ Berlin ]\n[Berlin] -> [Frankfurt]|3,Berlin,Bonn ( #1 ),Frankfurt [ Bonn ] { color: red; }\n[Berlin] -> [Frankfurt]|3,Berlin,Bonn,Frankfurt [Bonn]{color:red;}\n[Berlin]->[Frankfurt]|3,Berlin,Bonn,Frankfurt [ Bonn ] { color: red; } -> [ Berlin ]\n[Berlin] -> [Frankfurt]|3,Berlin,Bonn,Frankfurt [ Bonn ] { color: red; } -> [ Berlin ] {color: blue} \n[Berlin] -> [Frankfurt]|3,Berlin,Bonn,Frankfurt [ Bonn ] { color: #fff; } -> [ Berlin ] { color: #A0a0A0 } # failed in v0.09 [ Bonn ] -> [ Ulm ]|2,Berlin,Bonn [ Bonn ] { color: #fff; } -> [ Berlin ] { color: #A0a0A0 } #80808080 failed in v0.09 [ Bonn ] -> [ Ulm ]|2,Berlin,Bonn [ Bonn ] { color: #fff; } -> [ Berlin ] { color: #A0a0A0 } #808080 failed in v0.09 [ Bonn ] -> [ Ulm ]|2,Berlin,Bonn # node chains [ Bonn ] -> [ Berlin ]\n -> [ Kassel ]|3,Berlin,Bonn,Kassel [ Bonn ] { color: #fff; } -> [ Berlin ] { color: #A0a0A0 }\n -> [ Kassel ] { color: red; }|3,Berlin,Bonn,Kassel [ Bonn ] -> [ Berlin ] -> [ Kassel ]|3,Berlin,Bonn,Kassel [ Bonn ] { color: #fff; } -> [ Berlin ] { color: #A0a0A0 } -> [ Kassel ] { color: red; }|3,Berlin,Bonn,Kassel [ Bonn ] -> [ Berlin ]\n -> [ Kassel ] -> [ Koblenz ]|4,Berlin,Bonn,Kassel,Koblenz [ Bonn ] -> [ Berlin ] -> [ Kassel ]\n -> [ Koblenz ]|4,Berlin,Bonn,Kassel,Koblenz [ Bonn ] -> [ Berlin ] -> [ Kassel ] -> [ Koblenz ]|4,Berlin,Bonn,Kassel,Koblenz # attributes with ":" in their value [ Bonn ] { link: http://www.bloodgate.com/Bonn; }|1,Bonn # attributes "link", "autolink", and "linkbase": [ Bonn ] { linkbase: http://www.bloodgate.com/; autolink: name; }|1,Bonn [ Bonn ] { autolink: none; }|1,Bonn [ Bonn ] { autolink: title; }|1,Bonn [ Bonn ] { autolink: name; }|1,Bonn [ Bonn ] { autotitle: label; }|1,Bonn [ Bonn ] { autotitle: name; }|1,Bonn [ Bonn ] { autotitle: none; }|1,Bonn [ Bonn ] { title: my title; }|1,Bonn [ Bonn ] { shape: point; point-style: square; }|1,Bonn [ Bonn ] { background: red; }|1,Bonn [ Bonn ] { background: rgb(255,0,0); }|1,Bonn [ Bonn ] { background: rgb(100%,0,0); }|1,Bonn [ Bonn ] { background: rgb(0.0,0.5,1.0); }|1,Bonn [ Bonn ] { background: rgb(100%,0.5,12); }|1,Bonn [ Bonn ] { background: #ff0000; }|1,Bonn [ Bonn ] { background: #ff0; }|1,Bonn node.red { background: red; } [ Bonn ] { class: red; }|1,Bonn edge.red { background: red; } [ Bonn ] -> { class: red; } [ Berlin ]|2,Berlin,Bonn graph { background: red; } [ Bonn ] -> [ Berlin ]|2,Berlin,Bonn # edges with label # matching sides [ Bonn ] - Auto -> [ Berlin ]|2+1,Auto,Berlin,Bonn [ Bonn ] ~ Auto ~> [ Berlin ]|2+1,Auto,Berlin,Bonn [ Bonn ] . Auto .> [ Berlin ]|2+1,Auto,Berlin,Bonn [ Bonn ] = Auto => [ Berlin ]|2+1,Auto,Berlin,Bonn [ Bonn ] -- Auto --> [ Berlin ]|2+1,Auto,Berlin,Bonn [ Bonn ] == Auto ==> [ Berlin ]|2+1,Auto,Berlin,Bonn [ Bonn ] ~~ Auto ~~> [ Berlin ]|2+1,Auto,Berlin,Bonn [ Bonn ] .. Auto ..> [ Berlin ]|2+1,Auto,Berlin,Bonn # with pattern in the middle [ Bonn ] -- Au-to --> [ Berlin ]|2+1,Au-to,Berlin,Bonn [ Bonn ] == Au--to ==> [ Berlin ]|2+1,Au--to,Berlin,Bonn # groups ( Group [ Bonn ] -- Auto --> [ Berlin ] )|2+1,Auto,Berlin,Bonn,Group ( Group [ Bonn ] --> [ Berlin ] )|2,Berlin,Bonn,Group # lists [ Bonn ], [ Berlin ]\n --> [ Hamburg ]|3,Berlin,Bonn,Hamburg [ Bonn ], [ Berlin ] --> [ Hamburg ]|3,Berlin,Bonn,Hamburg [ Bonn ], [ Berlin ], [ Ulm ] --> [ Hamburg ]|4,Berlin,Bonn,Hamburg,Ulm [ Bonn ], [ Berlin ], [ Ulm ] --> [ Hamburg ] [ Trier ] --> [ Ulm ]|5,Berlin,Bonn,Hamburg,Trier,Ulm ( Group [ Bonn ], [ Berlin ] => [ Leipzig ] ) { color: red; }|3,Berlin,Bonn,Leipzig,Group [ Bonn ] -> [ Berlin ]\n --> { color: red; } [ Leipzig ]|3,Berlin,Bonn,Leipzig [ Bonn ] --> { label: test; } [ Berlin ]|2+1,Berlin,Bonn,test [ Bonn ] --> { label: test; } [ Berlin ] { color: blue; }|2+1,Berlin,Bonn,test [ Bonn ] --> { label: test; } [ Berlin ] { color: blue; }|2+1,Berlin,Bonn,test [ Bonn ] --> { label: test; } [ Berlin ] { color: blue; } --> { label: test2; } [ Leipzig ]|3+2,Berlin,Bonn,Leipzig,test,test2 # undirected edges [ Bonn ] -- [ Berlin ]|2,Berlin,Bonn [ Bonn ] -- [ Berlin ] [Ulm] --> [ Mainz]|4,Berlin,Bonn,Mainz,Ulm [ Bonn ] -- { color: red; } [ Berlin ] [Ulm] --> [ Mainz]|4,Berlin,Bonn,Mainz,Ulm # left over attributes due to node consumed first [ Bonn ]\n { color: red; } --> [ Berlin ]|2,Berlin,Bonn [ Bonn ] { color:\n red; } --> [ Berlin ]|2,Berlin,Bonn ( Group [ Bonn ] ) { color: red; }|1,Bonn,Group ([Bonn]){color:red;}|1,Bonn,Group #0 (0[Bonn]){color:red;}|1,Bonn,0 [ $sys$Node ]|1,$sys$Node # lists on the right side [ Bonn ] -- test --> [ Berlin], [ Chemnitz ]|3+2,Berlin,Bonn,Chemnitz,test,test # empty group ()|0,Group #0 # empty group ( )|0,Group #0 # empty group with link ( )->[Bonn]|1,Bonn,Group #0 # empty group linked to another empty group ( )->( )|0,Group #0,Group #1 # link ending at empty group (#1 because Bonn is #0) [Bonn]->( )|1,Bonn,Group #1 # link ending at empty group, and starting at empty group # 0,1,3 (and not 0,1,2) because: # "()" - create first group # "->()" - create second group and *then* the edge (id #3) # "()" - create third group as "#3" ()->()->()|0,Group #0,Group #1,Group #3 # group w/o name ([Bonn])|1,Bonn,Group #0 # edge labels with escaped chars [ Bonn ] -- \[ A \] \<\> \=\-\. --> [ Berlin ]|2+1,Berlin,Bonn,[ A ] <> =-. # ERROR testing # no space [ Bonn ]--test-->[ Berlin ]|ERROR [ Bonn ]-- test-->[ Berlin ]|ERROR [ Bonn ]--test -->[ Berlin ]|ERROR [ Bonn ]-- test--> [ Berlin ]|ERROR [ Bonn ] -- test--> [ Berlin ]|ERROR # mismatching left/right side [ Bonn ] - Auto--> [ Berlin ]|ERROR [ Bonn ] - Auto --> [ Berlin ]|ERROR [ Bonn ] == Auto --> [ Berlin ]|ERROR # unknown edge style [ Bonn ] . > [ Berlin ]\n[Berlin] -> [Frankfurt]|ERROR [ Bonn ] . > [ Berlin ]\n[Berlin] -> [Frankfurt]|ERROR ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/drop.t����������������������������������������������������������������������������000444��000764��000764�� 2502�12322253245� 15432� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test multiple calls to as_ascii()/as_boxart() as well as merge_nodes use Test::More; BEGIN { plan tests => 5; chdir 't' if -d 't'; use lib '../lib'; use_ok("Graph::Easy") or die (@!); use_ok("Graph::Easy::Parser") or die (@!); } my $graph = Graph::Easy::Parser->from_file('stress/drop.txt'); binmode STDOUT, ':utf8' or die ("binmode STDOUT, ':utf8' failed: $!"); binmode STDERR, ':utf8' or die ("binmode STDERR, ':utf8' failed: $!"); my $bonn = $graph->node('Bonn'); my $first = $graph->as_ascii(); my $second = $graph->as_ascii(); is ($first, $second, 'two times as_ascii() changes nothing'); $first = $graph->as_boxart(); $second = $graph->as_boxart(); is ($first, $second, 'two times as_boxart() changes nothing'); # drop any connection between Bonn and Berlin, as well as self-loops # from Berlin to Berlin $graph->merge_nodes('Bonn', 'Berlin'); my $result = $first . "\n" . $graph->as_boxart(); my $expected = readfile('out/drop_result.txt'); is ($result, $expected, 'dropping a node works'); # all tests done 1; sub readfile { my ($file) = @_; open FILE, $file or die ("Cannot read file $file: $!"); binmode FILE, ':utf8' or die ("binmode $file, ':utf8' failed: $!"); local $/ = undef; # slurp mode my $doc = <FILE>; close FILE; $doc; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/cell.t����������������������������������������������������������������������������000444��000764��000764�� 5167�12322253245� 15417� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test Graph::Easy::Node::Cell use Test::More; use strict; BEGIN { plan tests => 28; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Node::Cell") or die($@); use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::As_ascii") or die($@); }; can_ok ("Graph::Easy::Node::Cell", qw/ new as_ascii as_html error class name successors predecessors width height pos x y class title del_attribute set_attribute set_attributes attribute group add_to_group /); ############################################################################# my $cell = Graph::Easy::Node::Cell->new(); is (ref($cell), 'Graph::Easy::Node::Cell'); is ($cell->error(), '', 'no error yet'); is ($cell->x(), 0, 'x == 0'); is ($cell->y(), 0, 'x == 0'); is ($cell->label(), '', 'label'); is ($cell->name(), '', 'name'); is ($cell->title(), '', 'no title per default'); is (join(",", $cell->pos()), "0,0", 'pos = 0,0'); is ($cell->width(), undef, 'w == undef'); is ($cell->height(), undef, 'h == undef'); is ($cell->class(), '', 'no class'); ############################################################################# # as_ascii/as_html is ($cell->as_ascii(), '', 'as_ascii'); is ($cell->as_html(), '', 'as_html'); $cell->_correct_size(); is ($cell->width(), 0, 'w = 0'); is ($cell->height(), 0, 'h = 0'); ############################################################################# # group tests use Graph::Easy::Group; my $group = Graph::Easy::Group->new( { name => 'foo' } ); # fake that the cell belongs as filler to a node my $node = Graph::Easy::Node->new( 'foo' ); $cell->{node} = $node; is ($cell->node(), $node, 'node for cell'); is ($cell->group(), undef, 'no group yet'); $node->add_to_group($group); is ($cell->node(), $node, 'node for cell'); is ($cell->group(), $group, 'group foo'); ############################################################################# # title tests $cell->set_attribute('title', "foo title"); is ($cell->title(), 'foo title', 'foo title'); $cell->del_attribute('title'); $cell->set_attribute('autotitle', 'name'); is ($cell->title(), $cell->name(), 'title equals name'); ############################################################################# # invisible nodes $node = Graph::Easy::Node->new( { name => "anon 0", label => 'X' } ); $node->set_attribute('shape', "invisible"); is ($node->as_ascii(), "", 'invisible text node'); ############################################################################# # as_txt() use_ok ('Graph::Easy::As_txt'); can_ok ("Graph::Easy::Node::Cell", qw/ attributes_as_txt as_txt as_pure_txt /); ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/parse_edge.t����������������������������������������������������������������������000444��000764��000764�� 5224�12322253245� 16570� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 83; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Parser") or die($@); }; can_ok ("Graph::Easy::Parser", qw/ new from_text from_file reset error _match_edge _match_node _match_attributes _match_optional_attributes /); ############################################################################# # create parser object my $parser = Graph::Easy::Parser->new(); is (ref($parser), 'Graph::Easy::Parser'); is ($parser->error(), '', 'no error yet'); my $line = 0; my $qr_edge = $parser->_match_edge(); my $qr_node = $parser->_match_node(); my $qr_oatr = $parser->_match_optional_attributes(); #my $r = '-- Label --> [ AA ]'; #$r = '--> [ AB ]'; #$r = '<--> [ AB ]'; #$r = '<- Label -> [ AB ]'; #$r = '--> { color: red; } [ AB ]'; foreach my $l (<DATA>) { chomp ($l); next if $l =~ /^\s*\z/; # skip empty ones next if $l =~ /^#/; # skip comments my ($in,$type,$style,$label) = split /\|/, $l; if ($type < 0) { if (!unlike ($in, qr/^$qr_edge\z/, "$in")) { $in =~ /^$qr_edge/; diag ("# '$1' '$2' '$3' '$4' '$5' '$6'\n"); } next; } # XXX TODO check edge style and type: # 0 - undirected # 2 - right # 3 - left and right like ($in, qr/^$qr_edge\z/, "$in"); # $in =~ /^$qr_edge\z/; # diag("# '$1' '$2' '$3' '$4' '$5' '$6' '$7' '$8' '$9'\n"); } __DATA__ # edges without arrows --|0|-- ==|0|== ..|0|.. - |-1| - - - |0| - ---|0|-- ===|0|== ...|0|.. - - |0| - ----|0|-- ====|0|== ....|0|.. <->|3|-- <=>|3|== <.>|3|.. <- >|3| - <-->|3|-- <==>|3|== <..>|3|.. <- - >|3| - <--->|3|-- <===>|3|== <...>|3|.. <- - >|3| - ->|2|-- =>|2|== .>|2|.. - >|2| - -->|2|-- ==>|2|== ..>|2|.. ~~>|2|~~ = >|2|= - - >|2| - --->|2|-- ===>|2|== ...>|2|.. - - >|2| - # with labels <- ->|3| - - Landstrasse --|-1|-- == Autobahn ==>|2|== .. Im Bau ..>|2|.. - Tunnel - >|2| - = label =>|2|==|label <-- Landstrasse -->|3|-- <== Autobahn ==>|3|== <.. Im Bau ..>|3|.. <- Tunnel - >|3| - <- Tunnel -->|-1| <-- Tunnel -->|3| <-- Landstrasse -->|3|-- <~~ Landstrasse ~~>|3|~~ <== Landstrasse ==>|3|== <.- Landstrasse .->|3|.- <..- Landstrasse ..->|3|..- -- Landstrasse -->|2|-- ~~ Landstrasse ~~>|2|~~ == Landstrasse ==>|2|== .- Landstrasse .->|2|.- ..- Landstrasse ..->|2|..- ################## # Failures # no left-only edges allowed <-|-1|-- <=|-1|== <.|-1|.. <- |-1| - <--|-1|-- <==|-1|== <..|-1|.. <- -|-1| - <-- Landstrasse -|-1| <== Autobahn =|-1| <.. Im Bau .|-1| <- - Tunnel -|-1| <--|-1| # mismatching pattern <-- Landstrasse ==>|-1| # double "<<" or ">>" are not good <<--|-1| <<--|-1| <<-->>|-1| <<. -.->>|-1| < - Tunnel - >|-1| ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/graphml_yed.t���������������������������������������������������������������������000444��000764��000764�� 13732�12322253245� 17010� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Some basic GraphML tests with the format=yED use Test::More; use strict; use utf8; BEGIN { plan tests => 14; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::Parser") or die($@); }; can_ok ('Graph::Easy', qw/ as_graphml as_graphml_file /); ############################################################################# my $graph = Graph::Easy->new(); my $graphml_file = $graph->as_graphml_file( format => 'yED' ); $graphml_file =~ s/\n.*<!--.*-->\n//; _compare ($graph, $graphml_file, 'as_graphml and as_graphml_file are equal'); my $graphml = $graph->as_graphml( format => 'yED' ); like ($graphml, qr/<\?xml version="1.0" encoding="UTF-8"\?>/, 'as_graphml looks like xml'); ############################################################################# # some nodes and edges $graph->add_edge('Ursel','Viersen'); $graphml = $graph->as_graphml(); like ($graphml, qr/<node.*id="Ursel"/, 'as_graphml contains nodes'); like ($graphml, qr/<node.*id="Viersen"/, 'as_graphml contains nodes'); like ($graphml, qr/<edge.*source="Ursel"/, 'as_graphml contains edge'); like ($graphml, qr/<edge.*target="Viersen"/, 'as_graphml contains edge'); ############################################################################# # some attributes: # node.foo { color: red; } [A] {class:foo;}-> { color: blue; } [B] $graph = Graph::Easy->new(); my ($A,$B,$edge) = $graph->add_edge('A','B'); $graph->set_attribute('node.foo','color','red'); $edge->set_attribute('color','blue'); $A->set_attribute('class','foo'); my $result = <<EOT <key id="d0" for="node" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d1" for="edge" attr.name="color" attr.type="string"> <default>black</default> </key> <graph id="G" edgedefault="directed"> <node id="A"> <data key="d0">red</data> </node> <node id="B"> </node> <edge source="A" target="B"> <data key="d1">blue</data> </edge> </graph> </graphml> EOT ; _compare($graph, $result, 'GraphML with attributes'); ############################################################################# # some attributes with no default valu with no default value: # Also test escaping for valid XML: $edge->set_attribute('label', 'train-station & <Überlingen "Süd">'); $result = <<EOT2 <key id="d0" for="node" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d1" for="edge" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d2" for="edge" attr.name="label" attr.type="string"/> <graph id="G" edgedefault="directed"> <node id="A"> <data key="d0">red</data> </node> <node id="B"> </node> <edge source="A" target="B"> <data key="d1">blue</data> <data key="d2">train-station & <Überlingen "Süd"></data> </edge> </graph> </graphml> EOT2 ; _compare($graph, $result, 'GraphML with attributes'); ############################################################################# # node names with things that need escaping: $graph->rename_node('A', '<&\'">'); $result = <<EOT3 <key id="d0" for="node" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d1" for="edge" attr.name="color" attr.type="string"> <default>black</default> </key> <key id="d2" for="edge" attr.name="label" attr.type="string"/> <graph id="G" edgedefault="directed"> <node id="<&'">"> <data key="d0">red</data> </node> <node id="B"> </node> <edge source="<&'">" target="B"> <data key="d1">blue</data> <data key="d2">train-station & <Überlingen "Süd"></data> </edge> </graph> </graphml> EOT3 ; _compare($graph, $result, 'GraphML with attributes'); ############################################################################# # double attributes $graph = Graph::Easy->new(); ($A,$B,$edge) = $graph->add_edge('A','B'); my ($C,$D,$edge2) = $graph->add_edge('A','C'); $edge->set_attribute('label','car'); $edge2->set_attribute('label','train'); $result = <<EOT4 <key id="d0" for="edge" attr.name="label" attr.type="string"/> <graph id="G" edgedefault="directed"> <node id="A"> </node> <node id="B"> </node> <node id="C"> </node> <edge source="A" target="B"> <data key="d0">car</data> </edge> <edge source="A" target="C"> <data key="d0">train</data> </edge> </graph> </graphml> EOT4 ; _compare($graph, $result, 'GraphML with attributes'); ############################################################################# # as_graphml() with groups (bug until v0.63): $graph = Graph::Easy->new(); my $bonn = Graph::Easy::Node->new('Bonn'); my $cities = $graph->add_group('Cities"'); $cities->add_nodes($bonn); $result = <<EOT5 <graph id="G" edgedefault="directed"> <graph id="Cities"" edgedefault="directed"> <node id="Bonn"> </node> </graph> </graph> </graphml> EOT5 ; _compare($graph, $result, 'GraphML with group'); # all tests done ############################################################################# ############################################################################# sub _compare { my ($graph, $result, $name) = @_; my $graphml = $graph->as_graphml( { format => 'yED' } ); $graphml =~ s/\n.*<!--.*-->\n//; $result = <<EOR <?xml version="1.0" encoding="UTF-8"?> <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.0/ygraphml.xsd"> EOR . $result unless $result =~ /<\?xml/; if (!is ($result, $graphml, $name)) { eval { require Test::Differences; }; if (defined $Test::Differences::VERSION) { Test::Differences::eq_or_diff ($result, $graphml); } } } ��������������������������������������Graph-Easy-0.75/t/edge_cell.t�����������������������������������������������������������������������000444��000764��000764�� 6055�12322253245� 16400� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test Graph::Easy::Edge::Cell use Test::More; use strict; BEGIN { plan tests => 25; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Edge::Cell") or die($@); use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::As_ascii") or die($@); }; can_ok ("Graph::Easy::Edge::Cell", qw/ new as_ascii as_html error pos x y label width height style type edge_type _draw_cross _draw_ver _draw_hor _draw_corner _make_cross /); use Graph::Easy::Edge::Cell qw/ EDGE_SHORT_W EDGE_CROSS EDGE_END_N EDGE_START_E EDGE_HOR EDGE_VER EDGE_N_W_S /; use Graph::Easy::Edge; ############################################################################# my $edge = Graph::Easy::Edge->new(); my $path = Graph::Easy::Edge::Cell->new( edge => $edge ); is (ref($path), 'Graph::Easy::Edge::Cell'); is ($path->error(), '', 'no error yet'); is ($path->x(), 0, 'x == 0'); is ($path->y(), 0, 'x == 0'); is ($path->label(), '', 'no label'); is (join(",", $path->pos()), "0,0", 'pos = 0,0'); is ($path->width(), undef, 'w = undef'); # no graph => thus no width yet $path = Graph::Easy::Edge::Cell->new( edge => $edge, type => EDGE_SHORT_W); is ($path->type(), EDGE_SHORT_W, 'edge to the left'); ############################################################################# # attribute() $edge->set_attribute( color => 'blue', border => 'none'); $path = Graph::Easy::Edge::Cell->new( type => EDGE_SHORT_W, edge => $edge); is ($path->attribute('color'), 'blue'); ############################################################################# # as_txt/as_ascii $path->_correct_size(); is ($path->{w}, 5, 'w == 5'); is ($path->{h}, 3, 'h == 3'); my $ascii = $path->as_ascii(0,0); $ascii =~ s/^\s+//; $ascii =~ s/\s+\z//; is ($ascii, "<--", 'as ascii'); # rendering of seems $edge = Graph::Easy::Edge->new( style => 'dot-dash' ); $path = Graph::Easy::Edge::Cell->new( type => EDGE_HOR, edge => $edge); $path->{w} = 10; $ascii = $path->as_ascii(0,0); $ascii =~ s/^\s+//; $ascii =~ s/\s+\z//; is ($ascii, ".-.-.-.-.-", 'as ascii'); $ascii = $path->as_ascii(1,0); $ascii =~ s/^\s+//; $ascii =~ s/\s+\z//; is ($ascii, "-.-.-.-.-.", 'as ascii'); my $other = Graph::Easy::Edge->new( style => 'dashed' ); $path->{type} = EDGE_HOR; $path->_make_cross($other); $ascii = $path->as_ascii(); is ($ascii, " ' \n.-+-.-.-.-\n ' ", 'crossing between dot-dash and dashed'); $path->{style} = 'dotted'; $path->{style_ver} = 'solid'; $ascii = $path->as_ascii(); is ($ascii, " | \n..!.......\n | ", 'crossing between dotted and solid'); ############################################################################# # edge_type() my $et = 'Graph::Easy::Edge::Cell::edge_type'; { no strict 'refs'; is (&$et( EDGE_HOR() ), 'horizontal', 'EDGE_HOR'); is (&$et( EDGE_VER() ), 'vertical', 'EDGE_VER'); is (&$et( EDGE_CROSS() ), 'crossing', 'EDGE_CROSS'); is (&$et( EDGE_SHORT_W() ), 'horizontal, ending west, starting east', 'EDGE_SHORT_W'); is (&$et( EDGE_N_W_S() ), 'selfloop, northwards', 'EDGE_N_W_S'); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/ascii.t���������������������������������������������������������������������������000444��000764��000764�� 7004�12322253245� 15560� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; sub _write_utf8_file { my ($out_path, $contents) = @_; open my $out_fh, '>:encoding(utf8)', $out_path or die "Cannot open '$out_path' for writing - $!"; print {$out_fh} $contents; close($out_fh); return; } # test text file input => ASCII output, and back to as_txt() again BEGIN { plan tests => 451; # TEST use_ok ("Graph::Easy") or die($@); # TEST use_ok ("Graph::Easy::Parser") or die($@); }; ############################################################################# # parser object my $parser = Graph::Easy::Parser->new( debug => 0); is (ref($parser), 'Graph::Easy::Parser'); is ($parser->error(), '', 'no error yet'); opendir DIR, "t/in" or die ("Cannot read dir 'in': $!"); my @files = readdir(DIR); closedir(DIR); my @failures; eval { require Test::Differences; }; binmode (STDERR, ':utf8') or die ("Cannot do binmode(':utf8') on STDERR: $!"); binmode (STDOUT, ':utf8') or die ("Cannot do binmode(':utf8') on STDOUT: $!"); foreach my $f (sort @files) { my $path = "t/in/$f"; next unless -f $path; # only files next unless $f =~ /\.txt/; # ignore anything else print "# at $f\n"; my $txt = readfile($path); my $graph = $parser->from_text($txt); # reuse parser object $txt =~ s/\n\s+\z/\n/; # remove trailing whitespace $txt =~ s/(^|\n)\s*#[^#]{2}.*\n//g; # remove comments $f =~ /^(\d+)/; my $nodes = $1; if (!defined $graph) { warn ("Graph input was invalid: " . $parser->error()); push @failures, $f; next; } is (scalar $graph->nodes(), $nodes, "$nodes nodes"); # for slow testing machines $graph->timeout(20); my $ascii = $graph->as_ascii(); my $out_path = "t/out/$f"; my $out = readfile($out_path); $out =~ s/(^|\n)\s*#[^#=]{2}.*\n//g; # remove comments $out =~ s/\n\n\z/\n/mg; # remove empty lines # print "txt: $txt\n"; # print "ascii: $ascii\n"; # print "should: $out\n"; if (! is ($ascii, $out, "from $f")) { if ($ENV{__SHLOMIF__UPDATE_ME}) { _write_utf8_file($out_path, $ascii); } push @failures, $f; if (defined $Test::Differences::VERSION) { Test::Differences::eq_or_diff ($ascii, $out); } else { fail ("Test::Differences not installed"); } } my $txt_path = "t/txt/$f"; # if the txt output differes, read it in if (-f $txt_path) { $txt = readfile($txt_path); } # else # { # # input might have whitespace at front, remove it because output doesn't # $txt =~ s/(^|\n)\x20+/$1/g; # } if (! is ($graph->as_txt(), $txt, "$f as_txt")) { if ($ENV{__SHLOMIF__UPDATE_ME}) { _write_utf8_file($txt_path, scalar( $graph->as_txt() )); } push @failures, $f; if (defined $Test::Differences::VERSION) { Test::Differences::eq_or_diff ($graph->as_txt(), $txt); } else { fail ("Test::Differences not installed"); } } # print a debug output my $debug = $ascii; $debug =~ s/\n/\n# /g; print "# Generated:\n#\n# $debug\n"; } if (@failures) { print "# !!! Failed the following tests:\n"; for my $f (@failures) { print "# $f\n"; } print "# !!!\n\n"; } 1; sub readfile { my ($filename) = @_; open my $fh, $filename or die ("Cannot read file ${filename}: $!"); binmode ($fh, ':utf8') or die ("Cannot do binmode(':utf8') on ${fh}: $!"); local $/ = undef; # slurp mode my $doc = <$fh>; close $fh; $doc; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/path.t����������������������������������������������������������������������������000444��000764��000764�� 1356�12322253245� 15430� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; BEGIN { plan tests => 7; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Layout") or die($@); use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy", qw/ _path_is_clear /); my $path = [ 0,0,0, 1,0,0, 2,0,0, 2,1,0, 2,2,0, 2,3,0, 2,4,0, ]; my $cells = {}; ############################################################################# # path tests my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); $graph->{cells} = $cells; is ($graph->_path_is_clear( $path, $cells), 1, 'path is clear'); $cells->{"2,2"} = 1; is ($graph->_path_is_clear( $path, $cells), 0, 'path is blocked'); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/anon_group.t����������������������������������������������������������������������000444��000764��000764�� 3532�12322253245� 16641� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # test anonymous groups use Test::More; use strict; BEGIN { plan tests => 15; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy::Group::Anon") or die($@); use_ok ("Graph::Easy") or die($@); use_ok ("Graph::Easy::As_txt") or die($@); require_ok ("Graph::Easy::As_ascii") or die($@); }; can_ok ("Graph::Easy::Group::Anon", qw/ new as_txt as_html error class name successors predecessors width height pos x y class del_attribute set_attribute set_attributes attribute attributes_as_txt as_pure_txt group add_to_group /); ############################################################################# my $group = Graph::Easy::Group::Anon->new(); is (ref($group), 'Graph::Easy::Group::Anon'); is ($group->error(), '', 'no error yet'); is ($group->label(), '', 'label'); is ($group->name(), 'Group #0', 'name'); is ($group->title(), '', 'no title per default'); is ($group->{graph}, undef, 'no graph'); is (scalar $group->successors(), undef, 'no outgoing links'); is (scalar $group->predecessors(), undef, 'no incoming links'); is ($group->{graph}, undef, 'successors/predecssors leave graph alone'); ############################################################################# # as_txt/as_html my $graph = Graph::Easy->new(); $graph->add_group($group); is ($group->as_txt(), "( )\n\n", 'anon group as_txt'); #is ($group->as_html(), " <td colspan=4 rowspan=4 class='node_anon'></td>\n", # 'as_html'); #is ($group->as_ascii(), "", 'anon as_ascii'); #is ($group->as_graphviz_txt(), '"\#0"', 'anon as_graphviz'); ############################################################################# # anon node as_graphviz #my $grviz = $graph->as_graphviz(); #my $match = quotemeta('"\#0" [ color="#ffffff", label=" ", style=filled ]'); #like ($grviz, qr/$match/, 'anon node'); ����������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/delete.t��������������������������������������������������������������������������000444��000764��000764�� 5207�12322253245� 15735� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test deletion of nodes and edges use Test::More; use strict; BEGIN { plan tests => 46; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy", qw/ del_node del_edge /); ############################################################################# # first we add edges/nodes my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); is ($graph->error(), '', 'no error yet'); $graph->add_edge('Bonn', 'Berlin'); # check that it contains 2 nodes and one edge is_ok ($graph); ############################################################################# print "# add edge, delete it again\n"; my $edge = $graph->add_edge('Bonn', 'Berlin'); $graph->del_edge($edge); # check that it contains 2 nodes and one edge is_ok ($graph); ############################################################################# print "# add selfloop edge, delete it again\n"; $edge = $graph->add_edge('Bonn', 'Bonn'); $graph->del_edge($edge); # check that it contains 2 nodes and one edge is_ok ($graph); $edge = $graph->add_edge('Berlin', 'Berlin'); $graph->del_edge($edge); # check that it contains 2 nodes and one edge is_ok ($graph); ############################################################################# print "# add node, delete it again\n"; my $node = $graph->add_node('Cottbus'); $graph->del_node($node); # check that it contains 2 nodes and one edge is_ok ($graph); ############################################################################# print "# add node with edge, delete it again\n"; my ($n1, $n2, $e) = $graph->add_edge('Cottbus', 'Bonn'); $graph->del_node($n1); # check that it contains 2 nodes and one edge is_ok ($graph); ($n1, $n2, $e) = $graph->add_edge('Cottbus', 'Bonn'); ($n1, $n2, $e) = $graph->add_edge('Cottbus', 'Berlin'); $graph->del_node($n1); # check that it contains 2 nodes and one edge is_ok ($graph); 1; # all tests done ############################################################################# # test graph after deletion sub is_ok { my $graph = shift; is ($graph->nodes(), 2, '2 nodes'); is ($graph->edges(), 1, '1 edge'); my $t = ''; for my $n (sort { $a->{name} cmp $b->{name} } $graph->nodes()) { $t .= $n->name(); } is ($t, 'BerlinBonn', 'two nodes'); my $bonn = $graph->node('Bonn'); my $berlin = $graph->node('Berlin'); is (scalar keys %{$bonn->{edges}}, 1, 'one edge'); is (scalar keys %{$berlin->{edges}}, 1, 'one edge'); my $ids = join (',', keys %{$bonn->{edges}}, keys %{$berlin->{edges}}, keys %{$graph->{edges}} ); is ($ids, '0,0,0', 'edge with ID is the only one'); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/class.t���������������������������������������������������������������������������000444��000764��000764�� 3634�12322253245� 15602� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w # Test class selectors use Test::More; use strict; BEGIN { plan tests => 23; chdir 't' if -d 't'; use lib '../lib'; use_ok ("Graph::Easy") or die($@); }; can_ok ("Graph::Easy", qw/ _check_class /); ############################################################################# my $graph = Graph::Easy->new(); is (ref($graph), 'Graph::Easy'); $graph->add_edge( 'A', 'B' ); for my $class ('node', 'edge', 'graph', 'group', 'node.foo', 'edge.foo', 'group.foo') { _is ($class, $graph->_check_class($class)); } _is ('edge.foo,group.foo,node.foo', $graph->_check_class('.foo')); _is ('edge.b,group.b,node.b', $graph->_check_class('.b')); ############################################################################# # lists of class selectors _is ('edge.f,group.f,node.f,edge.b,group.b,node.b', $graph->_check_class('.f, .b')); _is ('edge,group,node', $graph->_check_class('edge, group, node')); _is ('edge,group,node', $graph->_check_class('edge,group, node')); _is ('edge,group,node', $graph->_check_class('edge , group , node')); _is ('edge,group,node', $graph->_check_class('edge, group,node')); _is ('edge,group,node', $graph->_check_class('edge,group,node')); _is ('edge.red,group.red,node.red,edge.green,group.green,node.green,group', $graph->_check_class('.red, .green, group')); ############################################################################# # invalid classes _is (\'.', $graph->_check_class('.')); _is (\'node.', $graph->_check_class('node.')); _is (\'foo', $graph->_check_class('foo')); _is (\'.foo, bar', $graph->_check_class('.foo, bar')); # all tests done 1; ############################################################################# sub _is { my ($expect, @results) = @_; if (ref($expect)) { is (scalar @results, 0, "invalid selector $$expect"); } else { is (join(",", @results), $expect, $expect); } } ����������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/pod_cov.t�������������������������������������������������������������������������000444��000764��000764�� 3526�12322253245� 16126� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use Test::More; use strict; my $tests; BEGIN { $tests = 21; plan tests => $tests; chdir 't' if -d 't'; use lib '../lib'; }; SKIP: { skip("Test::Pod::Coverage 1.08 and Pod::Coverage 0.19 required for testing POD coverage", $tests) unless do { eval "use Test::Pod::Coverage 1.08"; my $r = ($@ ? 0 : 1); eval "use Pod::Coverage 0.19"; # need this on newer Perls to avoid false-fails $r & ($@ ? 0 : 1); # only return true if we have both }; for my $m (qw/ Graph::Easy Graph::Easy::Node Graph::Easy::Group Graph::Easy::Edge Graph::Easy::Base Graph::Easy::As_ascii Graph::Easy::As_txt Graph::Easy::As_graphviz Graph::Easy::As_vcg Graph::Easy::Layout::Chain Graph::Easy::Layout::Grid Graph::Easy::Layout::Path Graph::Easy::Layout::Scout Graph::Easy::Layout::Repair Graph::Easy::Attributes /) { pod_coverage_ok( $m, "$m is covered" ); } my $trustparents = { coverage_class => 'Pod::Coverage::CountParents' }; for my $m (qw/ Graph::Easy::Node::Anon Graph::Easy::Group::Anon /) { pod_coverage_ok( $m, $trustparents, "$m is covered" ); } # Define the global CONSTANTS for internal usage my $trustme = { trustme => [ qr/^( ACTION_CHAIN| ACTION_NODE| ACTION_TRACE| ACTION_EDGES| ACTION_SPLICE| ATTR_COLOR| ATTR_DEFAULT_SLOT| ATTR_DESC_SLOT| ATTR_EXAMPLE_SLOT| ATTR_MATCH_SLOT| ATTR_STRING| ATTR_ANGLE| ATTR_PORT| ATTR_TYPE_SLOT| )\z/x ] }; pod_coverage_ok( "Graph::Easy::Layout", $trustme ); # Define the global CONSTANTS for internal usage $trustme = { trustme => [ qr/^( NO_MULTIPLES )\z/x ] }; pod_coverage_ok( "Graph::Easy::Parser", $trustme ); pod_coverage_ok( "Graph::Easy::Parser::Graphviz", $trustme ); pod_coverage_ok( "Graph::Easy::Parser::VCG", $trustme ); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress����������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15470� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0020.txt�������������������������������������������������������������������000444��000764��000764�� 217�12322253245� 16727� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# bend edges with labels [ Ahrweiler ] -- Eifel --> [ Lahn ] [ Lahn ] == Eifel ==> [ Lahnstein ] [ Lahnstein ] -- Eifel --> [ Ahrweiler ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0012.txt�������������������������������������������������������������������000444��000764��000764�� 267�12322253245� 16735� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# placement near other nodes [ Oberammergau ] -> [ Regensburg ] [ Regensburg ] -> [ Wasserburg ] [ Wasserburg ] -> [ Bremen ] [ Siegburg ] -> [ Bremen ] [ Kiel ] -> [ Bremen ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0011.txt�������������������������������������������������������������������000444��000764��000764�� 237�12322253245� 16731� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# placement near other nodes [ Oberammergau ] -> [ Regensburg ] [ Regensburg ] -> [ Wasserburg ] [ Wasserburg ] -> [ Bremen ] [ Siegburg ] -> [ Bremen ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/drop.txt�������������������������������������������������������������������000444��000764��000764�� 215�12322253245� 17310� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Bonn ] --> [ Berlin ] --> [ Frankfurt ] [ Bonn ] --> [ Berlin ] --> [ Bonn ] [ Ulm ] --> [ Berlin ] --> [ Berlin ] [ Mainz ] --> [ Bonn ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0005.txt�������������������������������������������������������������������000444��000764��000764�� 155�12322253245� 16733� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 3 nodes linked in a triangle [ Zwenkau ] -> [ Borna ] [ Borna ] -> [ Riesa ] [ Riesa ] -> [ Zwenkau ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0003.txt�������������������������������������������������������������������000444��000764��000764�� 422�12322253245� 16726� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# six nodes, and one edge with a bend [ Oranienburg ] -> [ Henningsdorf ] [ Oranienburg ] -> [ Herzberg ] [ Henningsdorf ] -> [ Strausberg ] [ Strausberg ] -> [ Herzberg ] [ Strausberg ] -> [ Neuruppin ] [ Oranienburg ] -> [ Potsdam ] [ Neuruppin ] -> [ Herzberg ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0004.txt�������������������������������������������������������������������000444��000764��000764�� 232�12322253245� 16726� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# star - 4 nodes around a center [ Berlin ] -> [ Rostock ] [ Berlin ] -> [ Dresden ] [ Berlin ] -> [ Magdeburg ] [ Berlin ] -> [ Frankfurt (Oder) ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0006.txt�������������������������������������������������������������������000444��000764��000764�� 243�12322253245� 16732� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 5 nodes linked in a circle [ Oberammergau ] -> [ Regensburg ] [ Regensburg ] -> [ Wasserburg ] [ Wasserburg ] -> [ Bremen ] [ Bremen ] -> [ Oberammergau ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0002.txt�������������������������������������������������������������������000444��000764��000764�� 371�12322253245� 16730� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# six nodes, possible to do without a bend [ Oranienburg ] -> [ Henningsdorf ] [ Oranienburg ] -> [ Herzberg ] [ Henningsdorf ] -> [ Strausberg ] [ Strausberg ] -> [ Herzberg ] [ Strausberg ] -> [ Neuruppin ] [ Oranienburg ] -> [ Postdam ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/anon.txt�������������������������������������������������������������������000444��000764��000764�� 342�12322253245� 17300� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node.anon { fill: #ffe0e0; } [ ] --> [ ] { border-style: bold; } --> [ ] { border-color: blue; border-style: solid; } --> [ ] { border-color: blue; } --> [ 1 ] { label: " "; border: none; } --> [ 2 ] { shape: invisible; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0010.txt�������������������������������������������������������������������000444��000764��000764�� 442�12322253245� 16726� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# placement near other nodes [ Oberammergau ] -> [ Regensburg ] [ Regensburg ] -> [ Wasserburg ] [ Wasserburg ] -> [ Bremen ] [ Regensburg ] -> [ Siegburg ] # to be placed around Bremen and Oberammergau [ Oberammergau ] -> [ Kiel ] [ Bremen ] -> [ Kiel ] [ Siegburg ] -> [ Kiel ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/stress/0001.txt�������������������������������������������������������������������000444��000764��000764�� 362�12322253245� 16727� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# six nodes, and one long edge [ Oranienburg ] -> [ Henningsdorf ] [ Henningsdorf ] -> [ Strausberg ] [ Oranienburg ] -> [ Wittenberge ] [ Strausberg ] -> [ Herzberg ] [ Strausberg ] -> [ Neuruppin ] [ Wittenberge ] -> [ Herzberg ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/dot�������������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 14733� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/dot/4_loose.dot�������������������������������������������������������������������000444��000764��000764�� 36�12322253245� 17103� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { A--B B--C C--D D--A } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/layouter��������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 16011� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/layouter/layouter_chain.txt�������������������������������������������������������000444��000764��000764�� 223�12322253245� 21672� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] -> [ Berlin ] -> [ Kassel ] [ Bonn ] -> [ Koblenz ] -> [ Berlin ] [ Bonn ] -> [ Ulm ] -> [ Koblenz ] [ Ulm ] -> [ Bautzen ] -> [ Berlin ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/layouter/layouter.txt�������������������������������������������������������������000444��000764��000764�� 205�12322253245� 20530� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] -> [ Berlin ] -> [ Kassel ] [ Bonn ] -> [ Koblenz ] [ Bonn ] -> [ Ulm ] -> [ Koblenz ] [ Ulm ] -> [ Bautzen ] -> [ Berlin ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/layouter/layouter_loop.txt��������������������������������������������������������000444��000764��000764�� 253�12322253245� 21564� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] -> [ Berlin ] -> [ Kassel ] [ Bonn ] -> [ Koblenz ] -> [ Berlin ] [ Bonn ] -> [ Ulm ] -> [ Koblenz ] [ Ulm ] -> [ Bautzen ] -> [ Berlin ] [ Bautzen ] -> [ Bonn ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/layouter/multiples.txt������������������������������������������������������������000444��000764��000764�� 732�12322253245� 20707� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { background: yellow; } [ Bonn ] ..> [ Berlin ] -> [ Kassel ] [ Bonn ] .-> [ Koblenz ] [ Bonn ] -> [ Ulm ] -> [ Koblenz ] [ Ulm ] -> [ Bautzen ] -> [ Berlin ] [ 1Bonn ] ..> [ 1Berlin ] -> [ 1Kassel ] [ 1Bonn ] .-> [ 1Koblenz ] [ 1Bonn ] -> [ 1Ulm ] -> [ 1Koblenz ] [ 1Ulm ] -> [ 1Bautzen ] -> [ 1Berlin ] [ 2Bonn ] ..> [ 2Berlin ] -> [ 2Kassel ] [ 2Bonn ] .-> [ 2Koblenz ] [ 2Bonn ] -> [ 2Ulm ] -> [ 2Koblenz ] [ 2Ulm ] -> [ 2Bautzen ] -> [ 2Berlin ] ��������������������������������������Graph-Easy-0.75/t/layouter/state.txt����������������������������������������������������������������000444��000764��000764�� 126�12322253245� 20006� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] --> [ End ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/layouter/edge_label.txt�����������������������������������������������������������000444��000764��000764�� 136�12322253245� 20732� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] -- train --> [ Berlin ] -> [ Potsdam ] [ Berlin ] -> [ Ulm ] [ Bonn ] -> [ Potsdam ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/group�����������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15301� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/group/0230.txt��������������������������������������������������������������������000444��000764��000764�� 335�12322253245� 16544� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# groups (with border none) group.cities { label: Cities; } ( Cities [ Ulm ] -> [ Lahn ] -> [ Bonn ] -> [ Trier ] ) { class: cities; background: #ff80a0; border: none; } [ Koblenz ] -> [ Berlin ] [ Frankfurt ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/group/0010.txt��������������������������������������������������������������������000444��000764��000764�� 503�12322253245� 16535� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Elan and Roy on Teamwork # http://www.cafepress.com/orderofthestick.10272636?zoom=yes#zoom [ Teamwork ] { background: yellow; title: Elan; } -is the key to --> [ Victory ] { background: red; title: Roy; } --> [ Order of the Stick ] { background: #f080a0; } [ Victory ] -Treasure--> [ Haley ] { background: lightblue; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/group/0131.txt��������������������������������������������������������������������000444��000764��000764�� 620�12322253245� 16541� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Three non-overlapping groups group.dmz { background: #ffa070; } group.outer { background: #f07070; } ( Internal Network [ Workstation ] ) { background: #70b070; } [ Workstation ] --> [ Inner Firewall ] ( DMZ [ Inner Firewall ] -> [ Proxy ] --> [ Outer Firewall ] ) { class: dmz; } ( Outer [ Internet ] ) { class: outer } [ Outer Firewall ] --> [ Internet ] [ Proxy ] --> [ Database ] ����������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax����������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15473� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0050.txt�������������������������������������������������������������������000444��000764��000764�� 316�12322253245� 16735� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# override defaults for nodes, edges, groups and graph node { color: brown; } graph { fill: #990066; border: 1px solid black; } group { fill: grey; } edge { color: white; } [ Wismar ] -> [ Neustadt ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0030.txt�������������������������������������������������������������������000444��000764��000764�� 674�12322253245� 16742� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Different edge styles [ Bonn ] <-> [ Berlin ] # bidirectional [ Berlin ] ==> [ Rostock ] # double [ Hamburg ] ..> [ Altona ] # dotted [ Dresden ] - > [ Bautzen ] # dashed [ Schweinfurt ] <=> [ Ulm ] # bidrectional, double [ Magdeburg ] .-> [ Burg ] # dot-dash [ Burg ] -- [ Wolfen ] # single, bidirectional w/o arrows [ Wolfen ] .. [ Coswig ] # dotted, bidirectional w/o arrows [ Magdeburg ] ..> [ Aue ] # dotted, going downwards ��������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0090.txt�������������������������������������������������������������������000444��000764��000764�� 70�12322253245� 16716� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# a chain of nodes [ Bonn ] -> [ Berlin ] -> [ Wismar ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0020.txt�������������������������������������������������������������������000444��000764��000764�� 62�12322253245� 16710� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Kiel ] -> [ Kassel ] [ Kassel ] -> [ Wismar ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0240.txt�������������������������������������������������������������������000444��000764��000764�� 770�12322253245� 16742� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Clickable links and mouse-over titles: graph { linkbase: http://de.wikipedia.org/wiki/ } node { autolink: label; autotitle: label; } [ Bonn ] [ Berlin ] { title: "Berlin (Capital)" } [ Kassel ] { autolink: none; } [ Ulm ] { link: "Stuttgart"; } [ Lahn ] { label: Ulm; } # link link, title overriden only title [ Bonn ] -> [ Berlin ] -> [ Kassel ] # link overriden [ Bonn ] -> [ Ulm ] # link goes to "Ulm" (label!) [ Ulm ] -> [ Lahn ] ��������Graph-Easy-0.75/t/syntax/0011.txt�������������������������������������������������������������������000444��000764��000764�� 55�12322253245� 16712� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Berlin\n (West) ] -> [ Berlin\n (Ost) ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0070.txt�������������������������������������������������������������������000444��000764��000764�� 261�12322253245� 16736� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# nodes in a subclass with attributes node.city { color: brown; } # override default color [ Bonn ] { class: city; } -> [ Berlin ] { class: city; } [ Berlin ] -> [ Kassel ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0080.txt�������������������������������������������������������������������000444��000764��000764�� 204�12322253245� 16734� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� node.city { color: brown; } [ Bonn ], [ Berlin ], [ Kassel ] { class: city; } [ Bonn ] -> [ Berlin ] [ Kassel ] -> [ Berlin ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0062.txt�������������������������������������������������������������������000444��000764��000764�� 132�12322253245� 16734� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Override attributes of an edge [ Bonn ] -> { color: blue; label: Autobahn; } [ Berlin ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0100.txt�������������������������������������������������������������������000444��000764��000764�� 225�12322253245� 16730� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # node lists on the left side [ Ulm ], [ Hahn ], [ Wismar ] => [ Frankfurt ] [ Frankfurt ] -> [ Potsdam ] [ Frankfurt ], [ Lahn ] -> [ Potsdam ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0061.txt�������������������������������������������������������������������000444��000764��000764�� 154�12322253245� 16737� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Override the text of a node with the label attribute [ Bonn ] -> [ Berlin ] -> [ Bonn2 ] { label: Bonn; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0200.txt�������������������������������������������������������������������000444��000764��000764�� 102�12322253245� 16723� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# quoting of () inside node [ Berlin ] -> [ Frankfurt \(Oder\) ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0130.txt�������������������������������������������������������������������000444��000764��000764�� 151�12322253245� 16731� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# all nodes in one group ( German Cities [ Cuxhaven ] -> [ Bremen ] [ Hamburg ], [ Flensburg ] ) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0140.txt�������������������������������������������������������������������000444��000764��000764�� 174�12322253245� 16737� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# some nodes in a group, and one edge coming in ( German Cities [ Augsburg ] -> [ Hof ] ) [ Wien ] -> [ Augsburg ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0250.txt�������������������������������������������������������������������000444��000764��000764�� 120�12322253245� 16730� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A node-cluster (autosplit into three single nodes) [ Waren | Mirow | Bergen ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0003.txt�������������������������������������������������������������������000444��000764��000764�� 213�12322253245� 16727� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 2 nodes, one pointing back to itself [ Ruhleben ] -> [ Aschersleben ] [ Aschersleben ] -> [ Ruhleben ] [ Ruhleben ] -> [ Ruhleben ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0160.txt�������������������������������������������������������������������000444��000764��000764�� 150�12322253245� 16733� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Terminal \#1 ] -> [ Terminal \#2 ] [ Terminal ( \#3 ) \|-\| ] [ Neustadt & Neudorf ] -> [ 3 < 4 ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0171.txt�������������������������������������������������������������������000444��000764��000764�� 1157�12322253245� 16765� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# edges with attributes like title/link/label # set the base link graph { linkbase: http%3a//de.wikipedia.org/wiki/; } # if nothing specified, generate a link from the label # or none if no label set edge { autolink: label; } # these edges always link to "Intercity" regardless of the label edge.intercity { link: Intercity; } # autolinks the edge to "Auto" [ Emden ] - Auto -> [ Schortens ] # autolinks this edge to "Bahn" [ Schortens ] --> { label: Bahn; } [ Oldenburg ] # no link (since no label) [ Schortens ] --> [ Cuxhaven ] # links to "Intercity" [ Oldenburg ] - IC -> { class: intercity; } [ Bremerhaven ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0150.txt�������������������������������������������������������������������000444��000764��000764�� 117�12322253245� 16735� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ( German Cities [ Augsburg ] -> [ Hof ] ) [ Wien ] -> [ German Cities ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0040.txt�������������������������������������������������������������������000444��000764��000764�� 130�12322253245� 16726� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# two unconnected parts of a graph [ Kiel ] -> [ Kassel ] [ Koblenz ] -> [ Konstanz ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0021.txt�������������������������������������������������������������������000444��000764��000764�� 72�12322253245� 16712� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # anonymous, invisible nodes [ ] -> [ Heilbronn ] -> [] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0002.txt�������������������������������������������������������������������000444��000764��000764�� 127�12322253245� 16732� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 2 nodes, one pointing back to itself [ Bonn ] -> [ Berlin ] [ Bonn ] -> [ Bonn ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0063.txt�������������������������������������������������������������������000444��000764��000764�� 566�12322253245� 16750� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Different node shapes node { shape: ellipse; } node.lilac { background: #deadff; } [ Bergheim ] { shape: diamond; } -> [ Kirchheim ] { shape: triangle; } -> [ Weilheim ] { shape: house; } [ Wilhelmshaven ] { shape: invisible; } -> [ Cuxhaven ] { shape: rounded; } -> [ Zeven ] { class: lilac; } [ Bremerhaven ] { shape: circle; } -> [ Templin ] { shape: triangle; } ������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0230.txt�������������������������������������������������������������������000444��000764��000764�� 130�12322253245� 16727� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Something that follows on the same line [ Ulm ] -> [ Lahn ] [ Lahn ] -> [ Trier ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0102.txt�������������������������������������������������������������������000444��000764��000764�� 262�12322253245� 16733� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # node lists on both sides [ Ulm ], [ Hahn ], [ Wismar ] => [ Frankfurt ] [ Frankfurt ] => [ Stuttgart ], [ Trier ] [ Potsdam ], [ Cuixhaven ] => [ Bremerhaven ], [ Wismut ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0210.txt�������������������������������������������������������������������000444��000764��000764�� 363�12322253245� 16735� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# gid, "long" edge, comments and color codes graph { gid: 123; color: #308030 } node { color: #f06020 } #this is a comment node.cities { color: #1460b0; fill: lightgrey; } # this too [ Leipzig ] { class: cities } ----> [ Oschatz ] # comment �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0170.txt�������������������������������������������������������������������000444��000764��000764�� 367�12322253245� 16746� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Edges can have labels, too: [ Kempten ] -- Bahn --> [ Schongau ] # normal edge [ Schongau ] -- Fahrrad --> [ Regensburg ] # ditto [ Regensburg ] .. Auto ..> [ Roth ] # dashed [ Regensburg ] == Motorradkolonne ==> [ Straubing ] # double �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0180.txt�������������������������������������������������������������������000444��000764��000764�� 110�12322253245� 16731� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# inserted newlines [ Kempten ] -> [ Schongau ] # normal edge ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0251.txt�������������������������������������������������������������������000444��000764��000764�� 152�12322253245� 16736� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A node-cluster (autosplit into three single nodes) [ Husum | Schleswig | Flensburg ] { fill: #ddaaff; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0120.txt�������������������������������������������������������������������000444��000764��000764�� 111�12322253245� 16724� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # [ Neustadt \[an der Weinstrasse\] ] -> # [ Neustadt \[b. Coburg\] ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0010.txt�������������������������������������������������������������������000444��000764��000764�� 32�12322253245� 16704� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Bonn ] -> [ Berlin ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0252.txt�������������������������������������������������������������������000444��000764��000764�� 164�12322253245� 16742� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A node-cluster (autosplit into three single nodes) [ Amrum | Sylt | Fehmarn ] { fill: #ddaaff; } -> [ Itzehoe ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0254.txt�������������������������������������������������������������������000444��000764��000764�� 123�12322253245� 16737� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A node-cluster (autosplit into three single nodes) [ Waren | Mirow | Bergen \| ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0110.txt�������������������������������������������������������������������000444��000764��000764�� 114�12322253245� 16726� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Bonn ] -> [ Berlin (Capital) ] [ Bonn ] -> [ Wismar ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0060.txt�������������������������������������������������������������������000444��000764��000764�� 116�12322253245� 16734� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# override attributes of only one node [ Bonn ] { color: red; } -> [ Berlin ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0190.txt�������������������������������������������������������������������000444��000764��000764�� 72�12322253245� 16721� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# no spaces [Kempten]{color:red;}->[Thurgau]{color:blue;} ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0000.txt�������������������������������������������������������������������000444��000764��000764�� 71�12322253245� 16706� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # This is a single-node graph with a comment: [ Bonn ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0131.txt�������������������������������������������������������������������000444��000764��000764�� 505�12322253245� 16735� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Three non-overlapping groups group.nrw { fill: #ffa070; } group.sachsen { fill: #f07070; } ( Bayern [ Augsburg ] ) { fill: #70b070; } [ Augsburg ] --> [ Dortmund ] ( Nordrhein-Westfalen [ Dortmund ] -> [ Olpe ] --> [ Hamm ] ) { class: nrw; } ( Sachsen [ Leipzig ] ) { class: sachsen } [ Hamm ] --> [ Leipzig ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0220.txt�������������������������������������������������������������������000444��000764��000764�� 232�12322253245� 16731� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# different chains of nodes [ Ulm ] -> [ Lahn ] -> [ Bonn ] -> [ Trier ] [ Stein ] -> [ Wahns ] -> [ Lind ] -> [ Burg ] -> [ Buch ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/syntax/0001.txt�������������������������������������������������������������������000444��000764��000764�� 71�12322253245� 16707� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A node pointing back to itself [ Bonn ] -> [ Bonn ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt�������������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 14764� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_selfloop_flip.txt�����������������������������������������������������������000444��000764��000764�� 130�12322253245� 20713� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Adenau ] --> [ Monschau ] [ Nideggen ] --> [ Monschau ] [ Monschau ] --> [ Monschau ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_bug_basename.txt������������������������������������������������������������000444��000764��000764�� 132�12322253245� 20471� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ a | b | c ] { basename: pv; } [ u ] --> [ pv.0 ] [ u ] --> [ pv.1 ] [ u ] --> [ pv.2 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_nodes_5_edges.txt�����������������������������������������������������������000444��000764��000764�� 250�12322253245� 20564� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Default Page ] --> [ Sign Up ] [ Default Page ] .-> [ Main Page ] [ Default Page ] = > [ Main Page ] [ Default Page ] - > [ Main Page ] [ Sign Up ] --> [ Main Page ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_cluster.txt�����������������������������������������������������������������000444��000764��000764�� 74�12322253245� 17526� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Husum | Schleswig | Flensburg ] { background: #ddaaff; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_label_align.txt�������������������������������������������������������������000444��000764��000764�� 117�12322253245� 20313� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Long Node Label\l left\r right\c center ] -- A\r long\n edge label --> [ B ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_selfloop_flow_down.txt������������������������������������������������������000444��000764��000764�� 152�12322253245� 21763� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 180; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] --> [ End ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_att.txt���������������������������������������������������������������������000444��000764��000764�� 211�12322253245� 16647� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { title: 100%; } [ 1 ] { label: $a = %229%22%3b\nmy $b = 1%3b; } [ 3 ] { label: $a = %22%3b%25; } [ 1 ] --> [ 2 ] [ 3 ] --> [ 4 ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_flow_chain.txt��������������������������������������������������������������000444��000764��000764�� 134�12322253245� 20174� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Cottbus ] [ Bonn ] --> { flow: forward; } [ Berlin ] [ Cottbus ] --> [ Ulm ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/8_optimize_bend.txt�����������������������������������������������������������000444��000764��000764�� 635�12322253245� 20725� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { shape: circle; } [ compare ] { background: #c1b2ff; shape: rect; } [ main ] { shape: rect; } [ make_string ] { label: make a\n string; } [ main ] ..> [ init ] [ main ] --> [ parse ] [ main ] -- Testlabel --> [ cleanup ] [ main ] - 100 times - > { color: red; } [ printf ] [ init ] --> [ make_string ] [ parse ] --> [ execute ] [ execute ] --> { color: red; } [ compare ] [ execute ] --> [ make_string ] ���������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_chained.txt�����������������������������������������������������������������000444��000764��000764�� 253�12322253245� 17462� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Ulm ] [ Bonn ] --> [ Berlin ] [ Bonn ] --> [ Koblenz ] [ Berlin ] --> [ Kassel ] [ Ulm ] --> [ Bautzen ] [ Ulm ] --> [ Koblenz ] [ Bautzen ] --> [ Berlin ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_comma.txt�������������������������������������������������������������������000444��000764��000764�� 60�12322253245� 17135� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 1 ] --> [ 4 ] [ 2 ] --> [ 4 ] [ 3 ] --> [ 4 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_collapse.txt����������������������������������������������������������������000444��000764��000764�� 217�12322253245� 17667� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node.i { label: S P A C Y; } [ A ] { label: S P A C E; } [ B ] { class: i; } [ A ] -- S P A C E --> [ B ] [ A B C ] -- A B C D --> [ X Z Y ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/9_flow_south.txt��������������������������������������������������������������000444��000764��000764�� 266�12322253245� 20267� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { start: south; } graph { flow: down; } [ A ] --> [ A1 ] [ A ] --> [ A2 ] [ A ] --> [ A3 ] [ A ] --> [ A4 ] [ A ] --> [ A5 ] [ A ] --> [ A6 ] [ A ] --> [ A7 ] [ A ] --> [ A8 ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_nodes_edge.txt��������������������������������������������������������������000444��000764��000764�� 123�12322253245� 20155� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ test ] { shape: edge; } [ A ] -- [ test ] [ C ] --> [ test ] [ test ] --> [ B ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_wrap.txt��������������������������������������������������������������������000444��000764��000764�� 325�12322253245� 17034� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { textwrap: 6; } [ Small city near a beautyfull river ] { align: right; textwrap: 10; } [ Frankfurt Oder\n Flughafen-Terminal ] -- Drive a car to the destination --> [ Small city near a beautyfull river ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/8_invisible.txt���������������������������������������������������������������000444��000764��000764�� 1061�12322253245� 20073� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { color: blue; labelcolor: green; style: invisible; } graph { background: oldlace; label: My sample graph; border: solid black; } [ Five ] { color: yellow; fill: maroon; } [ One ] { color: white; fill: seagreen; } [ Two ] { shape: triangle; } [ Five ] - Test label - > { color: red; labelcolor: darkslategrey; } [ Seven ] [ Five ] --> [ Seven ] [ Five ] <==> [ Three ] [ Five ] --> [ Eight ] [ One ] ==> [ Three ] [ One ] .. Test\n label ..> [ Four ] [ One ] -- label --> [ Two ] [ Seven ] -- [ Eight ] [ Three ] <.. Test label ..> [ Six ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_group_labelpos.txt����������������������������������������������������������000444��000764��000764�� 151�12322253245� 21075� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Bergtour: [ Wasserkuppe ] [ Zugspitze ] ) { labelpos: bottom; } [ Zugspitze ] --> [ Wasserkuppe ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_endless_loop_2.txt����������������������������������������������������������000444��000764��000764�� 71�12322253245� 20752� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 4 ] { offset: 1,0; origin: 3; } [ 1 ] --> [ 2 ] [ 3 ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_multicell_offset.txt��������������������������������������������������������000444��000764��000764�� 423�12322253245� 21426� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ B ] { offset: 2,0; origin: Wide; } [ C ] { offset: -2,0; origin: Wide; } [ D ] { offset: 0,2; origin: High; } [ E ] { offset: 0,-2; origin: High; } [ High ] { size: 1,4; } [ Wide ] { size: 4,1; } [ High ] --> [ D ] [ High ] --> [ E ] [ Wide ] --> [ B ] [ Wide ] --> [ C ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_group_align.txt�������������������������������������������������������������000444��000764��000764�� 272�12322253245� 20376� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Center: [ E ] [ F ] ) { align: center; } ( Left: [ A ] [ B ] ) { align: left; } ( Right: [ C ] [ D ] ) { align: right; } [ A ] --> [ B ] [ C ] --> [ D ] [ E ] --> [ F ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/25_autosplit_empty.txt��������������������������������������������������������000444��000764��000764�� 343�12322253245� 21412� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ | D | ] { class: empty; } [ | F | ] { class: empty; } [ |G| ] { class: empty; } [ | C | ] [ C.2 ] --> [ A1 ] [ D.2 ] --> [ A2 ] [ | E | ] [ E.2 ] --> [ A3 ] [ F.2 ] --> [ A4 ] [ G.2 ] --> [ A5 ] [ |H| | ] [ H.3 ] --> [ A6 ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/8_align.txt�������������������������������������������������������������������000444��000764��000764�� 1314�12322253245� 17202� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { align: right; } graph { fontsize: 2em; label: My Graph; } node.left { align: left; fontsize: 1.5em; } [ Left\n align\n no border ] { align: left; border: none; } [ Left\naligned ] { class: left; } [ Right\nAligned ] { align: right; } [ Rightmost ] { align: right; } [ center\n align\n no border ] { align: center; border: none; } ( Nodes: [ Left\naligned ] [ Right\nAligned ] ) { align: right; } [ B ] --> [ Left\n align\n no border ] [ Center\n aligned text ] -- aligned\n left --> { align: left; } [ Rightmost ] [ Right\nAligned ] -- label\n text --> { align: right; } [ Left\naligned ] [ Left\n align\n no border ] --> [ center\n align\n no border ] [ center\n align\n no border ] --> [ A ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_2x2nodes.txt����������������������������������������������������������������000444��000764��000764�� 65�12322253245� 17512� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Frankfurt ] --> [ Hof ] [ Hamburg ] --> [ Altona ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_minlen.txt������������������������������������������������������������������000444��000764��000764�� 176�12322253245� 17353� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Berlin ] --> { minlen: 4; } [ Cottbus ] [ Berlin ] --> { minlen: 4; } [ Leipzig ] [ Berlin ] --> { minlen: 4; } [ Potsdam ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_invisible.txt���������������������������������������������������������������000444��000764��000764�� 365�12322253245� 20055� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Borna ] { pointstyle: invisible; shape: point; } [ You don't see me! ] { shape: invisible; } [ Bischofswerda ] --> [ You don't see me! ] [ You don't see me! ] --> [ Bischofswerda ] [ You don't see me! ] --> [ Borna ] [ Borna ] --> [ Bremen ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_autolabel.txt���������������������������������������������������������������000444��000764��000764�� 270�12322253245� 20032� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { autolabel: name, 20; autotitle: name; } [ Bonn ] { label: Bonn (ehemalige Bundeshauptstadt); } [ Bonn ] -- Acme Travels Incorporated --> [ Frankfurt (Main) / Flughafen ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_joint_short.txt�������������������������������������������������������������000444��000764��000764�� 250�12322253245� 20423� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ B ] { offset: 2,0; origin: A; } [ C ] { offset: 2,-2; origin: B; } [ A ] --> { end: south, 0; start: south; } [ C ] [ B ] --> { end: south, 0; start: south; } [ C ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_flow.txt��������������������������������������������������������������������000444��000764��000764�� 212�12322253245� 17027� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Passau ] --> { flow: down; } [ Siegen ] [ Siegen ] --> { flow: left; } [ Aschaffenburg ] [ Siegen ] --> { flow: right; } [ Regensburg ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_lists.txt�������������������������������������������������������������������000444��000764��000764�� 57�12322253245� 17204� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Berlin ] [ Ulm ] --> [ Berlin ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_list_attr.txt���������������������������������������������������������������000444��000764��000764�� 75�12322253245� 20052� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Berlin ] { border: dashed; } [ Bonn ] { border: dashed; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_tree_joint.txt��������������������������������������������������������������000444��000764��000764�� 445�12322253245� 20233� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A1 ] { offset: 2,1; origin: A; } [ A2 ] { offset: 2,2; origin: A; } [ A3 ] { offset: 2,3; origin: A; } [ A4 ] { offset: 2,4; origin: A; } [ A ] --> { start: south, 0; } [ A1 ] [ A ] --> { start: south, 0; } [ A2 ] [ A ] --> { start: south, 0; } [ A3 ] [ A ] --> { start: south, 0; } [ A4 ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_edge_cross.txt��������������������������������������������������������������000444��000764��000764�� 154�12322253245� 20202� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ E1 ] --> [ E2 ] [ E1 ] --> [ S1 ] [ E1 ] --> [ S2 ] [ E2 ] --> [ S1 ] [ E2 ] --> [ S2 ] [ S1 ] --> [ S2 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3nodes.txt��������������������������������������������������������������������000444��000764��000764�� 52�12322253245� 17012� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ One ] ==> [ Two ] [ Two ] - > [ Three ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_newlines.txt����������������������������������������������������������������000444��000764��000764�� 123�12322253245� 17703� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Berlin\n (O) ] { border: dotted black; } [ Berlin\n (W) ] --> [ Berlin\n (O) ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_autosplit_escaped.txt�������������������������������������������������������000444��000764��000764�� 17�12322253245� 21551� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A \| B | C ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_invisible_left.txt����������������������������������������������������������000444��000764��000764�� 23�12322253245� 21034� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ ] --> [ Berlin ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_list_attr.txt���������������������������������������������������������������000444��000764��000764�� 251�12322253245� 20067� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Berlin ] { border: dashed; } [ Bonn ] { border: dashed; } [ Frankfurt ] { border: dot-dash; } [ Berlin ] -- test --> [ Frankfurt ] [ Bonn ] -- test --> [ Frankfurt ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_rounded.txt�����������������������������������������������������������������000444��000764��000764�� 454�12322253245� 17531� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { shape: rounded; } [ Pankow\n (Berlin) ] { border: double; } [ Parsing ] { border: dashed; } [ Pullach ] { border: dotted; } [ Pullheim ] { border: bold; } [ Pullach ] --> [ Parsing ] [ Parsing ] --> [ Pankow\n (Berlin) ] [ Pankow\n (Berlin) ] --> [ Pullheim ] [ Pullheim ] --> [ Paderborn ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/8_flow.txt��������������������������������������������������������������������000444��000764��000764�� 470�12322253245� 17041� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ South ] { flow: south; } [ East ] --> [ South ] [ South ] --> [ West ] [ West ] --> { flow: west; } [ South Too ] [ South Too ] --> { flow: down; } [ right (west) ] [ right (west) ] --> { flow: right; } [ left (south) ] [ left (south) ] --> { flow: left; } [ east (default) ] [ east (default) ] --> [ final ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_edge_types.txt��������������������������������������������������������������000444��000764��000764�� 116�12322253245� 20213� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bingen ] <--> [ Mainz ] [ Bischofswerde ] -- test-text --> [ Finsterwalde ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/10_repair.txt�����������������������������������������������������������������000444��000764��000764�� 1125�12322253245� 17443� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( DMZ1: [ 1Backend ] [ 1Database ] [ 1Proxy ] [ 1Server ] ) ( DMZ: [ Backend ] [ Database ] [ Proxy ] [ Server ] ) [ 1Proxy ] --> [ 1Check ] [ 1Proxy ] --> [ 1Check ] [ 1Proxy ] --> { flow: south; } [ 1Database ] [ 1Proxy ] --> { flow: south; } [ 1Database ] [ 1Proxy ] --> [ 1Server ] [ 1Proxy ] --> [ 1Server ] [ Proxy ] --> [ Check ] [ Proxy ] --> { flow: south; } [ Database ] [ Proxy ] --> [ Server ] [ 1Check ] --> [ 1Backend ] [ 1Check ] --> [ 1Backend ] [ 1Database ] --> [ 1Backend ] [ 1Database ] --> [ 1Backend ] [ Check ] --> [ Backend ] [ Database ] --> [ Backend ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_joining.txt�����������������������������������������������������������������000444��000764��000764�� 220�12322253245� 17513� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] --> { start: south,0; } [ B ] [ A ] --> { start: north,0; } [ B ] [ A ] --> { start: south,0; } [ C ] [ A ] --> { start: north,0; } [ C ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_label.txt�������������������������������������������������������������������000444��000764��000764�� 113�12322253245� 17135� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { label: A; } [ C ] { link: http://bloodgate.com; } [ B ] --> [ C ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_selfloop_flow_down.txt������������������������������������������������������000444��000764��000764�� 171�12322253245� 21763� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 180; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] -- Until done --> [ Main ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/0_empty_group.txt�������������������������������������������������������������000444��000764��000764�� 32�12322253245� 20406� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Group without a name ) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/8_endless_loop.txt������������������������������������������������������������000444��000764��000764�� 102�12322253245� 20550� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 1 ] --> [ 2 ] [ 1 ] --> [ 3 ] [ 3|4 ] [ 5|6|7 ] [ 2 ] --> [ 3 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/18_multiples.txt��������������������������������������������������������������000444��000764��000764�� 1073�12322253245� 20211� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { background: yellow; } [ 1Bonn ] --> [ 1Ulm ] [ 1Bonn ] ..> [ 1Berlin ] [ 1Bonn ] .-> [ 1Koblenz ] [ 2Bonn ] --> [ 2Ulm ] [ 2Bonn ] ..> [ 2Berlin ] [ 2Bonn ] .-> [ 2Koblenz ] [ Bonn ] --> [ Ulm ] [ Bonn ] ..> [ Berlin ] [ Bonn ] .-> [ Koblenz ] [ 1Berlin ] --> [ 1Kassel ] [ 1Ulm ] --> [ 1Bautzen ] [ 1Ulm ] --> [ 1Koblenz ] [ 2Berlin ] --> [ 2Kassel ] [ 2Ulm ] --> [ 2Bautzen ] [ 2Ulm ] --> [ 2Koblenz ] [ Berlin ] --> [ Kassel ] [ Ulm ] --> [ Bautzen ] [ Ulm ] --> [ Koblenz ] [ 1Bautzen ] --> [ 1Berlin ] [ 2Bautzen ] --> [ 2Berlin ] [ Bautzen ] --> [ Berlin ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_group_split.txt�������������������������������������������������������������000444��000764��000764�� 353�12322253245� 20436� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Frankfurt ] { flow: down; } [ Ulm ] { offset: 6,2; origin: Bonn; } ( test: [ Berlin ] [ Bonn ] [ Frankfurt ] [ Hagen ] ) [ Bonn ] --> [ Berlin ] [ Bonn ] --> [ Ulm ] [ Berlin ] --> [ Frankfurt ] [ Frankfurt ] --> [ Hagen ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/10borders.txt�����������������������������������������������������������������000444��000764��000764�� 656�12322253245� 17452� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bold ] { border: bold; } [ Dashed ] { border: dashed; } [ Dotted ] { border: dotted; } [ Double ] { border: double; } [ dot-dash ] { border: dot-dash; } [ dot-dot-dash ] { border: dot-dot-dash; } [ double-dash ] { border: double-dash; } [ none ] { border: none; } [ wave ] { border: wave; } [ Dashed ] ==> [ none ] [ Solid ] ..> [ Dotted ] [ dot-dash ] - > [ Bold ] [ dot-dot-dash ] .-> [ wave ] [ double-dash ] ~~> [ Double ] ����������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_group_repair.txt������������������������������������������������������������000444��000764��000764�� 324�12322253245� 20563� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( DMZ: [ Backend ] [ Database ] [ Proxy ] [ Server ] ) [ Proxy ] --> [ Check ] [ Proxy ] --> { flow: south; } [ Database ] [ Proxy ] --> [ Server ] [ Check ] --> [ Backend ] [ Database ] --> [ Backend ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4nodes.txt��������������������������������������������������������������������000444��000764��000764�� 116�12322253245� 17034� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Berlin ] [ Bonn ] --> [ Frankfurt ] [ Berlin ] ..> [ Cottbus ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/9_cross.txt�������������������������������������������������������������������000444��000764��000764�� 354�12322253245� 17225� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { offset: 4,0; origin: U; } [ B|I ] { offset: 32,0; origin: A; } [ C | D||E ] { offset: 0,1; origin: A; } [ U ] --> [ A ] [ U ] --> { start: north; } [ I ] [ A ] --> [ BI.1 ] [ A ] --> [ BI.0 ] [ I ] --> [ Z ] [ BI.1 ] --> [ I ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_invisible_right.txt���������������������������������������������������������000444��000764��000764�� 21�12322253245� 21215� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_cross.txt�������������������������������������������������������������������000444��000764��000764�� 214�12322253245� 17213� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ B ] { offset: 40,0; origin: A; } [ C ] { offset: 20,-20; origin: A; } [ D ] { offset: 0,40; origin: C; } [ A ] --> [ B ] [ C ] - > [ D ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_arrow_styles.txt������������������������������������������������������������000444��000764��000764�� 560�12322253245� 20624� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: none; } [ Hagnau ] { flow: down; } [ Unteruhlingen ] { border: dotted; } [ Hagnau ] <--> [ Oberuhlingen ] [ Hagnau ] <--> [ Uhlingen ] [ Mainau ] --> [ Unteruhlingen ] [ Mainau ] -- { arrowstyle: closed; } [ Unteruhlingen ] [ Oberuhlingen ] <--> { arrowstyle: closed; } [ Unteruhlingen ] [ Uhlingen ] <--> { arrowstyle: filled; } [ Oberuhlingen ] ������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/8_basename.txt����������������������������������������������������������������000444��000764��000764�� 114�12322253245� 17640� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A|B|C ] { basename: A; } [ 1 ] --> [ A.2 ] [ 2 ] --> [ ABC.2 ] [ A|B|C ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_joint_bug_flags.txt���������������������������������������������������������000444��000764��000764�� 374�12322253245� 21225� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ C ] { offset: 0,2; origin: B; } [ D ] { offset: 0,2; origin: C; } [ E ] { offset: -2,-2; origin: B; } [ B ] <--> { end: south, 0; start: west; } [ E ] [ C ] <--> { end: south, 0; start: west; } [ E ] [ D ] <--> { end: south, 0; start: west; } [ E ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_cross_split_hor.txt���������������������������������������������������������000444��000764��000764�� 264�12322253245� 21303� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ B ] { offset: 0,4; origin: A; } [ C ] { offset: -2,2; origin: A; } [ D ] { offset: 2,2; origin: A; } ( Cross: [ A ] [ B ] [ C ] [ D ] ) [ A ] --> [ B ] [ C ] --> [ D ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_ranks.txt�������������������������������������������������������������������000444��000764��000764�� 207�12322253245� 17204� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ D ] { rank: 0; } [ F ] { rank: 0; } [ A ] --> [ B ] [ D ] --> [ E ] [ B ] --> [ C ] [ E ] --> { end: north; } [ F ] [ C ] --> [ D ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_flow.txt��������������������������������������������������������������������000444��000764��000764�� 174�12322253245� 17037� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Cottbus ] [ Bonn ] --> { flow: forward; } [ Berlin ] [ Cottbus ] --> [ Moselkern ] [ Moselkern ] --> [ Ulm ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_cross_inv.txt���������������������������������������������������������������000444��000764��000764�� 242�12322253245� 20070� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ B ] { offset: 40,0; origin: A; } [ C ] { offset: 20,-20; origin: A; } [ D ] { offset: 0,40; origin: C; } [ A ] --> { style: invisible; } [ B ] [ C ] - > [ D ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_dot_dot_dash.txt������������������������������������������������������������000444��000764��000764�� 222�12322253245� 20512� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ B ] { border: dot-dash; } [ Test\n Test\n Test test test\n test ] { border: dot-dot-dash; } [ Test\n Test\n Test test test\n test ] ..-> [ B ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_bug_joint_2.txt�������������������������������������������������������������000444��000764��000764�� 430�12322253245� 20263� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: none; } [ C ] { offset: 0,2; origin: B; } [ D ] { offset: 0,2; origin: C; } [ E ] { offset: -2,-2; origin: B; } [ B ] <--> { end: south, 0; start: west; } [ E ] [ C ] <--> { end: south, 0; start: west; } [ E ] [ D ] <--> { end: south, 0; start: west; } [ E ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/7_star.txt��������������������������������������������������������������������000444��000764��000764�� 234�12322253245� 17040� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Dachau ] --> [ Berlin ] [ Dachau ] --> [ Chemnitz ] [ Dachau ] --> [ Frankfurt ] [ Dachau ] --> [ Kiel ] [ Dachau ] --> [ Ulm ] [ Dachau ] --> [ Weimar ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/9_chain.txt�������������������������������������������������������������������000444��000764��000764�� 341�12322253245� 17152� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Berlin ] [ Berlin ] --> [ Koeln ] [ Berlin ] --> [ Cottbus ] [ Koeln ] --> [ Frankfurt ] [ Frankfurt ] --> [ Hannover ] [ Frankfurt ] --> [ Chemnitz ] [ Frankfurt ] --> [ Dresden ] [ Hannover ] --> [ Hamburg ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_joint.txt�������������������������������������������������������������������000444��000764��000764�� 277�12322253245� 17220� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Hagen ] --> { end: back, 0; } [ Bonn ] [ Hamburg ] --> { end: back, 0; } [ Bonn ] [ Hanau ] --> { end: back, 0; } [ Bonn ] [ Hannover ] --> { end: back, 0; } [ Bonn ] [ Bonn ] --> [ Prag ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/8_chain.txt�������������������������������������������������������������������000444��000764��000764�� 306�12322253245� 17152� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Berlin ] [ Berlin ] --> [ Koeln ] [ Koeln ] --> [ Frankfurt ] [ Frankfurt ] --> [ Hannover ] [ Frankfurt ] --> [ Chemnitz ] [ Frankfurt ] --> [ Dresden ] [ Hannover ] --> [ Hamburg ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_edge_start.txt��������������������������������������������������������������000444��000764��000764�� 104�12322253245� 20200� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] --> { start: front; } [ B ] [ A ] --> { start: front; } [ C ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_group.txt�������������������������������������������������������������������000444��000764��000764�� 102�12322253245� 17210� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Test\n group [ Berlin ] [ Bonn ] ) [ Bonn ] --> [ Berlin ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_colors.txt������������������������������������������������������������������000444��000764��000764�� 456�12322253245� 17372� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { color: 3; colorscheme: paired12; fill: rgb(0.1,100,10%); } [ Colors ] { color: hsl(300,1.0,1.0); fill: w3c/grey; } [ Preserve ] { color: cornflowerblue; } [ The ] { color: #ff00ff; } [ Preserve ] --> { color: rgb(33,44,55); } [ The ] [ The ] --> { color: hsv(1.0,1.0,0.5); } [ Colors ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_lists.txt�������������������������������������������������������������������000444��000764��000764�� 144�12322253245� 17222� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Berlin ] [ Bonn ] --> [ Frankfurt ] [ Ulm ] --> [ Berlin ] [ Ulm ] --> [ Frankfurt ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_class.txt�������������������������������������������������������������������000444��000764��000764�� 144�12322253245� 17167� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node.second { border: double; } [ A ] { class: second; } [ B ] { class: second; } [ A ] --> [ B ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/7_cluster.txt�����������������������������������������������������������������000444��000764��000764�� 40�12322253245� 17523� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A | BCD | E | F || G | | H ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_chain_10_edges.txt����������������������������������������������������������000444��000764��000764�� 371�12322253245� 20621� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Ulm ] [ Bonn ] --> [ Berlin ] [ Bonn ] --> [ Koblenz ] [ Berlin ] --> [ Kassel ] [ Koblenz ] --> [ Berlin ] [ Ulm ] --> [ Bautzen ] [ Ulm ] --> [ Bautzen ] [ Ulm ] --> [ Koblenz ] [ Bautzen ] --> [ Berlin ] [ Bautzen ] --> [ Berlin ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/1_empty_group.txt�������������������������������������������������������������000444��000764��000764�� 57�12322253245� 20416� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Group ) { background: yellow; } [ Outside ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_dot.txt���������������������������������������������������������������������000444��000764��000764�� 103�12322253245� 16643� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { label: // digraph G {; } [ Kummersbach ] --> [ Düsburg ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_autosplit_offset.txt��������������������������������������������������������000444��000764��000764�� 140�12322253245� 21452� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 1 ] { size: 1,2; } [ 2|3 ] { offset: 2,1; origin: 1; } [ 1 ] --> [ 23.1 ] [ 23.1 ] --> [ 3 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_autosplit_empty.txt���������������������������������������������������������000444��000764��000764�� 35�12322253245� 21305� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 1 ] --> [ 23.1 ] [ 2| |3 ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_split_bug.txt���������������������������������������������������������������000444��000764��000764�� 33�12322253245� 20027� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Some \[\] || Autosplit ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_joint.txt�������������������������������������������������������������������000444��000764��000764�� 303�12322253245� 17204� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ B ] { offset: 2,0; origin: A; size: 2,1; } [ C ] { offset: 2,-2; origin: B; } [ A ] --> { end: south, 0; start: south; } [ C ] [ B ] --> { end: south, 0; start: south; } [ C ] [ B ] --> [ U ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_split_attribute.txt���������������������������������������������������������000444��000764��000764�� 153�12322253245� 21301� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { color: silver; } [ Some || Autosplit || Node ] { basename: u; color: red|blue; border: dashed|; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_nested_groups.txt�����������������������������������������������������������000444��000764��000764�� 251�12322253245� 20746� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Inner 1 [ A ] [ B ] ) { group: Outer; } ( Inner 2 [ C ] [ D ] ) { group: Outer; } ( Outer [ E ] [ F ] ) [ A ] --> [ B ] [ C ] --> [ D ] [ E ] --> [ F ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_invisible_both.txt����������������������������������������������������������000444��000764��000764�� 42�12322253245� 21040� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ ] --> [ Bonn ] [ Bonn ] --> [ ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_selfloop_flow_left.txt������������������������������������������������������000444��000764��000764�� 152�12322253245� 21746� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 270; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] --> [ End ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_offsets_2.txt���������������������������������������������������������������000444��000764��000764�� 327�12322253245� 17762� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { offset: 2,1; origin: B; } [ B ] { offset: 1,1; origin: C; } [ C ] { offset: 1,1; origin: D; } [ A ] --> [ B ] [ E ] --> [ D ] [ B ] --> [ A ] [ B ] --> [ C ] [ B ] --> [ C ] [ D ] --> [ C ] [ D ] --> [ C ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_long_edge_labels.txt��������������������������������������������������������000444��000764��000764�� 230�12322253245� 21326� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] --> [ B ] [ A ] -- very long edge label --> [ E ] [ B ] --> [ C ] [ E ] -- another very long edge label --> [ A ] [ C ] --> [ D ] [ D ] --> [ E ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_graph_label.txt�������������������������������������������������������������000444��000764��000764�� 115�12322253245� 20320� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { label: My Graph; labelpos: top; } [ Regensburg ] --> [ Passau ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_cluster_2.txt���������������������������������������������������������������000444��000764��000764�� 154�12322253245� 17765� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Altona ] { size: 3,2; } [ Hamburg ] { size: 2,2; } [ Hamburg ] --> [ Altona ] [ Hamburg ] --> [ Altona ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_edges.txt�������������������������������������������������������������������000444��000764��000764�� 50�12322253245� 17125� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ One ] --> [ Two ] [ One ] --> [ Two ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/8_labels.txt������������������������������������������������������������������000444��000764��000764�� 1035�12322253245� 17352� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { color: blue; labelcolor: green; } graph { background: oldlace; label: My sample graph; border: solid black; } [ Five ] { color: yellow; fill: maroon; } [ One ] { color: white; fill: seagreen; } [ Two ] { shape: triangle; } [ Five ] - Test label - > { color: red; labelcolor: darkslategrey; } [ Seven ] [ Five ] --> [ Seven ] [ Five ] <==> [ Three ] [ Five ] --> [ Eight ] [ One ] ==> [ Three ] [ One ] .. Test\n label ..> [ Four ] [ One ] -- label --> [ Two ] [ Seven ] -- [ Eight ] [ Three ] <.. Test label ..> [ Six ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4groups.txt�������������������������������������������������������������������000444��000764��000764�� 151�12322253245� 17242� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( German Cities [ Bremen ] [ Cuxhaven ] [ Flensburg ] [ Hamburg ] ) [ Cuxhaven ] --> [ Bremen ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_fanout.txt������������������������������������������������������������������000444��000764��000764�� 562�12322253245� 17366� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { label: Hello World!; } [ B ] { label: Hello World!; } [ C ] { label: Hello World!; } [ D ] { label: Hello World!; } [ middle ] { fill: #ccccff; label: /dev/fanout; } [ Hello World ] --> [ middle ] [ middle ] --> { start: front,0; } [ A ] [ middle ] --> { start: front,0; } [ B ] [ middle ] --> { start: front,0; } [ C ] [ middle ] --> { start: front,0; } [ D ] ����������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_endless_loop.txt������������������������������������������������������������000444��000764��000764�� 75�12322253245� 20535� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 2 ] { fill: red; } [ 3|4 ] { fill: red; } [ 1 ] --> [ 2 ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/0_empty_groups.txt������������������������������������������������������������000444��000764��000764�� 17�12322253245� 20574� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( ) ( ) ( ) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_group_no_border.txt���������������������������������������������������������000444��000764��000764�� 124�12322253245� 21245� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Test\n group [ Berlin ] [ Bonn ] ) { border: none; } [ Bonn ] --> [ Berlin ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_nodes_5_edges.txt�����������������������������������������������������������000444��000764��000764�� 247�12322253245� 20573� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Default Page ] --> [ Sign Up ] [ Default Page ] --> [ Test Search ] [ Default Page ] ..> [ Main Page ] [ Sign Up ] --> [ Main Page ] [ Test Search ] --> [ Sign Up ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_cache_bug.txt���������������������������������������������������������������000444��000764��000764�� 210�12322253245� 17755� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { flow: east; } [ B ] { offset: 2,2; origin: A; } ( G [ A ] ) [ A ] -- C --> { end: north; start: east; } [ B ] [ B ] --> [ ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_empty_row.txt���������������������������������������������������������������000444��000764��000764�� 60�12322253245� 20070� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A|| ||B ] [ AB.0 ] --> [ CD.0 ] [ C|| ||D ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_group_align_center.txt������������������������������������������������������000444��000764��000764�� 642�12322253245� 21734� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { align: right; } graph { fontsize: 2em; label: My Graph; } node.left { align: left; fontsize: 1.5em; } [ Left\naligned ] { class: left; } [ Right\nAligned ] { align: right; } ( Nodes: [ Center\n aligned ] [ Left\naligned ] [ Right\nAligned ] ) { align: center; border: none; } [ Right\nAligned ] -- label\n text --> { align: right; } [ Left\naligned ] [ Left\naligned ] --> [ Center\n aligned ] ����������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_list_attr.txt���������������������������������������������������������������000444��000764��000764�� 462�12322253245� 20074� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Berlin ] { border: dashed; } [ Bonn ] { border: dashed; } [ Frankfurt ] { border: dot-dot-dash; } [ Frankfurt (Oder) ] { border: dot-dot-dash; } [ Berlin ] -- test --> [ Frankfurt ] [ Berlin ] -- test --> [ Frankfurt (Oder) ] [ Bonn ] -- test --> [ Frankfurt ] [ Bonn ] -- test --> [ Frankfurt (Oder) ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_edge_labels.txt�������������������������������������������������������������000444��000764��000764�� 202�12322253245� 20305� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] == train ==> [ Berlin ] [ Bonn ] -- car --> [ Potsdam ] [ Berlin ] .. bus ..> [ Potsdam ] [ Berlin ] .- bike .-> [ Ulm ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_selfloop.txt����������������������������������������������������������������000444��000764��000764�� 245�12322253245� 17707� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 180; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] -- Until not done --> [ Main ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4groups_class.txt�������������������������������������������������������������000444��000764��000764�� 257�12322253245� 20436� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node.city { color: #801010; } ( German Cities [ Bremen ] [ Cuxhaven ] [ Flensburg ] [ Hamburg ] ) { nodeclass: city; border: dot-dash; } [ Cuxhaven ] --> [ Bremen ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_nodes_6_edges.txt�����������������������������������������������������������000444��000764��000764�� 312�12322253245� 20565� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Default Page ] --> [ Sign Up ] [ Default Page ] --> [ Test Search ] [ Default Page ] --> [ Main Page ] [ Default Page ] --> [ Main Page ] [ Sign Up ] --> [ Main Page ] [ Test Search ] --> [ Sign Up ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_multicell.txt���������������������������������������������������������������000444��000764��000764�� 513�12322253245� 20057� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: up; } [ Client ] { offset: 0,2; origin: Proxy; } [ Client1 ] { offset: 0,-2; origin: Proxy; } [ Client2 ] { offset: 2,0; origin: Proxy; } [ Client3 ] { offset: -2,0; origin: Proxy; } [ Proxy ] { size: 3,2; } [ Client ] <--> [ Proxy ] [ Client1 ] <--> [ Proxy ] [ Client2 ] <--> [ Proxy ] [ Client3 ] <--> [ Proxy ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_empty_group.txt�������������������������������������������������������������000444��000764��000764�� 53�12322253245� 20414� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( [ A ] [ B ] ) [ A ] --> [ B ] [ C ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_autosplit_hang.txt����������������������������������������������������������000444��000764��000764�� 33�12322253245� 21061� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 1 ] --> [ 23.0 ] [ 2|3 ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_cluster_3.txt���������������������������������������������������������������000444��000764��000764�� 207�12322253245� 17765� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Altona ] { size: 3,2; } [ Hamburg ] { size: 2,2; } [ Hamburg ] --> [ Altona ] [ Hamburg ] --> [ Altona ] [ Hamburg ] --> [ Altona ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_corrupt.txt�����������������������������������������������������������������000444��000764��000764�� 142�12322253245� 17557� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { label: AB; } [ B ] { label: ABCB; } [ C ] { label: AB; } [ A ] --> [ B ] [ B ] --> [ C ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_node_edge.txt���������������������������������������������������������������000444��000764��000764�� 113�12322253245� 17771� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ test ] { shape: edge; } [ A ] -- [ test ] [ test ] -- [ ] [ ] --> [ B ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_inherit.txt�����������������������������������������������������������������000444��000764��000764�� 332�12322253245� 17524� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: down; } node { align: left; } node.right { align: right; } [ Left ] { class: none; } [ Lefty, too ] { class: none; } [ Right ] { class: right; } [ Left ] --> [ Lefty, too ] [ Lefty, too ] --> [ Right ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_edge_repair.txt�������������������������������������������������������������000444��000764��000764�� 170�12322253245� 20330� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Router: [ Input ] [ Output ] ) [ Input ] --> [ Output ] [ Output ] ==> { end: north; start: south; } [ Network ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_zeros.txt�������������������������������������������������������������������000444��000764��000764�� 102�12322253245� 17216� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 10 ] { label: 0; } [ 0 ] -- 0 --> [ 10 ] [ 10 ] -- 0 --> [ 0 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/7_tree.txt��������������������������������������������������������������������000444��000764��000764�� 320�12322253245� 17022� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { start: south, 0; } [ A1 ] { offset: 2,1; origin: A; } [ A23 ] { offset: 2,1; origin: A2; } [ A ] --> [ A2 ] [ A ] --> [ A1 ] [ A ] --> [ A3 ] [ A2 ] --> [ A21 ] [ A2 ] --> [ A22 ] [ A2 ] --> [ A23 ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_classes.txt�����������������������������������������������������������������000444��000764��000764�� 555�12322253245� 17525� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge.blue { color: blue; } edge.green { color: blue; } edge.red { color: red; } group { color: blue; } group.blue { color: blue; } group.green { color: blue; } group.red { color: red; } node.blue { color: blue; } node.green { color: blue; } node.red { color: red; } [ Black ] { class: green; } [ Red ] { class: red; } [ Red ] -- red --> { class: red; } [ Black ] ���������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_edge_labels_from_class.txt��������������������������������������������������000444��000764��000764�� 143�12322253245� 22520� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { label: MyLabel; } edge.yes { label: Yes; } [ A ] --> { class: yes; } [ B ] [ B ] --> [ C ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_flow.txt��������������������������������������������������������������������000444��000764��000764�� 110�12322253245� 17022� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 90; } [ Left ] --> { end: left; start: left; } [ Right ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_long_labels.txt�������������������������������������������������������������000444��000764��000764�� 72�12322253245� 20323� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ My\n long\n node\n name ] -- A\n long\n label --> [ B ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_flow.txt��������������������������������������������������������������������000444��000764��000764�� 164�12322253245� 17034� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: down; } [ Enschede ] { flow: left; } [ Enschede ] --> [ Bielefeld ] [ Bielefeld ] --> [ Wolfsburg ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2nodes.txt��������������������������������������������������������������������000444��000764��000764�� 24�12322253245� 17010� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ One ] ==> [ Two ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_selfloop.txt����������������������������������������������������������������000444��000764��000764�� 124�12322253245� 17704� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] --> [ End ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_autosplit_class.txt���������������������������������������������������������000444��000764��000764�� 157�12322253245� 21301� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { border: double; } node.b { border: dotted; } node.c { border: dashed; } [ C|D ] { class: c; } [ A|B ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_offsets.txt�����������������������������������������������������������������000444��000764��000764�� 247�12322253245� 17542� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { offset: 2,1; origin: B; } [ B ] { offset: 1,1; origin: C; } [ C ] { offset: 1,1; origin: D; } [ A ] --> [ B ] [ B ] --> [ C ] [ C ] --> [ D ] [ D ] --> [ E ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_selfloop_flow_up.txt��������������������������������������������������������000444��000764��000764�� 150�12322253245� 21436� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 0; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] --> [ End ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_group_multicell.txt���������������������������������������������������������000444��000764��000764�� 253�12322253245� 21271� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Frankfurt a. Main\n (Flughafen) ] { size: 2,2; } ( Some group: [ Berlin ] [ Frankfurt a. Main\n (Flughafen) ] ) [ Frankfurt a. Main\n (Flughafen) ] --> [ Berlin ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_cluster.txt�����������������������������������������������������������������000444��000764��000764�� 121�12322253245� 17536� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Altona ] { size: 3,2; } [ Hamburg ] { size: 2,2; } [ Hamburg ] --> [ Altona ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_autosplit_shape.txt���������������������������������������������������������000444��000764��000764�� 65�12322253245� 21252� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A|B ] { shape: |none; } [ C|D ] { shape: none|; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_autosplit_class.txt���������������������������������������������������������000444��000764��000764�� 222�12322253245� 21274� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node.red { color: red; columns: 2; label: D; } [ A|B|C ] { basename: A; class: red; } [ 1 ] --> [ A.0 ] [ 2 ] --> [ 3 ] [ 2 ] --> [ A.0 ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_cross_split.txt�������������������������������������������������������������000444��000764��000764�� 264�12322253245� 20433� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ B ] { offset: 4,0; origin: A; } [ C ] { offset: 2,-2; origin: A; } [ D ] { offset: 2,2; origin: A; } ( Cross: [ A ] [ B ] [ C ] [ D ] ) [ A ] --> [ B ] [ C ] --> [ D ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/1_undirected_loop.txt���������������������������������������������������������000444��000764��000764�� 74�12322253245� 21222� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] -- [ A ] [ A ] -- [ A ] [ A ] -- [ A ] [ A ] -- [ A ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/8_points.txt������������������������������������������������������������������000444��000764��000764�� 524�12322253245� 17406� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { shape: point; } [ B ] { pointstyle: square; } [ C ] { pointstyle: dot; } [ D ] { pointstyle: circle; } [ E ] { pointstyle: diamond; } [ F ] { pointstyle: cross; } [ G ] { shape: invisible; } [ H ] { pointstyle: star; } [ A ] --> [ B ] [ B ] --> [ C ] [ C ] --> [ D ] [ D ] --> [ E ] [ E ] --> [ F ] [ F ] --> [ G ] [ G ] --> [ H ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_multicell.txt���������������������������������������������������������������000444��000764��000764�� 316�12322253245� 20061� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { size: 2,2; } [ B ] { rows: 2; } [ C ] { size: 3,1; } [ A ] --> [ B ] [ A ] --> [ B ] [ A ] --> [ F ] [ A ] --> [ G ] [ B ] --> [ C ] [ B ] --> [ C ] [ B ] --> [ C ] [ C ] --> [ D ] [ D ] --> [ C ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/6_split_join_loop.txt���������������������������������������������������������000444��000764��000764�� 276�12322253245� 21277� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] --> [ B ] [ B ] --> [ C ] [ C ] --> { start: front, 0; } [ X ] [ C ] --> { start: front, 0; } [ Y ] [ X ] --> { end: back, 0; } [ I ] [ Y ] --> { end: back, 0; } [ I ] [ I ] --> [ A ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_joint_bug2.txt��������������������������������������������������������������000444��000764��000764�� 564�12322253245� 20135� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { flow: south; size: 5,1; } [ B ] { offset: 0,2; origin: A; } [ C ] { offset: 2,0; origin: B; } [ D ] { offset: 2,0; origin: C; } [ E ] { offset: 2,0; origin: A; } [ A ] <--> [ B ] [ A ] <--> [ C ] [ A ] <--> [ D ] [ B ] <--> { end: south, 0; start: south; } [ E ] [ C ] <--> { end: south, 0; start: south; } [ E ] [ D ] <--> { end: south, 0; start: south; } [ E ] ��������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_joint_label.txt�������������������������������������������������������������000444��000764��000764�� 334�12322253245� 20350� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Aachen ] -- travel --> { end: back, 0; } [ Zittau ] [ Buxtehude ] -- travel --> { end: back, 0; } [ Zittau ] [ Cottbus ] -- travel --> { end: back, 0; } [ Zittau ] [ Dachau ] -- travel --> { end: back, 0; } [ Zittau ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/3_joint.txt�������������������������������������������������������������������000444��000764��000764�� 131�12322253245� 17202� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Mannheim ] --> { end: back,0; } [ Weimar ] [ Potsdam ] --> { end: back,0; } [ Weimar ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/4_near.txt��������������������������������������������������������������������000444��000764��000764�� 112�12322253245� 17004� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Berlin ] [ Essen ] --> [ Berlin ] [ Berlin ] --> [ Koeln ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/2_autosplit_empty.txt���������������������������������������������������������000444��000764��000764�� 26�12322253245� 21303� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Siegen | Siegburg ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/5_joint.txt�������������������������������������������������������������������000444��000764��000764�� 1030�12322253245� 17223� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Aachen ] { offset: 0,2; origin: Hannover; } [ Berlin ] { offset: 2,0; origin: Aachen; } [ Cuxhaven ] { offset: 4,0; origin: Aachen; } [ Hannover ] { flow: down; } [ Zwickau ] { offset: 2,-2; origin: Hannover; } [ Hannover ] --> { start: south; } [ Aachen ] [ Hannover ] --> { start: south; } [ Berlin ] [ Hannover ] --> { start: south; } [ Cuxhaven ] [ Aachen ] --> { end: south, 0; start: south; } [ Zwickau ] [ Berlin ] --> { end: south, 0; start: south; } [ Zwickau ] [ Cuxhaven ] --> { end: south, 0; start: south; } [ Zwickau ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot���������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15552� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_square_bracket_in_attr.txt����������������������������������������������000444��000764��000764�� 176�12322253245� 23370� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ a ] { label: ] ; } [ a ] --> [ b ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/4_loose.txt���������������������������������������������������������������000444��000764��000764�� 255�12322253245� 17776� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: unnamed; type: undirected; } [ A ] -- [ B ] [ B ] -- [ C ] [ C ] -- [ D ] [ D ] -- [ A ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/4_html_like.txt�����������������������������������������������������������000444��000764��000764�� 272�12322253245� 20624� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ first ] { label: ; } [ fourth ] { label: a; } [ second ] { label: ; } [ third ] { label: ; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_ignore.txt��������������������������������������������������������������000444��000764��000764�� 157�12322253245� 20137� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ node1 ] --> [ node2 ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/5_scopes_uni.txt����������������������������������������������������������000444��000764��000764�� 267�12322253245� 21030� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: GRAPH_0; } [ a ] -- [ b ] [ a ] -- [ c ] [ a ] -- [ d ] [ b ] -- [ o ] [ c ] -- [ o ] [ d ] -- [ o ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_nospace.txt�������������������������������������������������������������000444��000764��000764�� 163�12322253245� 20301� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: mike; } [ mike ] --> [ michael ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/6_group_align.txt���������������������������������������������������������000444��000764��000764�� 272�12322253245� 21164� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Center: [ E ] [ F ] ) { align: center; } ( Left: [ A ] [ B ] ) { align: left; } ( Right: [ C ] [ D ] ) { align: right; } [ A ] --> [ B ] [ C ] --> [ D ] [ E ] --> [ F ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/3_graph_label_long.txt����������������������������������������������������000444��000764��000764�� 305�12322253245� 22127� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; label: Deutsche Städte am Rhein; labelpos: bottom; title: GRAPH_0; } [ Köln ] --> [ Bonn ] [ Bonn ] --> [ Koblenz ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/4_uppercase.txt�����������������������������������������������������������000444��000764��000764�� 532�12322253245� 20642� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: graph; } group { align: center; fill: inherit; } [ a ] { border: dotted black; } [ b ] { border: dotted black; } [ c ] { border: dotted black; } [ d ] { border: dotted black; } ( cluster_me [ a ] [ b ] ) [ a ] -- foo --> [ b ] [ c ] -- foo --> [ d ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/7_record.txt��������������������������������������������������������������000444��000764��000764�� 345�12322253245� 20136� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { align: left; colorscheme: x11; flow: south; label: Left aligned label; title: gaph; } [ <f1> Aa \| <f2> Bb \| Cc ] { shape: rect; } [ AA | BB | CC ] { basename: a; } [ A | B | C ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_setlinewidth.txt��������������������������������������������������������000444��000764��000764�� 274�12322253245� 21357� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: unnamed; } [ Berlin ] { shape: rect; border: broad; } [ Bonn ] { border: bold; } [ Bonn ] --> [ Berlin ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/3_ids.txt�����������������������������������������������������������������000444��000764��000764�� 164�12322253245� 17432� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ 123 ] [ abc ] --> [ test ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/0_empty.txt���������������������������������������������������������������000444��000764��000764�� 135�12322253245� 20004� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: unnamed; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/9_stacking.txt������������������������������������������������������������000444��000764��000764�� 352�12322253245� 20463� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: east; title: G; } [ 0 ] --> [ 11 ] [ 11 ] --> [ 1 ] [ 1 ] --> [ 10 ] [ 1 ] --> [ 2 ] [ 10 ] --> [ 6 ] [ 2 ] --> [ 3 ] [ 3 ] --> [ 8 ] [ 8 ] --> [ 5 ] [ 5 ] --> [ 6 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/10_numbers.txt������������������������������������������������������������000444��000764��000764�� 313�12322253245� 20400� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ -100 ] --> [ 123.1230 ] [ .1 ] --> [ -1. ] [ .99 ] --> [ 0. ] [ 0.99 ] --> [ 12.88 ] [ 00019.1001 ] --> [ 1000. ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/9_back.txt����������������������������������������������������������������000444��000764��000764�� 352�12322253245� 17560� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: east; title: G; } [ 0 ] --> [ 11 ] [ 5 ] --> [ 6 ] [ 5 ] --> [ 8 ] [ 11 ] --> [ 1 ] [ 1 ] --> [ 10 ] [ 1 ] --> [ 2 ] [ 10 ] --> [ 6 ] [ 2 ] --> [ 3 ] [ 3 ] --> [ 8 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/3_colors.txt��������������������������������������������������������������000444��000764��000764�� 535�12322253245� 20156� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } group { align: center; fill: inherit; } [ A ] { color: red; } [ B ] { color: #ffff99; } [ C ] { color: #ff0000; } ( cluster_1 [ A ] [ B ] ) { border: dashed #ff0000; } [ A ] --> { color: #ff0000ff; } [ B ] [ B ] --> { color: hsv(1.0,1.0,1.0); } [ C ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/3_empty_record.txt��������������������������������������������������������000444��000764��000764�� 216�12322253245� 21345� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ Compositor| |Compose() ] { basename: Compositor; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_ports.txt���������������������������������������������������������������000444��000764��000764�� 217�12322253245� 20020� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: ports; } [ north ] --> { end: west; start: east; } [ south ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_no_spaces.txt�����������������������������������������������������������000444��000764��000764�� 210�12322253245� 20614� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: unnamed; type: undirected; } [ bonn ] -- [ berlin ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_bool.txt����������������������������������������������������������������000444��000764��000764�� 157�12322253245� 17607� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ Bonn ] --> [ Berlin ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/5_scopes.txt��������������������������������������������������������������000444��000764��000764�� 275�12322253245� 20154� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: GRAPH_0; } [ a ] --> [ b ] [ a ] --> [ c ] [ a ] --> [ d ] [ b ] --> [ u ] [ c ] --> [ u ] [ d ] --> [ u ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_group_labelloc.txt������������������������������������������������������000444��000764��000764�� 447�12322253245� 21647� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: GRAPH_0; } group { align: center; fill: inherit; } ( cluster0 [ Wasserkuppe ] [ Zugspitze ] ) { align: left; label: Bergtour:; labelpos: bottom; border: dashed black; } [ Zugspitze ] --> [ Wasserkuppe ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/9_tree.txt����������������������������������������������������������������000444��000764��000764�� 406�12322253245� 17617� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ | A| ] { basename: node0; } [ | B| ] { basename: node1; } [ | C| ] { basename: node2; } [ node0.0 ] --> [ node1.1 ] [ node0.2 ] --> [ node2.2 ] [ node1.0 ] --> [ node2.1 ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/5_scope_atr.txt�����������������������������������������������������������000444��000764��000764�� 334�12322253245� 20633� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: GRAPH_0; } [ b ] { shape: rounded; } [ c ] { shape: none; } [ d ] { shape: none; } [ a ] [ b ] --> [ u ] [ c ] --> [ u ] [ d ] --> [ u ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/6_comments.txt������������������������������������������������������������000444��000764��000764�� 347�12322253245� 20506� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: GRAPH_0; } [ a ] --> [ b ] [ a ] --> [ c ] [ a ] --> [ d ] [ my node /* not a comment */ ] --> [ b ] [ b ] --> [ u ] [ c ] --> [ u ] [ d ] --> [ u ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_comment_inside_attr.txt�������������������������������������������������000444��000764��000764�� 174�12322253245� 22702� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ a ] { label: a; } [ a ] --> [ b ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/3_output_lone.txt���������������������������������������������������������000444��000764��000764�� 175�12322253245� 21232� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; output: html; title: G; } [ a ] --> [ b ] [ c ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/5_scopes_chain.txt��������������������������������������������������������000444��000764��000764�� 275�12322253245� 21316� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: GRAPH_0; } [ a ] --> [ b ] [ a ] --> [ c ] [ a ] --> [ d ] [ b ] --> [ o ] [ c ] --> [ o ] [ d ] --> [ o ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/3_empty_record_LR.txt�����������������������������������������������������000444��000764��000764�� 220�12322253245� 21735� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: east; title: G; } [ Compositor|| || Compose() ] { basename: Compositor; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/16_split.txt��������������������������������������������������������������000444��000764��000764�� 464�12322253245� 20075� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: SPLIT; } [ nil| | | 0 ] { basename: 0; } [ nil| | | 1 ] { basename: 1; } [ nil| | | 2 ] { basename: 2; } [ nil| | | 3 ] { basename: 3; } [ 0.0 ] --> [ 1.3 ] [ 0.3 ] --> [ 1.0 ] [ 2.0 ] --> [ 3.3 ] [ 2.3 ] --> [ 3.0 ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/4_record.txt��������������������������������������������������������������000444��000764��000764�� 301�12322253245� 20123� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ test | split ] { basename: node1; } [ record | test ] { basename: node2; } [ node1.0 ] --> [ node2.1 ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/4_strings.txt�������������������������������������������������������������000444��000764��000764�� 456�12322253245� 20351� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: graph0; } [ Cottbus ] { label: Cottbus; } [ berlin ] { label: Berlin Ost; } [ bonn ] { label: Bonn am Rhein; } [ bonntest ] { label: Bonn (Rhei n); } [ bonn ] -- train (ICE) --> [ berlin ] [ bonntest ] --> [ Cottbus ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/4_cluster_labeljust.txt���������������������������������������������������000444��000764��000764�� 557�12322253245� 22410� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } group { align: center; fill: inherit; } ( cluster_0 [ aaaaaaaaaaaaaaaaaaa ] [ b ] ) { align: right; label: Right aligned; } ( cluster_1 [ c ] [ ddddddddddddddd ] ) { align: left; label: Left aligned; } [ aaaaaaaaaaaaaaaaaaa ] --> [ b ] [ c ] --> [ ddddddddddddddd ] �������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_linewidth.txt�����������������������������������������������������������000444��000764��000764�� 401�12322253245� 20633� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; x-dot-overlap: false; x-dot-ratio: fill; x-dot-size: 11,8.5; } [ 123 ] { fontsize: 10px; shape: none; } [ foo ] { fontsize: 10px; shape: none; } [ 123 ] --> [ foo ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_strict.txt��������������������������������������������������������������000444��000764��000764�� 166�12322253245� 20164� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ Wolfsbüttel ] --> [ Köln ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/2_graph_label_bottom.txt��������������������������������������������������000444��000764��000764�� 250�12322253245� 22472� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; label: Deutsche Städte; labelpos: bottom; title: GRAPH_0; } [ Köln ] --> [ Stralsund ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/3_invis.txt���������������������������������������������������������������000444��000764��000764�� 302�12322253245� 17775� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } [ a ] { shape: rect; } [ b ] { shape: invisible; } [ c ] { shape: rect; } [ a ] --> [ b ] [ b ] --> [ c ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/9_edge_styles.txt���������������������������������������������������������000444��000764��000764�� 2174�12322253245� 21213� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; x-dot-clusterrank: local; x-dot-margin: 0; x-dot-nodesep: 0.2; x-dot-ranksep: 0.2; x-dot-ratio: auto; } [ A ] { color: lightsalmon; font: Helvetica; fontsize: 14px; shape: rect; } [ B ] { color: lightsalmon; font: Helvetica; fontsize: 14px; shape: rect; } [ C ] { color: lightsalmon; font: Helvetica; fontsize: 14px; shape: rect; } [ D ] { color: lightsalmon; font: Helvetica; fontsize: 14px; shape: rect; } [ E ] { color: lightsalmon; font: Helvetica; fontsize: 14px; shape: rect; } [ F ] { color: lightsalmon; font: Helvetica; fontsize: 14px; shape: rect; } [ G ] { color: lightsalmon; font: Helvetica; fontsize: 14px; shape: rect; } [ H ] { color: lightsalmon; font: Helvetica; fontsize: 14px; shape: rect; } [ I ] { color: lightsalmon; font: Helvetica; fontsize: 14px; shape: rect; } [ A ] --> { style: bold; } [ B ] [ A ] --> { style: bold; } [ F ] [ B ] --> { style: bold; } [ C ] [ F ] --> { style: bold; } [ G ] [ C ] --> { style: bold; } [ D ] [ G ] --> { style: bold; } [ H ] [ D ] --> { style: bold; } [ E ] [ H ] --> { style: bold; } [ I ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/4_compass.txt�������������������������������������������������������������000444��000764��000764�� 375�12322253245� 20325� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: unnamed; } [ berlin N | w ] { basename: berlin; } [ bonn N | S ] { basename: bonn; } [ bonn.1 ] --> { end: west; start: south; } [ berlin.0 ] [ bonn.1 ] --> [ berlin.1 ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/6_2_cluster.txt�����������������������������������������������������������000444��000764��000764�� 600�12322253245� 20553� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; title: G; } group { align: center; fill: inherit; } ( cluster_first [ a ] [ b ] ) { label: first; } ( cluster_second [ p ] [ q ] [ r ] [ s ] ) { label: second; } [ a ] --> [ b ] [ b ] --> [ q ] [ q ] --> [ r ] [ r ] --> { style: bold; } [ a ] [ r ] --> [ s ] [ s ] --> [ p ] [ p ] --> [ q ] ��������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/dot/3_node_label.txt����������������������������������������������������������000444��000764��000764�� 332�12322253245� 20734� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { colorscheme: x11; flow: south; label: \G; title: Graphname; } [ 0 ] { label: \G \N; } [ 1 ] { label: \G \N; } [ 2 ] { label: Name: \N \G; } [ 0 ] -- \E \G \T \H --> [ 1 ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/gdl���������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15532� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/gdl/2_bottom_to_top.txt�������������������������������������������������������000444��000764��000764�� 133�12322253245� 21516� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { flow: north; } node { align: left; } [ A ] --> [ B ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/gdl/1_color_code.txt����������������������������������������������������������000444��000764��000764�� 350�12322253245� 20736� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { flow: south; label: Graph of sub_105D40F; } node { align: left; } [ 0 ] { label: sub_105D40F:\nmov edi, esi\npush ebp\njz short loc_105D27B; rank: 0; x-vcg-vertical_order: 0; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/gdl/2_right_to_left.txt�������������������������������������������������������000444��000764��000764�� 132�12322253245� 21456� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { flow: west; } node { align: left; } [ A ] --> [ B ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/gdl/2_left_to_right.txt�������������������������������������������������������000444��000764��000764�� 132�12322253245� 21456� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { flow: east; } node { align: left; } [ A ] --> [ B ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/txt/gdl/2_top_to_bottom.txt�������������������������������������������������������000444��000764��000764�� 133�12322253245� 21516� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrowstyle: filled; } graph { flow: south; } node { align: left; } [ A ] --> [ B ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in��������������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 14553� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_selfloop_flip.txt������������������������������������������������������������000444��000764��000764�� 125�12322253245� 20506� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Adenau ] -> [ Monschau ] [ Monschau ] -> [ Monschau ] [ Nideggen ] -> [ Monschau ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_bug_basename.txt�������������������������������������������������������������000444��000764��000764�� 230�12322253245� 20257� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ u ] --> [ a | b | c ] # putting the attributes on an extra line failed prior to v0.55 due to # the basename being wrong: { basename: pv; } [ pv.0 ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_nodes_5_edges.txt������������������������������������������������������������000444��000764��000764�� 251�12322253245� 20354� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Default Page ] --> [ Sign Up ] [ Sign Up ] --> [ Main Page ] [ Default Page ] .-> [ Main Page ] [ Default Page ] = > [ Main Page ] [ Default Page ] - > [ Main Page ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_cluster.txt������������������������������������������������������������������000444��000764��000764�� 160�12322253245� 17331� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A node-cluster (autosplit into three single nodes) [ Husum | Schleswig | Flensburg ] { background: #ddaaff; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_label_align.txt��������������������������������������������������������������000444��000764��000764�� 117�12322253245� 20102� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Long Node Label\l left\r right\c center ] -- A\r long\n edge label --> [ B ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_selfloop_flow_down.txt�������������������������������������������������������000444��000764��000764�� 152�12322253245� 21552� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 180; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] --> [ End ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_att.txt����������������������������������������������������������������������000444��000764��000764�� 213�12322253245� 16440� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { title: 100%25; } [ 1 ] { label: $a = %229%22%3b\nmy $b = 1%3b; } [ 3 ] { label: $a = %22%3b%25; } [ 1 ] --> [ 2 ] [ 3 ] --> [ 4 ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_flow_chain.txt���������������������������������������������������������������000444��000764��000764�� 123�12322253245� 17761� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Bonn ] -> { flow: forward; } [ Berlin ] [ Bonn ] -> [ Cottbus ] --> [ Ulm ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/8_optimize_bend.txt������������������������������������������������������������000444��000764��000764�� 765�12322253245� 20520� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Example from Graphviz extension # http://www.wickle.com/wiki/index.php/Graphviz_extension node { shape: circle; } [ main ] { shape: rect; } # this is a comment -> [ parse ] -> [ execute ] -> [ make_string ] { label: make a\n string; } [ main ] ..> [ init ] [ main ] -- Testlabel --> [ cleanup ] [ init ] -> [ make_string ] [ main ] == 100 times ==> { color: red; style: dashed; } [ printf ] # dashed red edge! [ execute ] -> { color: red; } [ compare ] { shape: rect; background: #c1b2ff; } �����������Graph-Easy-0.75/t/in/6_chained.txt������������������������������������������������������������������000444��000764��000764�� 205�12322253245� 17246� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] -> [ Berlin ] -> [ Kassel ] [ Bonn ] -> [ Koblenz ] [ Bonn ] -> [ Ulm ] -> [ Koblenz ] [ Ulm ] -> [ Bautzen ] -> [ Berlin ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_comma.txt��������������������������������������������������������������������000444��000764��000764�� 36�12322253245� 16727� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ 1 ], [ 2 ], [ 3 ] -> [ 4 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_collapse.txt�����������������������������������������������������������������000444��000764��000764�� 251�12322253245� 17454� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A B C ] - A B C D -> [ X Z Y ] node.i { label: "S P A C Y"; } [ A ] { label: "S P A C E"; } --> { label: "S P A C E"; } [ B ] { class: i; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/9_flow_south.txt���������������������������������������������������������������000444��000764��000764�� 145�12322253245� 20052� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: down; } edge { start: south; } [A] --> [A1], [A2], [A3], [A4], [A5], [A6], [A7], [A8] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_nodes_edge.txt���������������������������������������������������������������000444��000764��000764�� 123�12322253245� 17744� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ test ] { shape: edge; } [ A ] -- [ test ] [ C ] --> [ test ] [ test ] --> [ B ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_wrap.txt���������������������������������������������������������������������000444��000764��000764�� 265�12322253245� 16626� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { textwrap: 6; } [ Frankfurt Oder\n Flughafen-Terminal ] -- Drive a car to the destination --> [ Small city near a beautyfull river ] { text-wrap: 10; align: right; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/8_invisible.txt����������������������������������������������������������������000444��000764��000764�� 1027�12322253245� 17664� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { border: 1px solid black; background: oldlace; label: My sample graph; } edge { label-color: green; color: blue; style: invisible; } [ One ] { fill: seagreen; color: white; } -- label --> [ Two ] { shape: triangle; } [ One ] => [ Three ] [ Five ] { fill: maroon; color: yellow; } <=> [ Three ] [ One ] .. Test\n label ..> [ Four ] [ Three ] <.. Test label ..> [ Six ] [ Five ] - Test label - > { label-color: darkslategrey; color: red; } [ Seven ] [ Seven ] -- [ Eight ] [ Five ] --> [ Eight ] [ Five ] --> [ Seven ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_group_labelpos.txt�����������������������������������������������������������000444��000764��000764�� 112�12322253245� 20661� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Bergtour: [ Zugspitze ] --> [ Wasserkuppe ] ) { labelpos: bottom; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_endless_loop_2.txt�����������������������������������������������������������000444��000764��000764�� 71�12322253245� 20541� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ 1 ] -> [ 2 ] [ 3 ] [ 4 ] { origin: 3; offset: 1,0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_multicell_offset.txt���������������������������������������������������������000444��000764��000764�� 346�12322253245� 21221� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Wide ] { size: 4,1; } -> [ B ] { offset: 2,0; origin: Wide; } [ Wide ] -> [ C ] { offset: -2,0; origin: Wide; } [ High ] { size: 1,4; } -> [ D ] { offset: 0,2; origin: High; } [ High ] -> [ E ] { offset: 0,-2; origin: High; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_group_align.txt��������������������������������������������������������������000444��000764��000764�� 203�12322253245� 20157� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Left: [ A ] -> [ B ]) { align: left; } ( Right: [ C ] -> [ D ]) { align: right; } ( Center: [ E ] -> [ F ]) { align: center; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/25_autosplit_empty.txt���������������������������������������������������������000444��000764��000764�� 251�12322253245� 21177� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ | C | ] [ | D | ] [ | E | ] [ | F | ] [|G|] [ |H| |] [ C.2 ] -> [ A1 ] [ D.2 ] -> [ A2 ] [ E.2 ] -> [ A3 ] [ F.2 ] -> [ A4 ] [ G.2 ] -> [ A5 ] [ H.3 ] -> [ A6 ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/8_align.txt��������������������������������������������������������������������000444��000764��000764�� 777�12322253245� 16765� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { label: My Graph; font-size: 2em; } node.left { align: left; font-size: 1.5em; } edge { align: right; } ( Nodes: [ Right\nAligned ] { align: right; } -- label\n text --> { align: right; } [ Left\naligned ] { class: left; }) { align: right; } [ Center\n aligned text] -- aligned\n left --> { align: left; } [ Rightmost ] { align: right; } [ B ] --> [ Left\n align\n no border ] { border: none; align: left; } --> [ center\n align\n no border ] { border: none; align: center; } --> [ A ] �Graph-Easy-0.75/t/in/4_2x2nodes.txt�����������������������������������������������������������������000444��000764��000764�� 105�12322253245� 17314� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Hamburg ] --> [ Altona ] [ Frankfurt ] --> [ Hof ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_minlen.txt�������������������������������������������������������������������000444��000764��000764�� 105�12322253245� 17132� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Berlin ] --> { minlen: 4; } [ Potsdam ], [ Cottbus ], [ Leipzig ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/1node.txt����������������������������������������������������������������������000444��000764��000764�� 10�12322253245� 16406� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ One ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_invisible.txt����������������������������������������������������������������000444��000764��000764�� 266�12322253245� 17644� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bischofswerda ] -> [ You don't see me! ] { shape: invisible; } -> [ Borna ] { shape: point; point-style: invisible; } -> [ Bremen ] [ You don't see me! ] -> [ Bischofswerda ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_autolabel.txt����������������������������������������������������������������000444��000764��000764�� 253�12322253245� 17622� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { autolabel: name, 20; autotitle: name; } [ Bonn ] { label: Bonn (ehemalige Bundeshauptstadt); } -- Acme Travels Incorporated --> [ Frankfurt (Main) / Flughafen ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_joint_short.txt��������������������������������������������������������������000444��000764��000764�� 162�12322253245� 20214� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ B ] { offset: 2,0; origin: A; }, [ A ] --> { start: south; end: south, 0; } [ C ] { offset: 2,-2; origin: B; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_flow.txt���������������������������������������������������������������������000444��000764��000764�� 202�12322253245� 16615� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Passau ] -> { flow: down; } [ Siegen ] -> { flow: right; } [ Regensburg ] [ Siegen ] -> { flow: left; } [ Aschaffenburg ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_lists.txt��������������������������������������������������������������������000444��000764��000764�� 40�12322253245� 16763� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ], [ Ulm ] -> [ Berlin ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_list_attr.txt����������������������������������������������������������������000444��000764��000764�� 111�12322253245� 17650� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] { border-style: dotted; }, [ Berlin ] { border-style: dashed; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_tree_joint.txt���������������������������������������������������������������000444��000764��000764�� 420�12322253245� 20013� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ A ] [ A ] -> { start: south, 0; } [ A1 ] { origin: A; offset: 2,1; } [ A ] -> { start: south, 0; } [ A2 ] { origin: A; offset: 2,2; } [ A ] -> { start: south, 0; } [ A3 ] { origin: A; offset: 2,3; } [ A ] -> { start: south, 0; } [ A4 ] { origin: A; offset: 2,4; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_edge_cross.txt���������������������������������������������������������������000444��000764��000764�� 124�12322253245� 17766� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[E1] --> [S1] [E1] --> [S2] [E1] --> [E2] [E2] --> [S1] [E2] --> [S2] [S1] --> [S2] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3nodes.txt���������������������������������������������������������������������000444��000764��000764�� 52�12322253245� 16601� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ One ] ==> [ Two ] [ Two ] - > [ Three ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_newlines.txt�����������������������������������������������������������������000444��000764��000764�� 106�12322253245� 17473� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Berlin\n (W) ] -> [ Berlin\n (O) ] { border: dotted 1px black; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_autosplit_escaped.txt��������������������������������������������������������000444��000764��000764�� 20�12322253245� 21332� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ A \| B | C ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_invisible_left.txt�����������������������������������������������������������000444��000764��000764�� 22�12322253245� 20622� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[] --> [ Berlin ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_list_attr.txt����������������������������������������������������������������000444��000764��000764�� 177�12322253245� 17665� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] { border-style: dotted; }, [ Berlin ] { border-style: dashed; } -- test --> [ Frankfurt ] { border-style: dot-dash; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_bend_bug.txt�����������������������������������������������������������������000444��000764��000764�� 232�12322253245� 17416� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Berlin ] { offset: 0,2; origin: Bonn; } [ Frankfurt ] { offset: 2,2; origin: Bonn; } [ Ulm ] { offset: 2,0; origin: Bonn; } [ Bonn ] --> [ Frankfurt ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_rounded.txt������������������������������������������������������������������000444��000764��000764�� 307�12322253245� 17315� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { shape: rounded; } [ Pullach ] { border: dotted; } -> [ Parsing ] { border: dashed; } -> [ Pankow\n (Berlin) ] { border: double; } -> [ Pullheim ] { border: bold; } -> [ Paderborn ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/8_flow.txt���������������������������������������������������������������������000444��000764��000764�� 435�12322253245� 16631� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ East ] -> [ South ] { flow: south; } -> [ West ] -> { flow: west; } [ South Too ] --> { flow: down; } [ right (west) ] --> { flow: right; } [ left (south) ] --> { flow: left; } [ east (default) ] -> [ final ] #[ east (default) ] -> [ second ] #[ east (default) ] -> [ third ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_edge_types.txt���������������������������������������������������������������000444��000764��000764�� 116�12322253245� 20002� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bingen ] <--> [ Mainz ] [ Bischofswerde ] -- test-text --> [ Finsterwalde ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/10_repair.txt������������������������������������������������������������������000444��000764��000764�� 1126�12322253245� 17233� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( DMZ: [ Backend ] [ Database ] [ Proxy ] [ Server ] ) [ Proxy ] --> [ Check ] [ Proxy ] --> { flow: south; } [ Database ] [ Proxy ] --> [ Server ] [ Check ] --> [ Backend ] [ Database ] --> [ Backend ] ( DMZ1: [ 1Backend ] [ 1Database ] [ 1Proxy ] [ 1Server ] ) [ 1Proxy ] --> [ 1Check ] [ 1Proxy ] --> { flow: south; } [ 1Database ] [ 1Proxy ] --> [ 1Server ] [ 1Check ] --> [ 1Backend ] [ 1Database ] --> [ 1Backend ] [ 1Proxy ] --> [ 1Check ] [ 1Proxy ] --> { flow: south; } [ 1Database ] [ 1Proxy ] --> [ 1Server ] [ 1Check ] --> [ 1Backend ] [ 1Database ] --> [ 1Backend ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_joining.txt������������������������������������������������������������������000444��000764��000764�� 220�12322253245� 17302� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] --> { start: south,0; } [ B ] [ A ] --> { start: north,0; } [ B ] [ A ] --> { start: south,0; } [ C ] [ A ] --> { start: north,0; } [ C ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_label.txt��������������������������������������������������������������������000444��000764��000764�� 103�12322253245� 16723� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { label: A; } [ B ] -> [ C ] { link: http://bloodgate.com; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_selfloop_flow_down.txt�������������������������������������������������������000444��000764��000764�� 171�12322253245� 21552� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 180; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] -- Until done --> [ Main ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/0_empty_group.txt��������������������������������������������������������������000444��000764��000764�� 27�12322253245� 20201� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������(Group without a name) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/8_endless_loop.txt�������������������������������������������������������������000444��000764��000764�� 74�12322253245� 20327� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ 1 ], [ 2 ] -> [ 3 ] [ 1 ] -> [ 2 ] [ 3|4 ] [ 5|6|7 ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/18_multiples.txt���������������������������������������������������������������000444��000764��000764�� 732�12322253245� 17761� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { background: yellow; } [ Bonn ] ..> [ Berlin ] -> [ Kassel ] [ Bonn ] .-> [ Koblenz ] [ Bonn ] -> [ Ulm ] -> [ Koblenz ] [ Ulm ] -> [ Bautzen ] -> [ Berlin ] [ 1Bonn ] ..> [ 1Berlin ] -> [ 1Kassel ] [ 1Bonn ] .-> [ 1Koblenz ] [ 1Bonn ] -> [ 1Ulm ] -> [ 1Koblenz ] [ 1Ulm ] -> [ 1Bautzen ] -> [ 1Berlin ] [ 2Bonn ] ..> [ 2Berlin ] -> [ 2Kassel ] [ 2Bonn ] .-> [ 2Koblenz ] [ 2Bonn ] -> [ 2Ulm ] -> [ 2Koblenz ] [ 2Ulm ] -> [ 2Bautzen ] -> [ 2Berlin ] ��������������������������������������Graph-Easy-0.75/t/in/5_group_split.txt��������������������������������������������������������������000444��000764��000764�� 210�12322253245� 20215� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ( test: [ Bonn ] -> [ Berlin ] -> [ Frankfurt ] { flow: down; } -> [ Hagen ] ) [ Bonn ] -> [ Ulm ] { origin: Bonn; offset: 6,2; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/10borders.txt������������������������������������������������������������������000444��000764��000764�� 540�12322253245� 17231� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Different border styles [ Solid ] ..> [ Dotted ] { border: dotted; } [ Dashed ] { border: dashed; } ==> [ none ] { border: none; } [ dot-dash ] { border: dot-dash; } - > [ Bold ] { border: bold; } [ dot-dot-dash ] { border: dot-dot-dash; } .-> [ wave ] { border: wave; } [ double-dash ] { border: double-dash; } ~~> [ Double ] { border: double; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_group_repair.txt�������������������������������������������������������������000444��000764��000764�� 324�12322253245� 20352� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( DMZ: [ Backend ] [ Database ] [ Proxy ] [ Server ] ) [ Proxy ] --> [ Check ] [ Proxy ] --> { flow: south; } [ Database ] [ Proxy ] --> [ Server ] [ Check ] --> [ Backend ] [ Database ] --> [ Backend ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4nodes.txt���������������������������������������������������������������������000444��000764��000764�� 116�12322253245� 16623� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ Berlin ] [ Bonn ] --> [ Frankfurt ] [ Berlin ] ..> [ Cottbus ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/9_cross.txt��������������������������������������������������������������������000444��000764��000764�� 335�12322253245� 17013� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ U ] --> [ A ] { origin: U; offset: 4,0; } --> [ B|I] { origin: A; offset: 32, 0; } [ BI.1] --> [ I ] -> [ Z ] [ C | D||E ] { origin: A; offset: 0,1; } #[ CDE.0 ] --> [ BI.0 ] [ U ] --> { start: north; } [ I ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_invisible_right.txt����������������������������������������������������������000444��000764��000764�� 21�12322253245� 21004� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] --> [ ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_cross.txt��������������������������������������������������������������������000444��000764��000764�� 247�12322253245� 17010� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] --> { style: solid; } [ B ] { origin: A; offset: 40,0; } [ C ] { offset: 20,-20; origin: A; } --> { style: dashed; } [ D ] { origin: C; offset: 0,40; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_arrow_styles.txt�������������������������������������������������������������000444��000764��000764�� 751�12322253245� 20415� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrow-style: none; } # the arrow is not drawn [ Mainau ] --> [ Unteruhlingen ] { border-style: dotted; } # there is no arrow, so the style is ignored [ Mainau ] -- { arrow-style: closed; } [ Unteruhlingen ] # these override the class default: [ Oberuhlingen ] <--> { arrow-style: closed; } [ Unteruhlingen ] [ Uhlingen ] <--> { arrow-style: filled; } [ Oberuhlingen ] # arrows are again not rendered [ Hagnau ] { flow: down; } <--> [ Uhlingen ] [ Hagnau ] <--> [ Oberuhlingen ] �����������������������Graph-Easy-0.75/t/in/8_basename.txt�����������������������������������������������������������������000444��000764��000764�� 111�12322253245� 17424� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A|B|C ] { basename: A } [ 1 ] -> [ A.2 ] [ A|B|C ] [ 2 ] -> [ ABC.2 ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_joint_bug_flags.txt����������������������������������������������������������000444��000764��000764�� 246�12322253245� 21012� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ B ], [ C ], [ D ] <--> { start: west; end: south, 0; } [ E ] { origin: B; offset: -2,-2; } [ C ] { origin: B; offset: 0,2; } [ D ] { origin: C; offset: 0,2; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_cross_split_hor.txt����������������������������������������������������������000444��000764��000764�� 223�12322253245� 21065� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ( Cross: [A],[B],[C],[D] ) [ A ] --> [ B ] { offset: 0,4; origin: A; } [ C ] { offset: -2,2; origin: A; } --> [ D ] { offset: 2,2; origin: A; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/1_selfloop_2.txt���������������������������������������������������������������000444��000764��000764�� 240�12322253245� 17711� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Main ] -- Until not done --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] -- Until not done --> [ Main ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_ranks.txt��������������������������������������������������������������������000444��000764��000764�� 151�12322253245� 16771� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] --> [ B ] --> [ C ] --> [ D ] { rank: 0; } --> [ E ] --> { end: north; } [ F ] { rank: 0; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/1_selfloop.txt�����������������������������������������������������������������000444��000764��000764�� 24�12322253245� 17450� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ One ] --> [ One ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_flow.txt���������������������������������������������������������������������000444��000764��000764�� 145�12322253245� 16624� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Bonn ] -> { flow: forward; } [ Berlin ] [ Bonn ] -> [ Cottbus ] --> [ Moselkern ] --> [ Ulm ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_cross_inv.txt����������������������������������������������������������������000444��000764��000764�� 253�12322253245� 17661� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] --> { style: invisible; } [ B ] { origin: A; offset: 40,0; } [ C ] { offset: 20,-20; origin: A; } --> { style: dashed; } [ D ] { origin: C; offset: 0,40; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_dot_dot_dash.txt�������������������������������������������������������������000444��000764��000764�� 143�12322253245� 20303� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Test\n Test\n Test test test\n test ] { border: dot-dot-dash; } ..-> [ B ] { border: dot-dash; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_bug_joint_2.txt��������������������������������������������������������������000444��000764��000764�� 302�12322253245� 20050� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { arrow-style: none; } [ B ], [ C ], [ D ] <--> { start: west; end: south, 0; } [ E ] { origin: B; offset: -2,-2; } [ C ] { origin: B; offset: 0,2; } [ D ] { origin: C; offset: 0,2; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/7_star.txt���������������������������������������������������������������������000444��000764��000764�� 131�12322253245� 16623� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Dachau ] -> [ Berlin ], [ Ulm ], [ Frankfurt ], [ Chemnitz ], [ Weimar ], [ Kiel ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/9_chain.txt��������������������������������������������������������������������000444��000764��000764�� 550�12322253245� 16743� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# a chain with branches. Despite the branches defined first, # the output should create one chain with branches going up/down [ Bonn ] --> [ Berlin ] [ Berlin ] --> [ Koeln ] [ Berlin ] --> [ Cottbus ] [ Koeln ] --> [ Frankfurt ] [ Frankfurt ] --> [ Chemnitz ] [ Frankfurt ] --> [ Dresden ] [ Frankfurt ] --> [ Hannover ] [ Hannover ] --> [ Hamburg ] ��������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_joint.txt��������������������������������������������������������������������000444��000764��000764�� 137�12322253245� 17002� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Hanau ], [ Hagen ], [ Hannover ], [ Hamburg ] --> { end: back, 0; } [ Bonn ] --> [ Prag ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/8_chain.txt��������������������������������������������������������������������000444��000764��000764�� 514�12322253245� 16742� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# a chain with branches. Despite the branches defined first, # the output should create one chain with branches going up/down [ Bonn ] --> [ Berlin ] [ Berlin ] --> [ Koeln ] [ Koeln ] --> [ Frankfurt ] [ Frankfurt ] --> [ Chemnitz ] [ Frankfurt ] --> [ Dresden ] [ Frankfurt ] --> [ Hannover ] [ Hannover ] --> [ Hamburg ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_edge_start.txt���������������������������������������������������������������000444��000764��000764�� 52�12322253245� 17751� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ A ] --> { start: front; } [ B ], [ C ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_group.txt��������������������������������������������������������������������000444��000764��000764�� 53�12322253245� 16764� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Test\n group [ Bonn ] -> [ Berlin ] ) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_colors.txt�������������������������������������������������������������������000444��000764��000764�� 543�12322253245� 17156� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { fill: rgb(0.1, 100, 10%); color: 3; # mention color "3" before colorscheme colorscheme: paired12; } [ Colors ] { fill: w3c/grey; } [ Preserve ] { color: cornflowerblue; } [ The ] { color: #ff00ff; } [ Preserve ] --> { color: rgb(33,44,55); } [ The ] [ The ] --> { color: hsv(1.0,1.0,0.5); } [ Colors ] { color: hsl(300, 1.0, 1.0); } �������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_lists.txt��������������������������������������������������������������������000444��000764��000764�� 60�12322253245� 16766� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ], [ Ulm ] -> [ Berlin ], [ Frankfurt ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_class.txt��������������������������������������������������������������������000444��000764��000764�� 127�12322253245� 16757� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node.second { border: double; } [ A ] { class: SECOND; } --> [ B ] { class: Second; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/7_cluster.txt������������������������������������������������������������������000444��000764��000764�� 66�12322253245� 17322� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# 6-node cluster [ A | BCD | E | F || G | | H ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_chain_10_edges.txt�����������������������������������������������������������000444��000764��000764�� 271�12322253245� 20407� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] -> [ Berlin ] -> [ Kassel ] [ Bonn ] -> [ Koblenz ] -> [ Berlin ] [ Bonn ] -> [ Ulm ] -> [ Koblenz ] [ Ulm ] -> [ Bautzen ] -> [ Berlin ] [ Ulm ] -> [ Bautzen ] -> [ Berlin ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/1_empty_group.txt��������������������������������������������������������������000444��000764��000764�� 57�12322253245� 20205� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Group ) { background: yellow; } [ Outside ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_dot.txt����������������������������������������������������������������������000444��000764��000764�� 240�12322253245� 16434� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� # the following should not confuse the parser #digraph G { # a -> b #} # neither should this graph { label: // digraph G { } [ Kummersbach ] -> [ Düsburg ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_autosplit_offset.txt���������������������������������������������������������000444��000764��000764�� 126�12322253245� 21245� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 1 ] { size: 1,2; } [ 2|3 ] { origin: 1; offset: 2,1; } [ 1 ] -> [ 23.1 ] --> [ 3 ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_autosplit_empty.txt����������������������������������������������������������000444��000764��000764�� 37�12322253245� 21076� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ 1 ] -> [ 23.1 ] [ 2| |3 ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_split_bug.txt����������������������������������������������������������������000444��000764��000764�� 36�12322253245� 17621� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Some \[\] || Autosplit ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_joint.txt��������������������������������������������������������������������000444��000764��000764�� 216�12322253245� 16776� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ B ] { offset: 2,0; origin: A; size: 2,1; }, [ A ] --> { start: south; end: south, 0; } [ C ] { offset: 2,-2; origin: B; } [ B ] --> [ U ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_split_attribute.txt����������������������������������������������������������000444��000764��000764�� 204�12322253245� 21065� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� node { color: silver; } [ Some || Autosplit || Node ] { basename: u; border: dashed|; color: red|blue; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_nested_groups.txt������������������������������������������������������������000444��000764��000764�� 141�12322253245� 20533� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Outer ( Inner 1 [ A ] -> [ B ] ) ( Inner 2 [ C ] -> [ D ] ) [ E ] -> [ F ] ) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_invisible_both.txt�����������������������������������������������������������000444��000764��000764�� 30�12322253245� 20624� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[] --> [ Bonn ] --> [ ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_selfloop_flow_left.txt�������������������������������������������������������000444��000764��000764�� 152�12322253245� 21535� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 270; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] --> [ End ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/1_selfloop_label.txt�����������������������������������������������������������000444��000764��000764�� 63�12322253245� 20612� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Freiburg ] -- Alle Jahre Wieder --> [ Freiburg ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_offsets_2.txt����������������������������������������������������������������000444��000764��000764�� 333�12322253245� 17546� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { origin: B; offset: 2,1; } [ B ] { origin: C; offset: 1,1; } [ C ] { origin: D; offset: 1,1; } [ D ] [ E ] --> [ D ] --> [ C ] [ B ] --> [ A ] [ D ] --> [ C ] [ B ] --> [ C ] [ B ] --> [ C ] [ A ] --> [ B ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_long_edge_labels.txt���������������������������������������������������������000444��000764��000764�� 177�12322253245� 21127� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ A ] -> [ B ] -> [ C ] -> [ D ] -> [ E ] [ A ] -- very long edge label --> [ E ] -- another very long edge label --> [ A ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_graph_label.txt��������������������������������������������������������������000444��000764��000764�� 112�12322253245� 20104� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { label: My Graph; label-pos: top; } [ Regensburg ] --> [ Passau ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_cluster_2.txt����������������������������������������������������������������000444��000764��000764�� 136�12322253245� 17554� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Hamburg ] { size: 2,2; } --> [ Altona ] { rows: 2; columns: 3; } [ Hamburg ] --> [ Altona ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_bend_bug.txt�����������������������������������������������������������������000444��000764��000764�� 163�12322253245� 17420� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Berlin ] { offset: 2,0; origin: Bonn; } [ Frankfurt ] { offset: 2,2; origin: Bonn; } [ Bonn ] --> [ Frankfurt ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_edges.txt��������������������������������������������������������������������000444��000764��000764�� 50�12322253245� 16714� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ One ] --> [ Two ] [ One ] --> [ Two ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/8_labels.txt�������������������������������������������������������������������000444��000764��000764�� 1005�12322253245� 17136� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { border: 1px solid black; background: oldlace; label: My sample graph; } edge { label-color: green; color: blue; } [ One ] { fill: seagreen; color: white; } -- label --> [ Two ] { shape: triangle; } [ One ] => [ Three ] [ Five ] { fill: maroon; color: yellow; } <=> [ Three ] [ One ] .. Test\n label ..> [ Four ] [ Three ] <.. Test label ..> [ Six ] [ Five ] - Test label - > { label-color: darkslategrey; color: red; } [ Seven ] [ Seven ] -- [ Eight ] [ Five ] --> [ Eight ] [ Five ] --> [ Seven ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4groups.txt��������������������������������������������������������������������000444��000764��000764�� 117�12322253245� 17033� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ( German Cities [ Cuxhaven ] -> [ Bremen ] [ Hamburg ], [ Flensburg ] ) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_fanout.txt�������������������������������������������������������������������000444��000764��000764�� 224�12322253245� 17150� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Hello World ] --> [ middle ] { label: /dev/fanout; fill: #ccccff; } --> { start: front,0; } [ A ], [ B ], [ C ], [ D ] { label: Hello World!; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_endless_loop.txt�������������������������������������������������������������000444��000764��000764�� 70�12322253245� 20317� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ 1 ] -> [ 2 ] { fill: red; } [ 3|4 ] { fill: red; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/0_empty_groups.txt�������������������������������������������������������������000444��000764��000764�� 13�12322253245� 20357� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������()->()->() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_bidi_astar.txt���������������������������������������������������������������000444��000764��000764�� 156�12322253245� 17755� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bad Schandau ] { offset: 3,0; origin: Erfurt; } [ Erfurt ] { size: 2,3; } [ Erfurt ] <--> [ Bad Schandau ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_group_no_border.txt����������������������������������������������������������000444��000764��000764�� 75�12322253245� 21021� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Test\n group [ Bonn ] -> [ Berlin ] ) { border: none; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_nodes_5_edges.txt������������������������������������������������������������000444��000764��000764�� 312�12322253245� 20353� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Testcase courtesy of Scott Beuker: [ Default Page ] -> [ Test Search ] [ Test Search ] -> [ Sign Up ] [ Default Page ] -> [ Sign Up ] [ Default Page ] ..> [ Main Page ] [ Sign Up ] -> [ Main Page ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_cache_bug.txt����������������������������������������������������������������000444��000764��000764�� 200�12322253245� 17543� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { flow: east; } [ B ] { offset: 2,2; origin: A; } (G [ A ] ) [ A ] -- C --> { start: east; end: north; } [ B ] -> [ ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/README�������������������������������������������������������������������������000444��000764��000764�� 302�12322253245� 15543� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������These files are used as input by t/ascii.t, and the ASCII output is compared to the files in t/out. The subdirectories t/dot, t/in/dot, t/out/dot and t/txt/dot contain input files for t/gv.t. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_empty_row.txt����������������������������������������������������������������000444��000764��000764�� 51�12322253245� 17657� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[A|| || B] [C|| || D] [AB.0]->[CD.0] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_group_align_center.txt�������������������������������������������������������000444��000764��000764�� 454�12322253245� 21524� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { label: My Graph; font-size: 2em; } node.left { align: left; font-size: 1.5em; } edge { align: right; } ( Nodes: [ Right\nAligned ] { align: right; } -- label\n text --> { align: right; } [ Left\naligned ] { class: left; } --> [ Center\n aligned ] ) { align: center; border: none; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_list_attr.txt����������������������������������������������������������������000444��000764��000764�� 265�12322253245� 17664� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] { border-style: dotted; }, [ Berlin ] { border-style: dashed; } -- test --> [ Frankfurt ] { border-style: dot-dash; }, [ Frankfurt (Oder) ] { border-style: dot-dot-dash; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_edge_labels.txt��������������������������������������������������������������000444��000764��000764�� 167�12322253245� 20106� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bonn ] == train ==> [ Berlin ] .. bus ..> [ Potsdam ] [ Berlin ] .- bike .-> [ Ulm ] [ Bonn ] -- car --> [ Potsdam ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_selfloop.txt�����������������������������������������������������������������000444��000764��000764�� 245�12322253245� 17476� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 180; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] -- Until not done --> [ Main ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4groups_class.txt��������������������������������������������������������������000444��000764��000764�� 233�12322253245� 20217� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node.city { color: #801010; } ( German Cities [ Cuxhaven ] -> [ Bremen ] [ Hamburg ], [ Flensburg ] ) { nodeclass: city; border-style: dot-dash; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_nodes_6_edges.txt������������������������������������������������������������000444��000764��000764�� 353�12322253245� 20361� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Testcase courtesy of Scott Beuker: [ Default Page ] -> [ Test Search ] [ Test Search ] -> [ Sign Up ] [ Default Page ] -> [ Sign Up ] [ Default Page ] -> [ Main Page ] [ Sign Up ] -> [ Main Page ] [ Default Page ] -> [ Main Page ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_multicell.txt����������������������������������������������������������������000444��000764��000764�� 421�12322253245� 17644� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: up; } [ Client ] { origin: Proxy; offset: 0,2; } <--> [ Proxy ] { size: 3,2; } [ Client1 ] { origin: Proxy; offset: 0,-2; } <--> [ Proxy ] [ Client2 ] { origin: Proxy; offset: 2,0; } <--> [ Proxy ] [ Client3 ] { origin: Proxy; offset: -2,0; } <--> [ Proxy ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_empty_group.txt��������������������������������������������������������������000444��000764��000764�� 16�12322253245� 20202� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������([A]->[B])[C] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_autosplit_hang.txt�����������������������������������������������������������000444��000764��000764�� 35�12322253245� 20652� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ 1 ] -> [ 23.0 ] [ 2|3 ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_cluster_3.txt����������������������������������������������������������������000444��000764��000764�� 171�12322253245� 17554� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Hamburg ] { size: 2,2; } --> [ Altona ] { rows: 2; columns: 3; } [ Hamburg ] --> [ Altona ] [ Hamburg ] --> [ Altona ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_corrupt.txt������������������������������������������������������������������000444��000764��000764�� 143�12322253245� 17347� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ A ] { label: AB%00%0d%0a } --> [ B ] { label: AB%0aCB; } -> [ C ] { label: AB%be%f7%01%7f%91; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_node_edge.txt����������������������������������������������������������������000444��000764��000764�� 104�12322253245� 17560� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[A ] -- [ test ] { shape: edge; } -- [ ] { shape: edge; } --> [ B ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_inherit.txt������������������������������������������������������������������000444��000764��000764�� 272�12322253245� 17316� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { align: left; } node.right { align: right; } graph { flow: down; } [ Left ] --> [ Lefty, too ] --> [ Right ] [ Left ], [ Lefty, too ] { class: none; } [ Right ] { class: right; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_edge_repair.txt��������������������������������������������������������������000444��000764��000764�� 146�12322253245� 20122� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Router: [ Input ] --> [ Output ] ) [ Output ] ==> { start: south; end: north; } [ Network ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_zeros.txt��������������������������������������������������������������������000444��000764��000764�� 70�12322253245� 16771� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[0] -- 0 --> [10] { label: 0; } --> { label: 0; } [ 0 ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/7_tree.txt���������������������������������������������������������������������000444��000764��000764�� 310�12322253245� 16610� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge { start: south, 0; } [ A ] [ A ] -> [ A1 ] { origin: A; offset: 2,1; } [ A ] -> [ A2 ] [ A ] -> [ A3 ] [ A2 ] -> [ A23 ] { origin: A2; offset: 2,1 } [ A2 ] -> [ A22 ] [ A2 ] -> [ A21 ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_classes.txt������������������������������������������������������������������000444��000764��000764�� 213�12322253245� 17303� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������.red { color: red; } .green, .blue, group { color: blue; } [ Red ] { class: red; } -- red --> { class: red; } [ Black ] { class: green; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_bidi_endpoint.txt������������������������������������������������������������000444��000764��000764�� 124�12322253245� 20456� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Bad Schandau ] { offset: 3,0; origin: Erfurt; } [ Erfurt ] <--> [ Bad Schandau ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/1_bidi_loop.txt����������������������������������������������������������������000444��000764��000764�� 134�12322253245� 17607� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Hamm ] <--> [ Hamm ] [ Hamm ] <--> [ Hamm ] [ Hamm ] <--> [ Hamm ] [ Hamm ] <--> [ Hamm ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_edge_labels_from_class.txt���������������������������������������������������000444��000764��000764�� 135�12322253245� 22310� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������edge.yes { label: Yes; } edge { label: MyLabel; } [ A ] --> { class: yes; } [ B ] --> [ C ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_flow.txt���������������������������������������������������������������������000444��000764��000764�� 111�12322253245� 16612� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 90; } [ Left ] --> { end: left; start: left; } [ Right ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_long_labels.txt��������������������������������������������������������������000444��000764��000764�� 72�12322253245� 20112� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ My\n long\n node\n name ] -- A\n long\n label --> [ B ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_flow.txt���������������������������������������������������������������������000444��000764��000764�� 164�12322253245� 16623� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: down; } [ Enschede ] { flow: left; } [ Enschede ] --> [ Bielefeld ] [ Bielefeld ] --> [ Wolfsburg ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2nodes.txt���������������������������������������������������������������������000444��000764��000764�� 24�12322253245� 16577� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ One ] ==> [ Two ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_selfloop.txt�����������������������������������������������������������������000444��000764��000764�� 126�12322253245� 17475� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] --> [ End ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_autosplit_class.txt����������������������������������������������������������000444��000764��000764�� 177�12322253245� 21072� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� node.B { border: dotted; } node.C { border: dashed; } node { border: double; } [ A|B ] { class: |B; } [ C|D ] { class: C|; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_offsets.txt������������������������������������������������������������������000444��000764��000764�� 201�12322253245� 17317� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { origin: B; offset: 2,1; } -> [ B ] { origin: C; offset: 1,1; } -> [ C ] { origin: D; offset: 1,1; } -> [ D ] -> [ E ] �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_selfloop_flow_up.txt���������������������������������������������������������000444��000764��000764�� 150�12322253245� 21225� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: 0; } [ Start ] --> [ Main ] [ Main ] -- Until not done --> [ Main ] [ Main ] --> [ End ] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_group_multicell.txt����������������������������������������������������������000444��000764��000764�� 124�12322253245� 21055� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ( Some group: [ Frankfurt a. Main\n (Flughafen) ] { size: 2,2; } -> [ Berlin ] ) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_cluster.txt������������������������������������������������������������������000444��000764��000764�� 103�12322253245� 17325� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Hamburg ] { size: 2,2; } --> [ Altona ] { rows: 2; columns: 3; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_autosplit_shape.txt����������������������������������������������������������000444��000764��000764�� 64�12322253245� 21040� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A|B ] { shape: |none; } [ C|D ] { shape: none|; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_autosplit_class.txt����������������������������������������������������������000444��000764��000764�� 445�12322253245� 21072� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# test that columns on a class works, also test that B is # properly offset from A (A with the label is 2 columns # wide!) and displays "D" as label. node.red { color: red; label: D; columns: 2; } [ A|B|C ] { basename: A; } [ 1 ] -> [ A.0 ] { class: red; } [ 2 ] -> [ A.0 ] [ 2 ] -> [ 3 ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_cross_split.txt��������������������������������������������������������������000444��000764��000764�� 223�12322253245� 20215� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ( Cross: [A],[B],[C],[D] ) [ A ] --> [ B ] { offset: 4,0; origin: A; } [ C ] { offset: 2,-2; origin: A; } --> [ D ] { offset: 2,2; origin: A; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/1_undirected_loop.txt����������������������������������������������������������000444��000764��000764�� 45�12322253245� 21007� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[A] -- [A ] -- [ A ] -- [ A ] -- [A] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/8_points.txt�������������������������������������������������������������������000444��000764��000764�� 415�12322253245� 17174� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������node { shape: point; } [ A ] -> [ B ] { point-style: square; } -> [ C ] { point-style: dot; } -> [ D ] { point-style: circle; } -> [ E ] { point-style: diamond; } -> [ F ] { point-style: cross; } -> [ G ] { shape: invisible; } -> [ H ] { point-style: star; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_multicell.txt����������������������������������������������������������������000444��000764��000764�� 246�12322253245� 17652� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] { size: 2,2; } -> [ B ] { rows: 2; } -> [ C ] { columns: 3; } [ A ] -> [ B ] -> [ C ] -> [ D ] [ D ] -> [ C ] [ B ] -> [ C ] [ A ] -> [ F ] [ A ] -> [ G ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/6_split_join_loop.txt����������������������������������������������������������000444��000764��000764�� 152�12322253245� 21057� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ A ] --> [ B ] --> [ C ] --> { start: front, 0; } [ X ], [ Y ] --> { end: back, 0; } [ I ] --> [ A ] ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_joint_bug2.txt���������������������������������������������������������������000444��000764��000764�� 362�12322253245� 17720� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ A ] { flow: south; size: 5,1; } <--> [ B ], [ C ], [ D ] { origin: A; } <--> { start: south; end: south, 0; } [ E ] { origin: A; offset: 2,0; } [ B ] { offset: 0,2; } [ C ] { origin: B; offset: 2,0; } [ D ] { origin: C; offset: 2,0; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_a-star_bug.txt���������������������������������������������������������������000444��000764��000764�� 257�12322253245� 17705� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ 1 ] { size: 1,2; } [ 2 ] { offset: 2,0; origin: 1; } [ 3 ] { offset: 1,0; origin: 2; } [ 4 ] { offset: 1,0; origin: 3; } [ 5 ] { offset: 0,-1; origin: 1; } [ 4 ] --> [ 1 ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_joint_label.txt��������������������������������������������������������������000444��000764��000764�� 145�12322253245� 20137� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Aachen ], [ Cottbus ], [ Buxtehude ], [ Dachau ] -- travel --> { end: back, 0 ; } [ Zittau ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/3_joint.txt��������������������������������������������������������������������000444��000764��000764�� 205�12322253245� 16773� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Potsdam ], [ Mannheim ] --> { end: back,0; } [ Weimar ] # [ Weimar ] --> { start: front,0; } [ Finsterwalde ], [ Aschersleben ] �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/4_near.txt���������������������������������������������������������������������000444��000764��000764�� 137�12322253245� 16602� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# near placement [ Bonn ] --> [ Berlin ] [ Berlin ] --> [ Koeln ] [ Essen ] --> [ Berlin ] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/2_autosplit_empty.txt����������������������������������������������������������000444��000764��000764�� 30�12322253245� 21065� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������[ Siegen | Siegburg ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/5_joint.txt��������������������������������������������������������������������000444��000764��000764�� 475�12322253245� 17006� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� [ Hannover ] { flow: down; } --> { start: south; } [ Aachen ], [ Berlin ], [ Cuxhaven ] --> { start: south; end: south, 0 } [ Zwickau ] { origin: Hannover; offset: 2,-2; } [ Aachen ] { origin : Hannover; offset: 0,2; } [ Berlin ] { origin : Aachen; offset: 2,0; } [ Cuxhaven ] { origin : Aachen; offset: 4,0; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot����������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15341� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_ignore.dot���������������������������������������������������������������000444��000764��000764�� 211�12322253245� 17664� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������strict digraph G { node [ pname=123, foo=9, bar=baz ] node1 [ fname=o ] node2 [ bar=zup ] node1 -> node2 [ brabble=bramble ] } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/3_invis.dot����������������������������������������������������������������000444��000764��000764�� 130�12322253245� 17532� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { node [ style=invis ] { node [ style=filled ] a; c; } a -> b -> c; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/7_record.dot���������������������������������������������������������������000444��000764��000764�� 315�12322253245� 17671� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph gaph { graph [ labeljust=l, label="Left aligned label" ] "<f1> Aa | <f2> Bb | Cc" [ shape=rect ]; node [ shape=record ] a [ label = "<f1> AA | <f2> BB | CC" ] "<f1> A | <f2> B | C"; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/3_empty_record_LR.dot������������������������������������������������������000444��000764��000764�� 136�12322253245� 21501� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { rankdir=LR; "Compositor" [shape="record", label="{Compositor||Compose()}"] } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_bool.dot�����������������������������������������������������������������000444��000764��000764�� 445�12322253245� 17345� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { node [ center compound concentrate constraint decorate diredgeconstraints fixedsize headclip labelfloat landscape mosek nojustify normalize overlap pack pin regular remincross root splines tailclip truecolor ] "Bonn" -> "Berlin" } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_linewidth.dot������������������������������������������������������������000444��000764��000764�� 223�12322253245� 20373� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G {size="11,8.5"; ratio=fill; overlap=false; node[fontsize=10,shape=plaintext];edge[dir=none,style="setlinewidth(0.1)"]; "123"->"foo"[]; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/9_tree.dot�����������������������������������������������������������������000444��000764��000764�� 363�12322253245� 17357� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { node [ shape=record ]; node0 [label = "<f0> |<f1> A|<f2> "]; node1 [label = "<f0> |<f1> B|<f2> "]; node2 [label = "<f0> |<f1> C|<f2> "]; "node0":f0 -> "node1":f1; "node1":f0 -> "node2":f1; "node0":f2 -> "node2":f2; } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/4_html_like.dot������������������������������������������������������������000444��000764��000764�� 412�12322253245� 20356� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# these are all invalid HTML-like labels. The should not result # in errors and the "<>" should be stripped, leaving only the inner # text as the label text: digraph G { first [ label = <> ] second [ label =<> ] third [ label =< > ] fourth [ label = <a> ] } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/10_numbers.dot�������������������������������������������������������������000444��000764��000764�� 220�12322253245� 20133� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { // test parsing of numbers as node names 0.99 -> 12.88 -100 -> 123.1230 00019.1001 -> 1000. .99 -> 0. .1 -> -1. } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/3_output_lone.dot����������������������������������������������������������000444��000764��000764�� 126�12322253245� 20764� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { output = html; c:w; /* a node named "c" with port "w" */ a -> b; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_comment_inside_attr.dot��������������������������������������������������000444��000764��000764�� 116�12322253245� 22434� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { a [ label = "a" /* color=red */ ] a -> b; } /* digraph */ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_graph_label_bottom.dot���������������������������������������������������000444��000764��000764�� 136�12322253245� 22233� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph GRAPH_0 { graph [ labelloc=b, label="Deutsche Städte" ] "Köln" -> "Stralsund" } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/5_scopes_uni.dot�����������������������������������������������������������000444��000764��000764�� 52�12322253245� 20536� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph GRAPH_0 { a -- { b c d } -- o } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/5_scope_atr.dot������������������������������������������������������������000444��000764��000764�� 147�12322253245� 20373� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph GRAPH_0 { b [ style=rounded ] a -> { node [ shape=plaintext ] b c d } { b c d } -> u } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_no_spaces.dot������������������������������������������������������������000444��000764��000764�� 33�12322253245� 20335� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������strict graph{bonn--berlin} �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/3_ids.dot������������������������������������������������������������������000444��000764��000764�� 41�12322253245� 17142� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { 123abc -> test } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/4_uppercase.dot������������������������������������������������������������000444��000764��000764�� 161�12322253245� 20376� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������STRICT DIGRAPH "graph" { EDGE [ label=foo ] NODE [ style=dotted ] SUBGRAPH cluster_me { a -> b } c -> d } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/3_empty_record.dot���������������������������������������������������������000444��000764��000764�� 120�12322253245� 21075� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { "Compositor" [shape="record", label="{Compositor||Compose()}"] } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/4_record.dot���������������������������������������������������������������000444��000764��000764�� 236�12322253245� 17670� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { node1 [ label = "<a1> test | <a2> split", shape=record ] node2 [ label = "<b1> record | <b2> test", shape=record ] node1:a1 -> node2:b2 } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_strict.dot���������������������������������������������������������������000444��000764��000764�� 55�12322253245� 17677� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������strict digraph G { Wolfsbüttel -> Köln } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/6_2_cluster.dot������������������������������������������������������������000444��000764��000764�� 264�12322253245� 20317� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { subgraph cluster_first { a -> b; label=first; } subgraph cluster_second { p -> q -> r -> s label=second; s -> p; } r -> a [ style=bold ]; b -> q; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/3_graph_label_long.dot�����������������������������������������������������000444��000764��000764�� 157�12322253245� 21672� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph GRAPH_0 { graph [ labelloc=b, label="Deutsche Städte am Rhein" ] "Köln" -> "Bonn" -> "Koblenz" } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/5_scopes_chain.dot���������������������������������������������������������000444��000764��000764�� 52�12322253245� 21025� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph GRAPH_0 { a -> { b c d } -> o } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/16_split.dot���������������������������������������������������������������000444��000764��000764�� 454�12322253245� 17632� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph SPLIT { 0 [ shape=record, label="<f1>nil| | | <f2> 0" ] 1 [ shape=record, label="<f1>nil| | | <f2> 1" ] 2 [ shape=record, label="<f1>nil| | | <f2> 2" ] 3 [ shape=record, label="<f1>nil| | | <f2> 3" ] "0":f1 -> "1":f2; "0":"f2" -> "1":"f1"; 2:"f1" -> 3:"f2"; 2:f2 -> 3:f1; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_group_labelloc.dot�������������������������������������������������������000444��000764��000764�� 247�12322253245� 21403� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph GRAPH_0 { subgraph "cluster0" { label="Bergtour:"; style="filled,dashed"; labelloc=bottom; labeljust=l; Zugspitze -> Wasserkuppe } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/9_stacking.dot�������������������������������������������������������������000444��000764��000764�� 211�12322253245� 20213� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { graph [rankdir=LR]; "11" -> "1" "1" -> "2" "2" -> "3" "1" -> "10" "3" -> "8" "8" -> "5" "5" -> "6" "10" -> "6" "0" -> "11" } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_ports.dot����������������������������������������������������������������000444��000764��000764�� 103�12322253245� 17550� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph ports { north -> south [ headport=west tailport=east ] } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/4_cluster_labeljust.dot����������������������������������������������������000444��000764��000764�� 325�12322253245� 22137� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { subgraph cluster_0 { aaaaaaaaaaaaaaaaaaa -> b; labeljust=r; label="Right aligned"; } subgraph cluster_1 { c -> ddddddddddddddd; labeljust=l; label="Left aligned"; } } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/4_strings.dot��������������������������������������������������������������000444��000764��000764�� 753�12322253245� 20107� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������strict digraph graph0 { // test continuation lines (ending in \) berlin [ label="Berlin\ Ost" ] bonn [ label="Bonn\ am\ Rhein" ] // test double quoted string continuation "foo" + "bar" in attributes bonn -> berlin [ label="train" + " (ICE)" ] // and nodes "bonn" + "test" [ label="Bonn" + " (Rhei \ n)" ] // test more than one concat, more than one space plus empty parts "Cottbus" [ label= "Cot" + "" + "tb" +"" +"" + "us" ] "bonntest" -> "Cottbus" } ���������������������Graph-Easy-0.75/t/in/dot/6_group_align.dot����������������������������������������������������������000444��000764��000764�� 203�12322253245� 20714� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������( Left: [ A ] -> [ B ]) { align: left; } ( Right: [ C ] -> [ D ]) { align: right; } ( Center: [ E ] -> [ F ]) { align: center; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/5_scopes.dot���������������������������������������������������������������000444��000764��000764�� 67�12322253245� 17671� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph GRAPH_0 { a -> { b c d } { b c d } -> u } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_setlinewidth.dot���������������������������������������������������������000444��000764��000764�� 167�12322253245� 21116� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph { "Bonn" [ style="setlinewidth(4)" ] "Berlin" [ style="filled, setlinewidth(5)" ] "Bonn" -> "Berlin" } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/3_colors.dot���������������������������������������������������������������000444��000764��000764�� 646�12322253245� 17717� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Differen ways to write colors, all of them should result in "red", # except "/accent4/4": digraph G { subgraph cluster_1 { pencolor="#ff 00 00"; # "//" means empty color scheme and is equivalen to "" node [ color=red fontcolor="//red" ] A -> B [ color="#ff0000ff" ] } C [ color="0 1.0 1.0" fontcolor="/x11/red" ] B -> C [ color="1.0,1.0,1.0" ] // results in "#ffff99" B [ color="/accent4/4" ] } ������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/0_empty.dot����������������������������������������������������������������000444��000764��000764�� 75�12322253245� 17525� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������strict/*comment*/digraph/*comment*/{ // test comments } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/4_compass.dot��������������������������������������������������������������000444��000764��000764�� 415�12322253245� 20056� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������// Test compass directions and port names // Note: This graph does not have a name, as the ID is optional digraph { bonn [ label="<N> bonn N | <S> S" shape=record] berlin [ label="<N> berlin N | <w> w" shape=record] bonn:S -> berlin:w bonn:s -> berlin:N:w } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_nospace.dot��������������������������������������������������������������000444��000764��000764�� 42�12322253245� 20013� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph mike{ mike -> michael } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/9_edge_styles.dot����������������������������������������������������������000444��000764��000764�� 1227�12322253245� 20747� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# dot -Tpng 9_edge_styles.dot -o 9_edge_styles.png // various edge styles and misc. attributes digraph G { node [style=filled, color=lightsalmon, fontsize=14, fontname="Helvetica"]; edge [style="setlinewidth(3)"]; margin="0"; ratio=auto; nodesep=0.2; ranksep=0.2; clusterrank=local; A -> B [ style=solid ] B -> C [ style=invis ] C -> D [ style=dotted ] D -> E [ style=dashed ] // bold-dash A -> F [ style="setlinewidth(3), dashed" ] // setlinewidth(3) => bold F -> G [ style="setlinewidth(3)" ] // setlinewidth(5) => broad G -> H [ style="setlinewidth(5)" ] // setlinewidth(11) => wide H -> I [ style="setlinewidth(11)" ] } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/9_back.dot�����������������������������������������������������������������000444��000764��000764�� 227�12322253245� 17317� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { graph [rankdir=LR]; "11" -> "1" "1" -> "2" "2" -> "3" "1" -> "10" "3" -> "8" "8" -> "5" [ dir=back; ] "5" -> "6" "10" -> "6" "0" -> "11" } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/3_node_label.dot�����������������������������������������������������������000444��000764��000764�� 204�12322253245� 20470� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph Graphname { graph [ label="\G" ] node [ label="\G \N" ] 0 -> 1 [ label="\E \G \T \H" ] 2 [ label="Name: \N \G" ] } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/6_comments.dot�������������������������������������������������������������000444��000764��000764�� 422�12322253245� 20236� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* this is a * multi line * comment */ /* comment */ digraph /* one comment */ GRAPH_0 /* another */ /* comment */ { // comment // comment a -> /* comment */ { b c /* comment */ d } { b /* comment */ c d } /* comment */ -> u " my node /* not a comment */ " -> b } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/dot/2_square_bracket_in_attr.dot�����������������������������������������������000444��000764��000764�� 62�12322253245� 23100� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������digraph G { a [ label = < ] > ] a -> b; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/gdl����������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15321� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/gdl/2_right_to_left.gdl��������������������������������������������������������000444��000764��000764�� 175�12322253245� 21203� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph: { orientation: "right_to_left" node: { title: "A" } node: { title: "B" } edge: { source: "A" target: "B" } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/gdl/2_bottom_to_top.gdl��������������������������������������������������������000444��000764��000764�� 175�12322253245� 21242� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph: { orientation: "bottom_to_top" node: { title: "A" } node: { title: "B" } edge: { source: "A" target: "B" } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/gdl/2_top_to_bottom.gdl��������������������������������������������������������000444��000764��000764�� 175�12322253245� 21242� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph: { orientation: "top_to_bottom" node: { title: "A" } node: { title: "B" } edge: { source: "A" target: "B" } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/gdl/1_color_code.gdl�����������������������������������������������������������000444��000764��000764�� 342�12322253245� 20455� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph: { title: "Graph of sub_105D40F" // contains ^M as line-ends and ^L[0-9]+ as color codes node: { title: "0" label: " 58sub_105D40F 31: mov edi, esi push ebp jz short loc_105D27B" vertical_order: 0 } } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/in/gdl/2_left_to_right.gdl��������������������������������������������������������000444��000764��000764�� 175�12322253245� 21203� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph: { orientation: "left_to_right" node: { title: "A" } node: { title: "B" } edge: { source: "A" target: "B" } } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out�������������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 14754� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_selfloop_flip.txt�����������������������������������������������������������000444��000764��000764�� 274�12322253245� 20714� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +------+ v | +--------+ +----------+ +----------+ | Adenau | --> | Monschau | <-- | Nideggen | +--------+ +----------+ +----------+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_bug_basename.txt������������������������������������������������������������000444��000764��000764�� 245�12322253245� 20466� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--------------+ | v +---+ +---+----+----+ | u | --> | a | b | c | +---+ +---+----+----+ | ^ +-------------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_nodes_5_edges.txt�����������������������������������������������������������000444��000764��000764�� 1125�12322253245� 20576� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� #= = = = = = = = = = = = = = = = = = # " v +--------------+ +---------+ +-----------+ + | Default Page | --> | Sign Up | --> | | ' +--------------+ +---------+ | | ' ! | | ' +.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-> | Main Page | ' | | ' | | + - - - - - - - - - - - - - - - - - - > | | +-----------+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_cluster.txt�����������������������������������������������������������������000444��000764��000764�� 146�12322253245� 17536� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-------+-----------+-----------+ | Husum | Schleswig | Flensburg | +-------+-----------+-----------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_label_align.txt�������������������������������������������������������������000444��000764��000764�� 360�12322253245� 20303� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----------------+ +---+ | Long Node Label | A | | | left | long | B | | right | edge label | | | center | ------------> | | +-----------------+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_selfloop_flow_down.txt������������������������������������������������������000444��000764��000764�� 320�12322253245� 21750� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-------+ | Start | +-------+ | | v +-------+ Until not done | | -----------------+ | Main | | | | <----------------+ +-------+ | | v +-------+ | End | +-------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_att.txt���������������������������������������������������������������������000444��000764��000764�� 257�12322253245� 16651� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------------+ +---+ | $a = "9"; | | 2 | | my $b = 1; | --> | | +------------+ +---+ +------------+ +---+ | $a = ";% | --> | 4 | +------------+ +---+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_flow_chain.txt��������������������������������������������������������������000444��000764��000764�� 256�12322253245� 20171� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---------+ +--------+ | Bonn | --> | Berlin | +---------+ +--------+ | | v +---------+ +--------+ | Cottbus | --> | Ulm | +---------+ +--------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/8_optimize_bend.txt�����������������������������������������������������������000444��000764��000764�� 1564�12322253245� 20737� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� .............. : : : : : +----+------------------------------------------------+ v | : v +------+ | +------------+ +-------+ +---------+ +--------+ | init | | | main | | parse | | execute | | make a | | | -+ | | --> | | --> | | --> | string | +------+ +------------+ +-------+ +---------+ +--------+ | | | Testlabel | v v +------------+ +---------+ | cleanup | | compare | +------------+ +---------+ +------------+ | printf | +------------+ ��������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_chained.txt�����������������������������������������������������������������000444��000764��000764�� 643�12322253245� 17455� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-------------------------------------------+ | v +---------+ +-----+ +---------+ +--------+ +--------+ | Bonn | --> | Ulm | --> | Bautzen | --> | Berlin | --> | Kassel | +---------+ +-----+ +---------+ +--------+ +--------+ | | | | v | +---------+ | | Koblenz | <-----+ +---------+ ���������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_comma.txt�������������������������������������������������������������������000444��000764��000764�� 250�12322253245� 17146� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ +---+ | 1 | --> | 4 | <-- | 3 | +---+ +---+ +---+ ^ | | +---+ | 2 | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_collapse.txt����������������������������������������������������������������000444��000764��000764�� 366�12322253245� 17664� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----------+ S P A C E +-----------+ | S P A C E | -----------> | S P A C Y | +-----------+ +-----------+ +-----------+ A B C D +-----------+ | A B C | -----------> | X Z Y | +-----------+ +-----------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/9_flow_south.txt��������������������������������������������������������������000444��000764��000764�� 660�12322253245� 20255� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+----------------------------------------------+ | A | +----------------------------------------------+ | | | | | | | | | | | | | | | | v v v v v v v v +----++----++----++----++----++----++----++----+ | A1 || A2 || A3 || A4 || A5 || A6 || A7 || A8 | +----++----++----++----++----++----++----++----+ ��������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_nodes_edge.txt��������������������������������������������������������������000444��000764��000764�� 272�12322253245� 20152� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ test +---+ | A | ---------------> | B | +---+ +---+ ^ | | +------+ | C | +------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_wrap.txt��������������������������������������������������������������������000444��000764��000764�� 473�12322253245� 17030� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------------+ Drive +------------+ | Frankfurt | a car | Small | | Oder | to | city near | | Flughafen- | the | a | | Terminal | destination | beautyfull | | | -------------> | river | +------------+ +------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/8_invisible.txt���������������������������������������������������������������000444��000764��000764�� 1474�12322253245� 20073� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� My sample graph +--------+ Test label +-------+ +-------+ #=====> | Five | - - - - - - > | Seven | | Eight | H +--------+ +-------+ +-------+ H H H H #==================================# v +-----+ +--------+ +-------+ Test label +-------+ | Two | | One | ============> | Three | <............> | Six | +-----+ +--------+ +-------+ +-------+ : : Test : label v +--------+ | Four | +--------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_group_labelpos.txt����������������������������������������������������������000444��000764��000764�� 460�12322253245� 21070� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - - - - - - - - - - + ' ' ' +-----------+ +-------------+ ' ' | Zugspitze | --> | Wasserkuppe | ' ' +-----------+ +-------------+ ' ' ' ' Bergtour: ' + - - - - - - - - - - - - - - - - - + ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_endless_loop_2.txt����������������������������������������������������������000444��000764��000764�� 121�12322253245� 20756� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | 1 | --> | 2 | +---+ +---+ +---+----+ | 3 | 4 | +---+----+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_multicell_offset.txt��������������������������������������������������������000444��000764��000764�� 526�12322253245� 21422� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +------+ | E | +------+ ^ | | +------+ | High | +------+ | | v +------+ | D | +------+ +---+ +------+ +---+ | C | <-- | Wide | --> | B | +---+ +------+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_group_align.txt�������������������������������������������������������������000444��000764��000764�� 1270�12322253245� 20405� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - - - - - -+ ' Left: ' ' ' ' +-----+ +------+ ' ' | A | ------> | B | ' ' +-----+ +------+ ' ' ' + - - - - - - - - - - - - -+ + - - - - - - - - - - - - -+ ' Right: ' ' ' ' +-----+ +------+ ' ' | C | ------> | D | ' ' +-----+ +------+ ' ' ' + - - - - - - - - - - - - -+ + - - - - - - - - - - - - -+ ' Center: ' ' ' ' +-----+ +------+ ' ' | E | ------> | F | ' ' +-----+ +------+ ' ' ' + - - - - - - - - - - - - -+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/25_autosplit_empty.txt��������������������������������������������������������000444��000764��000764�� 1053�12322253245� 21421� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--+----+-----+ +----+ | | C | | --> | A1 | +--+----+-----+ +----+ +---+---+ +----+ | D | | --> | A2 | +---+---+ +----+ +--+----+ +----+ | | E | --> | A3 | +--+----+ +----+ +---+ +----+ | F | --> | A4 | +---+ +----+ +---+ +----+ | G | --> | A5 | +---+ +----+ +--+---+ +----+ | | H | --> | A6 | +--+---+ +----+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/8_align.txt�������������������������������������������������������������������000444��000764��000764�� 1740�12322253245� 17175� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� My Graph +--------------+ +---+ | | Left center | | | B | align align | A | | | ---------> no border --> no border --> | | +--------------+ +---+ +--------------+ aligned +-----------+ | Center | left | Rightmost | | aligned text | ---------> | | +--------------+ +-----------+ + - - - - - - - - - - - - - - - - - - - - - + ' Nodes: ' ' ' ' +--------------+ label +-----------+ ' ' | Right | text | Left | ' ' | Aligned | ---------> | aligned | ' ' +--------------+ +-----------+ ' ' ' + - - - - - - - - - - - - - - - - - - - - - + ��������������������������������Graph-Easy-0.75/t/out/4_2x2nodes.txt����������������������������������������������������������������000444��000764��000764�� 342�12322253245� 17520� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# XXX TODO There should be a space between the rows +-----------+ +--------+ | Frankfurt | --> | Hof | +-----------+ +--------+ +-----------+ +--------+ | Hamburg | --> | Altona | +-----------+ +--------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_minlen.txt������������������������������������������������������������������000444��000764��000764�� 633�12322253245� 17341� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---------+ +---------+ +---------+ | Potsdam | <------- | Berlin | -------> | Cottbus | +---------+ +---------+ +---------+ | | | | | v +---------+ | Leipzig | +---------+ �����������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/1node.txt���������������������������������������������������������������������000444��000764��000764�� 30�12322253245� 16611� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----+ | One | +-----+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_invisible.txt���������������������������������������������������������������000444��000764��000764�� 305�12322253245� 20037� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------------------+ v | +---------------+ +--------+ | Bischofswerda | --> --> --> | Bremen | +---------------+ +--------+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_autolabel.txt���������������������������������������������������������������000444��000764��000764�� 325�12322253245� 20023� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---------------------+ Acme Tr ... porated +---------------------+ | Bonn (e ... tstadt) | ---------------------> | Frankfu ... ughafen | +---------------------+ +---------------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_joint_short.txt�������������������������������������������������������������000444��000764��000764�� 240�12322253245� 20412� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---+ | C | +---+ ^ | | +---++---+ | | A || B | | +---++---+ | | | | +----+----+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_flow.txt��������������������������������������������������������������������000444��000764��000764�� 473�12322253245� 17030� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--------+ | Passau | +--------+ | | v +------------+ +--------+ +---------------+ | Regensburg | <-- | Siegen | --> | Aschaffenburg | +------------+ +--------+ +---------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_lists.txt�������������������������������������������������������������������000444��000764��000764�� 154�12322253245� 17212� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------+ +--------+ +-----+ | Bonn | --> | Berlin | <-- | Ulm | +------+ +--------+ +-----+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_list_attr.txt���������������������������������������������������������������000444��000764��000764�� 102�12322253245� 20051� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - -+ ' Berlin ' + - - - -+ + - - - -+ ' Bonn ' + - - - -+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_tree_joint.txt��������������������������������������������������������������000444��000764��000764�� 336�12322253245� 20222� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | A | +---+ | +----+ +-----> | A1 | | +----+ | | | +-----> | A2 | | +----+ | | | +-----> | A3 | | +----+ | | | +-----> | A4 | +----+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_edge_cross.txt��������������������������������������������������������������000444��000764��000764�� 574�12322253245� 20200� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------------------+ | | | | +----------+----------+ | | | v v +----+ +----+ +----+ +----+ | E1 | --> | E2 | --> | S1 | --> | S2 | +----+ +----+ +----+ +----+ | ^ +--------------------------------+ ������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3nodes.txt��������������������������������������������������������������������000444��000764��000764�� 146�12322253245� 17026� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----+ +-----+ +-------+ | One | ==> | Two | - > | Three | +-----+ +-----+ +-------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_newlines.txt����������������������������������������������������������������000444��000764��000764�� 150�12322253245� 17673� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+--------+ .......... | Berlin | : Berlin : | (W) | --> : (O) : +--------+ :........: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_autosplit_escaped.txt�������������������������������������������������������000444��000764��000764�� 52�12322253245� 21540� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-------+---+ | A | B | C | +-------+---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_invisible_left.txt����������������������������������������������������������000444��000764��000764�� 71�12322253245� 21027� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--------+ --> | Berlin | +--------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_list_attr.txt���������������������������������������������������������������000444��000764��000764�� 226�12322253245� 20061� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - -+ test +-.-.-.-.-.-+ test + - - -+ ' Berlin ' ------> ! Frankfurt ! <------ ' Bonn ' + - - - -+ +-.-.-.-.-.-+ + - - -+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_bend_bug.txt����������������������������������������������������������������000444��000764��000764�� 330�12322253245� 17616� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+--------+ +-----------+ | Bonn | -+ | Ulm | +--------+ | +-----------+ | | | +--------+ | +-----------+ | Berlin | +> | Frankfurt | +--------+ +-----------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_rounded.txt�����������������������������������������������������������������000444��000764��000764�� 476�12322253245� 17525� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ......... - - - - ========== ########## ----------- : Pullach : ' Parsing ' H Pankow H # Pullheim # | Paderborn | : : --> ' ' --> H (Berlin) H --> # # --> | | ......... - - - - ========== ########## ----------- ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/8_flow.txt��������������������������������������������������������������������000444��000764��000764�� 1441�12322253245� 17050� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--------------+ +-------+ | East | --> | South | +--------------+ +-------+ | | v +--------------+ +-------+ | South Too | <-- | West | +--------------+ +-------+ | | v +----------------+ +--------------+ | left (south) | <-- | right (west) | +----------------+ +--------------+ | | v +----------------+ +--------------+ | east (default) | --> | final | +----------------+ +--------------+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_edge_types.txt��������������������������������������������������������������000444��000764��000764�� 440�12322253245� 20203� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---------------+ +--------------+ | Bingen | <----------> | Mainz | +---------------+ +--------------+ +---------------+ test-text +--------------+ | Bischofswerde | -----------> | Finsterwalde | +---------------+ +--------------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/10_repair.txt�����������������������������������������������������������������000444��000764��000764�� 5361�12322253245� 17441� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------------------+ | | + - - - - - - - - - - - - - - - - - + | ' DMZ1: ' | ' ' v ' +---------+ +-----------+ ' +----------+ ' | 1Server | <------ | | ' --> | 1Check | -+ ' +---------+ | | ' +----------+ | ' ^ | | ' | | ' +---------------- | | ' | | ' | 1Proxy | ' | | ' | | - - -+ | | + - - - - - - - - - | | ' | | ' | | ' | | ' | | ---+ ' | | ' +-----------+ | ' | | ' | | ' | | ' | | ' | | ' | | ' v | +- - - | | - - - - - - -+ | ' v | ' | ' +-----------+ | +----------+ ' | ' +--- | 1Database | <--+ | | ' <+ ' | +-----------+ | | ' ' | | | | ' ' | +-----------------> | 1Backend | ' ' | | | ' ' | | | ' ' +------------------------> | | ' ' +----------+ ' ' ' +- - - - - - - - - - - - - - - - - - - - - -+ + - - - - - - - - - - - - - - - - - + ' DMZ: ' ' ' ' +---------+ +-----------+ ' +----------+ ' | Server | <------ | Proxy | ' --> | Check | ' +---------+ +-----------+ ' +----------+ ' | ' + - - - - - - - - - | ' ' | ' | ' | ' | ' | ' v ' | - - - - - - - - - -+ ' v ' ' +-----------+ +----------+ ' ' | Database | ------> | Backend | ' ' +-----------+ +----------+ ' ' ' + - - - - - - - - - - - - - - - - - -+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_joining.txt�����������������������������������������������������������������000444��000764��000764�� 433�12322253245� 17511� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------+----+ | v | +---+ +---+ | | A | | B | | +---+ +---+ | | ^ | | | | +---------+ | | | | | | | v | +---+ | | C | <+ +---+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_label.txt�������������������������������������������������������������������000444��000764��000764�� 60�12322253245� 17106� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | A | --> | A | +---+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_selfloop_flow_down.txt������������������������������������������������������000444��000764��000764�� 541�12322253245� 21754� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-------+ | Start | +-------+ | | v Until done +-------+ Until not done +------------- | | -----------------+ | | Main | | +------------> | | <----------------+ +-------+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/0_empty_group.txt�������������������������������������������������������������000444��000764��000764�� 1�12322253245� 20352� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/8_endless_loop.txt������������������������������������������������������������000444��000764��000764�� 320�12322253245� 20542� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-------------------+ | v +---+ +---+ +---+ | 1 | --> | 2 | --> | 3 | +---+ +---+ +---+ +---+----+ | 3 | 4 | +---+----+ +---+----+----+ | 5 | 6 | 7 | +---+----+----+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/18_multiples.txt��������������������������������������������������������������000444��000764��000764�� 2472�12322253245� 20205� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ................................................ : v +----------+ +------+ +----------+ +---------+ +---------+ | 1Bonn | --> | 1Ulm | --> | 1Bautzen | --> | 1Berlin | --> | 1Kassel | +----------+ +------+ +----------+ +---------+ +---------+ ! | ! | v | +----------+ | | 1Koblenz | <-----+ +----------+ ................................................ : v +----------+ +------+ +----------+ +---------+ +---------+ | 2Bonn | --> | 2Ulm | --> | 2Bautzen | --> | 2Berlin | --> | 2Kassel | +----------+ +------+ +----------+ +---------+ +---------+ ! | ! | v | +----------+ | | 2Koblenz | <-----+ +----------+ ................................................ : v +----------+ +------+ +----------+ +---------+ +---------+ | Bonn | --> | Ulm | --> | Bautzen | --> | Berlin | --> | Kassel | +----------+ +------+ +----------+ +---------+ +---------+ ! | ! | v | +----------+ | | Koblenz | <-----+ +----------+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_group_split.txt�������������������������������������������������������������000444��000764��000764�� 1635�12322253245� 20452� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--------------------------------------------+ | | + - - - - - - - - - - - - - - - - - - - - - - + | ' test: ' | ' ' | ' +------+ +--------+ +-----------+ ' | ' | Bonn | --> | Berlin | ----> | Frankfurt | ' | ' +------+ +--------+ +-----------+ ' | ' | ' | + - - - - - - - - - - - - - - | ' | ' | ' | ' | ' | ' v ' v ' +-----------+ '+-----+ ' | Hagen | '| Ulm | ' +-----------+ '+-----+ ' ' + - - - - - - - + ���������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/10borders.txt�����������������������������������������������������������������000444��000764��000764�� 677�12322253245� 17445� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - -+ ' Dashed ' ==> none + - - - - - - -+ +--------------+ .......... | Solid | ..> : Dotted : +--------------+ :........: +-.-.-.-.-.-.-.+ ########## ! dot-dash ! - > # Bold # +-.-.-.-.-.-.-.+ ########## +.-..-..-..-..-+ +~~~~~~~~+ | dot-dot-dash | .-> { wave { +.-..-..-..-..-+ +~~~~~~~~+ # = = = = = = =# #========# " double-dash " ~~> H Double H # = = = = = = =# #========# �����������������������������������������������������������������Graph-Easy-0.75/t/out/5_group_repair.txt������������������������������������������������������������000444��000764��000764�� 1452�12322253245� 20576� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - - - - - - - - + ' DMZ: ' ' ' ' +--------+ +----------+ ' +---------+ ' | Server | <---- | Proxy | ' --> | Check | ' +--------+ +----------+ ' +---------+ ' | ' + - - - - - - - - | ' ' | ' | ' | ' | ' | ' v ' | - - - - - - - - + ' v ' ' +----------+ +---------+ ' ' | Database | ----> | Backend | ' ' +----------+ +---------+ ' ' ' +- - - - - - - - - - - - - - - - + ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4nodes.txt��������������������������������������������������������������������000444��000764��000764�� 275�12322253245� 17032� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----------+ +--------+ +---------+ | Bonn | --> | Berlin | ..> | Cottbus | +-----------+ +--------+ +---------+ | | v +-----------+ | Frankfurt | +-----------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/9_cross.txt�������������������������������������������������������������������000444��000764��000764�� 1061�12322253245� 17231� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +------------------------+ | | | | +---------+ +----+-------------------+ | | v | | | | +---+ +---+ | +---+ +---+----+ | | U | | I | <+ | A | -------> | B | I | <+ +---+ +---+ +---+ +---+----+ | | |----+ | | C | D | v +---+----+ +---+ | | | Z | | E | +---+ +---+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_invisible_right.txt���������������������������������������������������������000444��000764��000764�� 37�12322253245� 21214� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------+ | Bonn | --> +------+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_cross.txt�������������������������������������������������������������������000444��000764��000764�� 402�12322253245� 17202� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---+ | C | +---+ ' ' ' +---+ ' +---+ | A | ------+-----> | B | +---+ ' +---+ ' ' v +---+ | D | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_arrow_styles.txt������������������������������������������������������������000444��000764��000764�� 1136�12322253245� 20634� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--------------+ | Hagnau | -------+ +--------------+ | | | | | | | | | +--------------+ +---------------+ +> | Oberuhlingen | <--> | Uhlingen | | +--------------+ +---------------+ | | +---------------------+ | | | | +--------------+ ................. | | Mainau | ---- : Unteruhlingen : | +--------------+ :...............: | ^ +--------------------------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/8_basename.txt����������������������������������������������������������������000444��000764��000764�� 402�12322253245� 17630� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---+ | 1 | +---+ | | v +---+---+----+ | A | B | C | +---+---+----+ +---+ | 2 | +---+ | | v +---+---+----+ | A | B | C | +---+---+----+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_joint_bug_flags.txt���������������������������������������������������������000444��000764��000764�� 361�12322253245� 21211� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | E | +---+ ^ | | | | +---+ +----+-> | B | | +---+ | | | | +---+ +-> | C | | +---+ | | | | +---+ +-> | D | +---+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_cross_split_hor.txt���������������������������������������������������������000444��000764��000764�� 1270�12322253245� 21311� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +- - - -+ ' ' ' +---+ ' ' | A | ' ' +---+ ' ' | ' ' | ' ' | ' + - - - - - - - | - - - - - -+ ' Cross: | ' ' | ' ' +------+ | +---+ ' ' | C | --------+-------> | D | ' ' +------+ | +---+ ' ' | ' + - - - - - - - | - - - - - -+ ' | ' ' | ' ' v ' ' +---+ ' ' | B | ' ' +---+ ' ' ' +- - - -+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/1_selfloop_2.txt��������������������������������������������������������������000444��000764��000764�� 766�12322253245� 20127� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Until not done +----------------+ v | Until not done +--------------------+ Until not done +----------------- | | -----------------+ | | Main | | +----------------> | | <----------------+ +--------------------+ ^ Until not done | +----------------+ ����������Graph-Easy-0.75/t/out/6_ranks.txt�������������������������������������������������������������������000444��000764��000764�� 344�12322253245� 17176� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ +---+ | A | --> | B | --> | C | +---+ +---+ +---+ | +-------------------+ v +---+ +---+ | D | --> | E | +---+ +---+ | +---------+ v +---+ | F | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/1_selfloop.txt����������������������������������������������������������������000444��000764��000764�� 52�12322253245� 17652� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--+ v | +------+ | One | +------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_flow.txt��������������������������������������������������������������������000444��000764��000764�� 344�12322253245� 17026� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---------+ +-----------+ | Bonn | --> | Berlin | +---------+ +-----------+ | | v +---------+ +-----------+ +-----+ | Cottbus | --> | Moselkern | --> | Ulm | +---------+ +-----------+ +-----+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_cross_inv.txt���������������������������������������������������������������000444��000764��000764�� 402�12322253245� 20056� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---+ | C | +---+ ' ' ' +---+ ' +---+ | A | ' | B | +---+ ' +---+ ' ' v +---+ | D | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_dot_dot_dash.txt������������������������������������������������������������000444��000764��000764�� 264�12322253245� 20510� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+.-..-..-..-..-..+ +-.-+ | Test | ! ! : Test : ! B ! | Test test test | ! ! : test : ..-> ! ! +.-..-..-..-..-..+ +-.-+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_bug_joint_2.txt�������������������������������������������������������������000444��000764��000764�� 361�12322253245� 20256� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | E | +---+ | | | | | +---+ +----+-- | B | | +---+ | | | | +---+ +-- | C | | +---+ | | | | +---+ +-- | D | +---+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/7_star.txt��������������������������������������������������������������������000444��000764��000764�� 1020�12322253245� 17042� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-----------+ | Weimar | +-----------+ ^ | | +------+ +-----------+ +----------+ | Kiel | <-- | | --> | Berlin | +------+ | Dachau | +----------+ +------+ | | +----------+ | Ulm | <-- | | --> | Chemnitz | +------+ +-----------+ +----------+ | | v +-----------+ | Frankfurt | +-----------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/9_chain.txt�������������������������������������������������������������������000444��000764��000764�� 1576�12322253245� 17175� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-----------+ | Dresden | +-----------+ ^ | | +------+ +---------+ +-------+ +-----------+ +----------+ +---------+ | Bonn | --> | Berlin | --> | Koeln | --> | Frankfurt | --> | Hannover | --> | Hamburg | +------+ +---------+ +-------+ +-----------+ +----------+ +---------+ | | | | v v +---------+ +-----------+ | Cottbus | | Chemnitz | +---------+ +-----------+ ����������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_joint.txt�������������������������������������������������������������������000444��000764��000764�� 771�12322253245� 17207� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+----------+ +------+ +------+ | Hagen | ------+-> | Bonn | --> | Prag | +----------+ | +------+ +------+ | | | +----------+ | | Hannover | ------+ +----------+ | | | | +----------+ | | Hamburg | ------+ +----------+ | | | | +----------+ | | Hanau | ------+ +----------+ �������Graph-Easy-0.75/t/out/8_chain.txt�������������������������������������������������������������������000444��000764��000764�� 1557�12322253245� 17173� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-----------+ | Dresden | +-----------+ ^ | | +------+ +--------+ +-------+ +-----------+ +----------+ +---------+ | Bonn | --> | Berlin | --> | Koeln | --> | Frankfurt | --> | Hannover | --> | Hamburg | +------+ +--------+ +-------+ +-----------+ +----------+ +---------+ | | v +-----------+ | Chemnitz | +-----------+ �������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_edge_start.txt��������������������������������������������������������������000444��000764��000764�� 140�12322253245� 20170� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | | --> | B | | A | +---+ | | +---+ | | --> | C | +---+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_group.txt�������������������������������������������������������������������000444��000764��000764�� 374�12322253245� 17213� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - - - - - + ' Test ' ' group ' ' ' ' +------+ +--------+ ' ' | Bonn | --> | Berlin | ' ' +------+ +--------+ ' ' ' + - - - - - - - - - - - - + ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_colors.txt������������������������������������������������������������������000444��000764��000764�� 170�12322253245� 17353� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+----------+ +-----+ +--------+ | Preserve | --> | The | --> | Colors | +----------+ +-----+ +--------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_lists.txt�������������������������������������������������������������������000444��000764��000764�� 373�12322253245� 17216� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------------------------------------+ | v +------+ +--------+ +-----+ +-----------+ | Bonn | --> | Berlin | <-- | Ulm | --> | Frankfurt | +------+ +--------+ +-----+ +-----------+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_class.txt�������������������������������������������������������������������000444��000764��000764�� 60�12322253245� 17134� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#===# #===# H A H --> H B H #===# #===# ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/7_cluster.txt�����������������������������������������������������������������000444��000764��000764�� 134�12322253245� 17537� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+-----+---+---+ | A | BCD | E | F | +---+-----+---+---+ | G | | H | +---+-----+---+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_chain_10_edges.txt����������������������������������������������������������000444��000764��000764�� 2075�12322253245� 20634� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--------------------------------------------------------+ | | | | | +-----------+ | | | v v +---------+ +------+ +-----+ +---------+ +--------+ +--------+ | Koblenz | <-- | Bonn | --> | Ulm | --> | Bautzen | --> | | --> | Kassel | +---------+ +------+ +-----+ +---------+ | | +--------+ ^ | | | | | | | | +-----------> | Berlin | | | | | | | | | | | +---------------+------------+ | | | +--------+ | ^ +----------------------------------------+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/1_empty_group.txt�������������������������������������������������������������000444��000764��000764�� 44�12322253245� 20402� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---------+ | Outside | +---------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_dot.txt���������������������������������������������������������������������000444��000764��000764�� 172�12322253245� 16641� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� // digraph G { +-------------+ +---------+ | Kummersbach | --> | Düsburg | +-------------+ +---------+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_autosplit_offset.txt��������������������������������������������������������000444��000764��000764�� 211�12322253245� 21441� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | 1 | -----------+ +---+ v +---+----+ +---+ | 2 | 3 | --> | 3 | +---+----+ +---+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_autosplit_empty.txt���������������������������������������������������������000444��000764��000764�� 131�12322253245� 21312� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------+ | v +---+----+----+---+ | 1 | 2 | | 3 | +---+----+----+---+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_split_bug.txt���������������������������������������������������������������000444��000764��000764�� 106�12322253245� 20040� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----------+ | Some [] | +-----------+ | Autosplit | +-----------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_joint.txt�������������������������������������������������������������������000444��000764��000764�� 240�12322253245� 17174� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---++---+ | U || C | +---++---+ ^ ^ | | | | +---++---+ | | A || B | | +---++---+ | | | | +----+----+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_split_attribute.txt���������������������������������������������������������000444��000764��000764�� 142�12322253245� 21267� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - + ' Some ' +-----------+ | Autosplit | +-----------+ | Node | +-----------+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_nested_groups.txt�����������������������������������������������������������000444��000764��000764�� 1100�12322253245� 20750� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - - - + ' Inner 1 ' ' ' ' +-------+ +---+ ' ' | A | --> | B | ' ' +-------+ +---+ ' ' ' + - - - - - - - - - - + + - - - - - - - - - - + ' Inner 2 ' ' ' ' +-------+ +---+ ' ' | C | --> | D | ' ' +-------+ +---+ ' ' ' + - - - - - - - - - - + + - - - - - - - - - - + ' Outer ' ' ' ' +-------+ +---+ ' ' | E | --> | F | ' ' +-------+ +---+ ' ' ' + - - - - - - - - - - + ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_invisible_both.txt����������������������������������������������������������000444��000764��000764�� 67�12322253245� 21037� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +------+ --> | Bonn | --> +------+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_selfloop_flow_left.txt������������������������������������������������������000444��000764��000764�� 325�12322253245� 21740� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----+ +--------------------+ +-------+ | End | <-- | Main | <-- | Start | +-----+ +--------------------+ +-------+ ^ Until not done | +----------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/1_selfloop_label.txt����������������������������������������������������������000444��000764��000764�� 224�12322253245� 21032� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Alle Jahre Wieder +-------------------+ v | +-----------------------+ | Freiburg | +-----------------------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_offsets_2.txt���������������������������������������������������������������000444��000764��000764�� 505�12322253245� 17750� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | E | --> | D | -+ +---+ +---+ v | +---+ +> | C | <+ +---+ | ^ +---+ +- | B | ------+ +---+ v ^ +---+ +------ | A | +---+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_long_edge_labels.txt��������������������������������������������������������000444��000764��000764�� 525�12322253245� 21325� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� very long edge label +---------------------------------------+ | v +---+ +---+ +---+ +---+ +---+ | A | --> | B | --> | C | --> | D | --> | E | +---+ +---+ +---+ +---+ +---+ ^ another very long edge label | +---------------------------------------+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_graph_label.txt�������������������������������������������������������������000444��000764��000764�� 157�12322253245� 20316� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� My Graph +------------+ +--------+ | Regensburg | --> | Passau | +------------+ +--------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_cluster_2.txt���������������������������������������������������������������000444��000764��000764�� 242�12322253245� 17753� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---------+ +--------+ | | --> | | | Hamburg | | Altona | | | | | | | --> | | +---------+ +--------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_bend_bug.txt����������������������������������������������������������������000444��000764��000764�� 256�12322253245� 17624� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------+ +-----------+ | Bonn | | Berlin | +------+ +-----------+ | | | | +-----------+ +--------> | Frankfurt | +-----------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_edges.txt�������������������������������������������������������������������000444��000764��000764�� 135�12322253245� 17141� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-----------+ | v +-----+ +-----+ | One | --> | Two | +-----+ +-----+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/drop_result.txt���������������������������������������������������������������000444��000764��000764�� 2512�12322253245� 20214� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ┌────────────┐ ∨ │ ┌───────┐ ┌──────┐ ┌────────┐ ┌───────────┐ │ Mainz │ ──> │ Bonn │ ──> │ │ ──> │ Frankfurt │ └───────┘ └──────┘ │ │ └───────────┘ │ │ │ └────────> │ Berlin │ │ │ │ │ ┌───────────┐ │ │ <── │ Ulm │ └────────┘ └───────────┘ ∧ │ └────┘ ┌───────┐ ┌──────┐ ┌───────────┐ │ Mainz │ ──> │ Bonn │ ──> │ Frankfurt │ └───────┘ └──────┘ └───────────┘ ∧ │ │ ┌──────┐ │ Ulm │ └──────┘ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/8_labels.txt������������������������������������������������������������������000444��000764��000764�� 2016�12322253245� 17342� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� My sample graph +------------------------+ | v +--------+ Test label +-------+ +-------+ #=====> | Five | - - - - - - > | Seven | -------------- | Eight | H +--------+ +-------+ +-------+ H | ^ H +-------------------------------------------------+ H H #==================================# v +-----+ label +--------+ +-------+ Test label +-------+ | Two | <------- | One | ============> | Three | <............> | Six | +-----+ +--------+ +-------+ +-------+ : : Test : label v +--------+ | Four | +--------+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4groups.txt�������������������������������������������������������������������000444��000764��000764�� 710�12322253245� 17233� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - - - - - - - - - -+ ' German Cities ' ' ' ' +-------------+ +--------+ ' ' | Cuxhaven | ----> | Bremen | ' ' +-------------+ +--------+ ' ' ' ' - - - - - - - -+ ' +-------------+ ' ' | Flensburg | ' ' +-------------+ ' ' +-------------+ ' ' | Hamburg | ' ' +-------------+ ' ' ' + - - - - - - - - + ��������������������������������������������������������Graph-Easy-0.75/t/out/6_fanout.txt������������������������������������������������������������������000444��000764��000764�� 1350�12322253245� 17372� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-------------+ +-------------+ +--------------+ | Hello World | --> | /dev/fanout | -+-----> | Hello World! | +-------------+ +-------------+ | +--------------+ | +--------------+ +-----> | Hello World! | | +--------------+ | +--------------+ +-----> | Hello World! | | +--------------+ | +--------------+ +-----> | Hello World! | +--------------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_nodes_inv.txt���������������������������������������������������������������000444��000764��000764�� 60�12322253245� 20013� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | A | ~~> | B | +---+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_endless_loop.txt������������������������������������������������������������000444��000764��000764�� 121�12322253245� 20535� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | 1 | --> | 2 | +---+ +---+ +---+----+ | 3 | 4 | +---+----+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/0_empty_groups.txt������������������������������������������������������������000444��000764��000764�� 1�12322253245� 20535� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_bidi_astar.txt��������������������������������������������������������������000444��000764��000764�� 165�12322253245� 20156� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+--------+ +--------------+ | Erfurt | <--------> | Bad Schandau | +--------+ +--------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_group_no_border.txt���������������������������������������������������������000444��000764��000764�� 124�12322253245� 21235� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Test group +------+ +--------+ | Bonn | --> | Berlin | +------+ +--------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_nodes_5_edges.txt�����������������������������������������������������������000444��000764��000764�� 653�12322253245� 20564� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +----------------------------------------+ | v +--------------+ +-------------+ +---------+ +-----------+ | Default Page | --> | Test Search | --> | Sign Up | --> | Main Page | +--------------+ +-------------+ +---------+ +-----------+ : ^ .......................................................... �������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_cache_bug.txt���������������������������������������������������������������000444��000764��000764�� 353�12322253245� 17755� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - + ' G ' ' ' ' +---+ ' ' | A | ' ------+ ' +---+ ' | ' ' | + - - - + | | | C v +----+ | B | --> +----+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_empty_row.txt���������������������������������������������������������������000444��000764��000764�� 160�12322253245� 20101� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | A | --> | C | +---+ +---+ | | | | +---+ +---+ | B | | D | +---+ +---+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_group_align_center.txt������������������������������������������������������000444��000764��000764�� 401�12322253245� 21715� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� My Graph Nodes: +---------+ label +---------+ +---------+ | Right | text | Left | | Center | | Aligned | -------> | aligned | --> | aligned | +---------+ +---------+ +---------+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_list_attr.txt���������������������������������������������������������������000444��000764��000764�� 571�12322253245� 20065� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� test +---------------------------------------------------------+ | v + - - - -+ test +.-..-..-..-+ test + - - -+ test +.-..-..-..-..-..-.+ ' Berlin ' ------> | Frankfurt | <------ ' Bonn ' ------> | Frankfurt (Oder) | + - - - -+ +.-..-..-..-+ + - - -+ +.-..-..-..-..-..-.+ ���������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_edge_labels.txt�������������������������������������������������������������000444��000764��000764�� 613�12322253245� 20303� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� car +-----------------------------------+ | v +------+ train +--------+ bus +---------+ | Bonn | =======> | Berlin | .....> | Potsdam | +------+ +--------+ +---------+ ! ! bike v +--------+ | Ulm | +--------+ ���������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_selfloop.txt����������������������������������������������������������������000444��000764��000764�� 1111�12322253245� 17710� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--------------------+ | Start | +--------------------+ | | v Until not done +--------------------+ Until not done +----------------- | | -----------------+ | | Main | | +----------------> | | <----------------+ +--------------------+ ^ Until not done | +----------------+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4groups_class.txt�������������������������������������������������������������000444��000764��000764�� 710�12322253245� 20420� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.+ ! German Cities ! ! ! ! +-------------+ +--------+ ! ! | Cuxhaven | ----> | Bremen | ! ! +-------------+ +--------+ ! ! ! ! -.-.-.-.-.-.-.-.+ ! +-------------+ ! ! | Flensburg | ! ! +-------------+ ! ! +-------------+ ! ! | Hamburg | ! ! +-------------+ ! ! ! +-.-.-.-.-.-.-.-.-+ ��������������������������������������������������������Graph-Easy-0.75/t/out/4_nodes_6_edges.txt�����������������������������������������������������������000444��000764��000764�� 1264�12322253245� 20604� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-------------------------------------------------------------+ | | | | | +----------------------------------------+ | | | v v | +--------------+ +-------------+ +---------+ +-----------+ +- | Default Page | --> | Test Search | --> | Sign Up | --> | Main Page | +--------------+ +-------------+ +---------+ +-----------+ | ^ +--------------------------------------------------------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_multicell.txt���������������������������������������������������������������000444��000764��000764�� 740�12322253245� 20051� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------+ | Client1 | +---------+ ^ | | v +---------+ +---------+ +---------+ | Client3 | <--> | Proxy | <--> | Client2 | +---------+ +---------+ +---------+ ^ | | v +---------+ | Client | +---------+ ��������������������������������Graph-Easy-0.75/t/out/3_empty_group.txt�������������������������������������������������������������000444��000764��000764�� 103�12322253245� 20420� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---+ +---+ | A | --> | B | +---+ +---+ +---+ | C | +---+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_autosplit_hang.txt����������������������������������������������������������000444��000764��000764�� 74�12322253245� 21056� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+---+ | 1 | --> | 2 | 3 | +---+ +---+---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_cluster_3.txt���������������������������������������������������������������000444��000764��000764�� 313�12322253245� 17753� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------+ | v +---------+ +--------+ | | --> | | | Hamburg | | Altona | | | | | | | --> | | +---------+ +--------+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_corrupt.txt�����������������������������������������������������������������000444��000764��000764�� 135�12322253245� 17551� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+----+ +------+ +----+ | AB | --> | ABCB | --> | AB | +----+ +------+ +----+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_node_edge.txt���������������������������������������������������������������000444��000764��000764�� 157�12322253245� 17771� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ test +---+ | A | -----------------------> | B | +---+ +---+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_inherit.txt�����������������������������������������������������������������000444��000764��000764�� 237�12322253245� 17520� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------------+ | Left | +------------+ | | v +------------+ | Lefty, too | +------------+ | | v +------------+ | Right | +------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_edge_repair.txt�������������������������������������������������������������000444��000764��000764�� 701�12322253245� 20320� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� #====# H H + - - - - - - - - - - - - -+ H H ' Router: ' H H ' ' H v ' +-------+ +--------+ ' H +---------+ ' | Input | --> | Output | ' H | Network | ' +-------+ +--------+ ' H +---------+ ' ' H + - - - - - - - - - - - - -+ H H H #===========# ���������������������������������������������������������������Graph-Easy-0.75/t/out/2_zeros.txt�������������������������������������������������������������������000444��000764��000764�� 131�12322253245� 17210� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 0 +----------+ v | +---+ 0 +---+ | 0 | ---> | 0 | +---+ +---+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/7_tree.txt��������������������������������������������������������������������000444��000764��000764�� 660�12322253245� 17021� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | A | +---+ | +----+ +-----> | A1 | | +----+ | +----+ +-----> | A2 | | +----+ | | +-----+ | +------> | A23 | | | +-----+ | | +-----+ | +------> | A21 | | | +-----+ | | +-----+ | +------> | A22 | | +-----+ | +----+ +-----> | A3 | +----+ ��������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_classes.txt�����������������������������������������������������������������000444��000764��000764�� 113�12322253245� 17503� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----+ red +-------+ | Red | -----> | Black | +-----+ +-------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_bidi_endpoint.txt�����������������������������������������������������������000444��000764��000764�� 165�12322253245� 20664� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+--------+ +--------------+ | Erfurt | <--------> | Bad Schandau | +--------+ +--------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/1_bidi_loop.txt���������������������������������������������������������������000444��000764��000764�� 230�12322253245� 20005� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--+ v v +------+ +--> | | <--+ | | Hamm | | +--> | | <--+ +------+ ^ ^ +--+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_edge_labels_from_class.txt��������������������������������������������������000444��000764��000764�� 154�12322253245� 22512� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ Yes +---+ MyLabel +---+ | A | -----> | B | ---------> | C | +---+ +---+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_flow.txt��������������������������������������������������������������������000444��000764��000764�� 150�12322253245� 17016� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +------------+ | v +------+ +-------+ | Left | | Right | +------+ +-------+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_long_labels.txt�������������������������������������������������������������000444��000764��000764�� 220�12322253245� 20326� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------+ +---+ | My | A | | | long | long | B | | node | label | | | name | -------> | | +------+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_flow.txt��������������������������������������������������������������������000444��000764��000764�� 402�12322253245� 17017� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----------+ +-----------+ | Wolfsburg | <-- | Bielefeld | +-----------+ +-----------+ ^ | | +-----------+ | Enschede | +-----------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2nodes.txt��������������������������������������������������������������������000444��000764��000764�� 74�12322253245� 17005� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----+ +-----+ | One | ==> | Two | +-----+ +-----+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_selfloop.txt����������������������������������������������������������������000444��000764��000764�� 372�12322253245� 17701� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Until not done +----------------+ v | +-------+ +--------------------+ +-----+ | Start | --> | Main | --> | End | +-------+ +--------------------+ +-----+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_autosplit_class.txt���������������������������������������������������������000444��000764��000764�� 74�12322253245� 21247� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#===#.... H A H B : #===#...: + - +===# ' C H D H + - +===# ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_offsets.txt�����������������������������������������������������������������000444��000764��000764�� 451�12322253245� 17527� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | E | <-- | D | +---+ +---+ ^ +---+ +- | C | +---+ ^ +---+ +- | B | +---+ ^ +---+ +------ | A | +---+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_selfloop_flow_up.txt��������������������������������������������������������000444��000764��000764�� 753�12322253245� 21437� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-------+ | End | +-------+ ^ | | Until not done +-------+ +----------------- | | | | Main | +----------------> | | +-------+ ^ | | +-------+ | Start | +-------+ ���������������������Graph-Easy-0.75/t/out/2_group_multicell.txt���������������������������������������������������������000444��000764��000764�� 614�12322253245� 21262� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - - - - - - - - - - - - -+ ' Some group: ' ' ' ' +-------------------+ +--------+ ' ' | Frankfurt a. Main | ----> | Berlin | ' ' | (Flughafen) | +--------+ ' ' | | ' ' +-------------------+ - - - - - - - -+ ' ' + - - - - - - - - - - - + ��������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_cluster.txt�����������������������������������������������������������������000444��000764��000764�� 121�12322253245� 17526� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---------+ +--------+ | Hamburg | --> | Altona | +---------+ +--------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_autosplit_shape.txt���������������������������������������������������������000444��000764��000764�� 62�12322253245� 21237� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | A | B +---+ |---+ C | D | ---+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_autosplit_class.txt���������������������������������������������������������000444��000764��000764�� 322�12322253245� 21265� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +--------+----+---+ | 1 | --> | D | B | C | +---+ +--------+----+---+ ^ | | +---+ +---+ | 2 | --> | 3 | +---+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_cross_split.txt�������������������������������������������������������������000444��000764��000764�� 1270�12322253245� 20441� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +- - - -+ ' ' ' +---+ ' ' | C | ' ' +---+ ' ' | ' ' | ' ' | ' + - - - - - - - | - - - - - -+ ' Cross: | ' ' | ' ' +------+ | +---+ ' ' | A | --------+-------> | B | ' ' +------+ | +---+ ' ' | ' + - - - - - - - | - - - - - -+ ' | ' ' | ' ' v ' ' +---+ ' ' | D | ' ' +---+ ' ' ' +- - - -+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/1_undirected_loop.txt���������������������������������������������������������000444��000764��000764�� 230�12322253245� 21224� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--+ | | +------+ +--- | | ---+ | | A | | +--- | | ---+ +------+ | | +--+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/8_points.txt������������������������������������������������������������������000444��000764��000764�� 111�12322253245� 17366� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� * --> # --> . --> o --> <> --> + --> --> * �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_multicell.txt���������������������������������������������������������������000444��000764��000764�� 664�12322253245� 20057� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------+ +---------+ | v v | +---+ +---+ +---+ +--------+ +---+ | G | <-- | | --> | | --> | C | --> | D | +---+ | A | | B | +--------+ +---+ | | | | ^ | | --> | | ------+ +---+ +---+ | | v +---+ | F | +---+ ����������������������������������������������������������������������������Graph-Easy-0.75/t/out/6_split_join_loop.txt���������������������������������������������������������000444��000764��000764�� 1070�12322253245� 21300� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +--------------------------------------------------+ v | +---+ +---+ +---+ +---+ +---+ | A | --> | B | --> | C | -+-----> | X | ------+-> | I | +---+ +---+ +---+ | +---+ | +---+ | | | | | | | +---+ | +-----> | Y | ------+ +---+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_joint_bug2.txt��������������������������������������������������������������000444��000764��000764�� 352�12322253245� 20120� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-------------++---+ | A || E | +-------------++---+ ^ ^ ^ ^ | | | | | | | | v v v | +---++---++---+ | | B || C || D | | +---++---++---+ | ^ ^ ^ | +----+----+----+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_a-star_bug.txt��������������������������������������������������������������000444��000764��000764�� 221�12322253245� 20075� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | 5 | +---+ | | +---+---+----+ | | | 2 | 3 | 4 | | 1 | +---+---+----+ | | | | | <--------------+ +---+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_joint_label.txt�������������������������������������������������������������000444��000764��000764�� 1062�12322253245� 20357� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-----------+ travel +--------+ | Aachen | ------+-----------------> | Zittau | +-----------+ | +--------+ | | travel | +-----------+ | | Dachau | ------+ +-----------+ | | | travel | +-----------+ | | Buxtehude | ------+ +-----------+ | | | travel | +-----------+ | | Cottbus | ------+ +-----------+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/3_joint.txt�������������������������������������������������������������������000444��000764��000764�� 334�12322253245� 17177� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+----------+ +--------+ | Mannheim | ------+-> | Weimar | +----------+ | +--------+ | | | +----------+ | | Potsdam | ------+ +----------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/4_near.txt��������������������������������������������������������������������000444��000764��000764�� 355�12322253245� 17005� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------+ +--------+ +-------+ | Bonn | --> | Berlin | --> | Koeln | +------+ +--------+ +-------+ ^ | | +--------+ | Essen | +--------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/2_autosplit_empty.txt���������������������������������������������������������000444��000764��000764�� 102�12322253245� 21306� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+--------+----------+ | Siegen | Siegburg | +--------+----------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/5_joint.txt�������������������������������������������������������������������000444��000764��000764�� 1174�12322253245� 17224� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------+ | Zwickau | +---------+ ^ | | +------------------------------+ | | Hannover | | +------------------------------+ | | | | | | | | | v v v | +--------++--------++----------+ | | Aachen || Berlin || Cuxhaven | | +--------++--------++----------+ | | | | | +---------+---------+-----------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot���������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15542� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_square_bracket_in_attr.txt����������������������������������������������000444��000764��000764�� 60�12322253245� 23330� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | ] | +---+ | | v +---+ | b | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/4_loose.txt���������������������������������������������������������������000444��000764��000764�� 267�12322253245� 17771� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | A | -+ +---+ | | | | | | | +---+ | | B | | +---+ | | | | | | | +---+ | | C | | +---+ | | | | | | | +---+ | | D | -+ +---+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/4_html_like.txt�����������������������������������������������������������000444��000764��000764�� 110�12322253245� 20603� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | | +---+ +---+ | a | +---+ +---+ | | +---+ +---+ | | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_ignore.txt��������������������������������������������������������������000444��000764��000764�� 110�12322253245� 20114� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-------+ | node1 | +-------+ | | v +-------+ | node2 | +-------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/5_scopes_uni.txt����������������������������������������������������������000444��000764��000764�� 546�12322253245� 21020� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ +---+ | c | --- | a | --- | d | +---+ +---+ +---+ | | | | | | | | | | +---+ | | | b | | | +---+ | | | | | | | | | | | +---+ | +-------| o |-------+ +---+ ����������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_nospace.txt�������������������������������������������������������������000444��000764��000764�� 124�12322253245� 20266� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---------+ | mike | +---------+ | | v +---------+ | michael | +---------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/6_group_align.txt���������������������������������������������������������000444��000764��000764�� 1270�12322253245� 21173� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - - - - - -+ ' Left: ' ' ' ' +-----+ +------+ ' ' | A | ------> | B | ' ' +-----+ +------+ ' ' ' + - - - - - - - - - - - - -+ + - - - - - - - - - - - - -+ ' Right: ' ' ' ' +-----+ +------+ ' ' | C | ------> | D | ' ' +-----+ +------+ ' ' ' + - - - - - - - - - - - - -+ + - - - - - - - - - - - - -+ ' Center: ' ' ' ' +-----+ +------+ ' ' | E | ------> | F | ' ' +-----+ +------+ ' ' ' + - - - - - - - - - - - - -+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/3_graph_label_long.txt����������������������������������������������������000444��000764��000764�� 431�12322253245� 22117� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---------+ | Köln | +---------+ | | v +---------+ | Bonn | +---------+ | | v +---------+ | Koblenz | +---------+ Deutsche Städte am Rhein ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/4_uppercase.txt�����������������������������������������������������������000444��000764��000764�� 536�12322253245� 20636� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - -+ ' cluster_me ' ' ' ' ............ ' ' : a : ' ' :..........: ' ' | ' ' | foo ' ' v ' ' ............ ' ' : b : ' ' :..........: ' ' ' + - - - - - - -+ ............ : c : :..........: | | foo v ............ : d : :..........: ������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/7_record.txt��������������������������������������������������������������000444��000764��000764�� 504�12322253245� 20123� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Left aligned label +------------------------+----+----+ | A | B | C | +------------------------+----+----+ +------------------------+ | <f1> Aa | <f2> Bb | Cc | +------------------------+ +------------------------+----+----+ | AA | BB | CC | +------------------------+----+----+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_setlinewidth.txt��������������������������������������������������������000444��000764��000764�� 116�12322253245� 21342� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������########## # Bonn # ########## | | v ########## # Berlin # ########## ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/3_ids.txt�����������������������������������������������������������������000444��000764��000764�� 135�12322253245� 17420� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------+ | 123 | +------+ +------+ | abc | +------+ | | v +------+ | test | +------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/0_empty.txt���������������������������������������������������������������000444��000764��000764�� 1�12322253245� 17724� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/9_stacking.txt������������������������������������������������������������000444��000764��000764�� 1202�12322253245� 20466� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +----+ +----+ +---+ +---+ +---+ +---+ +---+ | 0 | --> | 11 | --> | 1 | --> | 2 | --> | 3 | --> | 8 | --> | 5 | --> | 6 | +---+ +----+ +----+ +---+ +---+ +---+ +---+ +---+ | ^ | | v | +----+ | | 10 | ----------------------------------------------+ +----+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/10_numbers.txt������������������������������������������������������������000444��000764��000764�� 776�12322253245� 20405� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------------+ | -100 | +------------+ | | v +------------+ | 123.1230 | +------------+ +------------+ | .1 | +------------+ | | v +------------+ | -1. | +------------+ +------------+ | .99 | +------------+ | | v +------------+ | 0. | +------------+ +------------+ | 0.99 | +------------+ | | v +------------+ | 12.88 | +------------+ +------------+ | 00019.1001 | +------------+ | | v +------------+ | 1000. | +------------+ ��Graph-Easy-0.75/t/out/dot/9_back.txt����������������������������������������������������������������000444��000764��000764�� 766�12322253245� 17561� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +----+ +----+ +---+ +---+ +---+ | 0 | --> | 11 | --> | 1 | --> | 2 | --> | 3 | --> | 8 | +---+ +----+ +----+ +---+ +---+ +---+ | ^ | | v | +----+ +---+ +---+ | | 10 | --> | 6 | <-- | 5 | ------+ +----+ +---+ +---+ ����������Graph-Easy-0.75/t/out/dot/3_colors.txt��������������������������������������������������������������000444��000764��000764�� 434�12322253245� 20144� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - + ' cluster_1 ' ' ' ' +---------+ ' ' | A | ' ' +---------+ ' ' | ' ' | ' ' v ' ' +---------+ ' ' | B | ' ' +---------+ ' ' ' + - - - - - - + | | v +---------+ | C | +---------+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/3_empty_record.txt��������������������������������������������������������000444��000764��000764�� 132�12322253245� 21332� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------------+--+-----------+ | Compositor | | Compose() | +------------+--+-----------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_ports.txt���������������������������������������������������������������000444��000764��000764�� 210�12322253245� 20001� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-------+ | north | -+ +-------+ | | +-------------+ | | +-------+ +> | south | +-------+ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_no_spaces.txt�����������������������������������������������������������000444��000764��000764�� 116�12322253245� 20611� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+--------+ | bonn | +--------+ | | | +--------+ | berlin | +--------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_bool.txt����������������������������������������������������������������000444��000764��000764�� 116�12322253245� 17572� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+--------+ | Bonn | +--------+ | | v +--------+ | Berlin | +--------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/5_scopes.txt��������������������������������������������������������������000444��000764��000764�� 546�12322253245� 20145� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ +---+ | c | <-- | a | --> | d | +---+ +---+ +---+ | | | | | | | v | | +---+ | | | b | | | +---+ | | | | | | | | v | | +---+ | +-----> | u | <-----+ +---+ ����������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_group_labelloc.txt������������������������������������������������������000444��000764��000764�� 430�12322253245� 21627� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - + ' ' ' +-------------+ ' ' | Zugspitze | ' ' +-------------+ ' ' | ' ' | ' ' v ' ' +-------------+ ' ' | Wasserkuppe | ' ' +-------------+ ' ' ' ' Bergtour: ' + - - - - - - - - + ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/9_tree.txt����������������������������������������������������������������000444��000764��000764�� 527�12322253245� 17613� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---+----+----+ | | A | | +---+----+----+ | | | | v | +---+----+----+ | | | B | | | +---+----+----+ | | | | | v | +--+----+----+ | | | C | | <-----+ +--+----+----+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/5_scope_atr.txt�����������������������������������������������������������000444��000764��000764�� 321�12322253245� 20617� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +---+ | a | +---+ --- | b | --- | | v +---+ c --> | u | +---+ ^ | | d ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/6_comments.txt������������������������������������������������������������000444��000764��000764�� 1467�12322253245� 20522� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-----------------------------+ +---+ +---+ | c | <-- | a | --> | d | +-----------------------------+ +---+ +---+ | | | +----+ | | | v | | +-----------------------------+ +---+ | | | my node /* not a comment */ | --> | b | | | +-----------------------------+ +---+ | | | | | | | | v | | +---+ | +------------------------------------> | u | <-----+ +---+ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_comment_inside_attr.txt�������������������������������������������������000444��000764��000764�� 60�12322253245� 22644� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | a | +---+ | | v +---+ | b | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/3_output_lone.txt���������������������������������������������������������000444��000764��000764�� 102�12322253245� 21210� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | a | +---+ | | v +---+ | b | +---+ +---+ | c | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/5_scopes_chain.txt��������������������������������������������������������000444��000764��000764�� 546�12322253245� 21307� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ +---+ | c | <-- | a | --> | d | +---+ +---+ +---+ | | | | | | | v | | +---+ | | | b | | | +---+ | | | | | | | | v | | +---+ | +-----> | o | <-----+ +---+ ����������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/3_empty_record_LR.txt�����������������������������������������������������000444��000764��000764�� 151�12322253245� 21730� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+------------+ | Compositor | +------------+ | | +------------+ | Compose() | +------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/16_split.txt��������������������������������������������������������������000444��000764��000764�� 1036�12322253245� 20101� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-------------------------+ | | | +-----+--+--+----+ | | nil | | | 0 | | +-----+--+--+----+ | | | | v v +-----+--+--+------+ | nil | | | 1 | +-----+--+--+------+ +-------------------------+ | | | +-----+--+--+----+ | | nil | | | 2 | | +-----+--+--+----+ | | | | v v +-----+--+--+------+ | nil | | | 3 | +-----+--+--+------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/4_record.txt��������������������������������������������������������������000444��000764��000764�� 264�12322253245� 20123� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +------+-------+ | test | split | +------+-------+ | | v +--------+-------+ | record | test | +--------+-------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/4_strings.txt�������������������������������������������������������������000444��000764��000764�� 410�12322253245� 20327� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+----------------+ | Bonn am Rhein | +----------------+ | | train (ICE) v +----------------+ | Berlin Ost | +----------------+ +----------------+ | Bonn (Rhei n) | +----------------+ | | v +----------------+ | Cottbus | +----------------+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/4_cluster_labeljust.txt���������������������������������������������������000444��000764��000764�� 1420�12322253245� 22406� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+ - - - - - - - - - - - - + ' Right aligned ' ' ' ' +---------------------+ ' ' | aaaaaaaaaaaaaaaaaaa | ' ' +---------------------+ ' ' | ' ' | ' ' v ' ' +---------------------+ ' ' | b | ' ' +---------------------+ ' ' ' + - - - - - - - - - - - - + + - - - - - - - - - - - - + ' Left aligned ' ' ' ' +---------------------+ ' ' | c | ' ' +---------------------+ ' ' | ' ' | ' ' v ' ' +---------------------+ ' ' | ddddddddddddddd | ' ' +---------------------+ ' ' ' + - - - - - - - - - - - - + ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_linewidth.txt�����������������������������������������������������������000444��000764��000764�� 31�12322253245� 20602� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 123 | | v foo �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_strict.txt��������������������������������������������������������������000444��000764��000764�� 156�12322253245� 20153� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+-------------+ | Wolfsbüttel | +-------------+ | | v +-------------+ | Köln | +-------------+ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/2_graph_label_bottom.txt��������������������������������������������������000444��000764��000764�� 206�12322253245� 22463� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +-----------+ | Köln | +-----------+ | | v +-----------+ | Stralsund | +-----------+ Deutsche Städte ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/3_invis.txt���������������������������������������������������������������000444��000764��000764�� 77�12322253245� 17756� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | a | +---+ | | v | | v +---+ | c | +---+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/9_edge_styles.txt���������������������������������������������������������000444��000764��000764�� 630�12322253245� 21156� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | F | <## | A | +---+ +---+ # # # # v v +---+ +---+ | G | | B | +---+ +---+ # # # # v v +---+ +---+ | H | | C | +---+ +---+ # # # # v v +---+ +---+ | I | | D | +---+ +---+ # # v +---+ | E | +---+ ��������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/4_compass.txt�������������������������������������������������������������000444��000764��000764�� 355�12322253245� 20313� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+--------+-----------+ | bonn N | S | -+ +--------+-----------+ | | | +---------+ | | v | +----------+----+ +-----> | berlin N | w | +----------+----+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/6_2_cluster.txt�����������������������������������������������������������000444��000764��000764�� 2173�12322253245� 20572� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +- - - - - - - -+ ' first ' ' ' ' +-----+ ' ' | a | ' <# ' +-----+ ' # ' | ' # ' | ' # ' v ' # ' +-----+ ' # ' | b | ' # ' +-----+ ' # ' ' # +- - - - - - - -+ # | # | # v # + - - - - - - - - - - -+ # ' second ' # ' ' # ' +-----+ ' # ' +--------> | q | ' # ' | +-----+ ' # ' | | ' # ' | | ' # ' | v ' # ' | +-----+ ' # ' | | r | ' ## ' | +-----+ ' ' | | ' ' | | ' ' | v ' ' | +-----+ ' ' | | s | ' ' | +-----+ ' ' | | ' ' | | ' ' | v ' ' | +-----+ ' ' +--------- | p | ' ' +-----+ ' ' ' + - - - - - - - - - - -+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/dot/3_node_label.txt����������������������������������������������������������000444��000764��000764�� 411�12322253245� 20722� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Graphname +---------------------+ | Graphname 0 | +---------------------+ | | 0->1 Graphname 0 1 v +---------------------+ | Graphname 1 | +---------------------+ +---------------------+ | Name: 2 Graphname | +---------------------+ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/gdl���������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15522� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/gdl/2_bottom_to_top.txt�������������������������������������������������������000444��000764��000764�� 60�12322253245� 21465� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | B | +---+ ^ | | +---+ | A | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/gdl/1_color_code.txt����������������������������������������������������������000444��000764��000764�� 317�12322253245� 20731� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Graph of sub_105D40F +---------------------------+ | sub_105D40F: | | mov edi, esi | | push ebp | | jz short loc_105D27B | +---------------------------+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/gdl/2_right_to_left.txt�������������������������������������������������������000444��000764��000764�� 60�12322253245� 21426� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | B | <-- | A | +---+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/gdl/2_left_to_right.txt�������������������������������������������������������000444��000764��000764�� 60�12322253245� 21426� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ +---+ | A | --> | B | +---+ +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/out/gdl/2_top_to_bottom.txt�������������������������������������������������������000444��000764��000764�� 60�12322253245� 21465� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������+---+ | A | +---+ | | v +---+ | B | +---+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fun�������������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 14735� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fun/0030.txt����������������������������������������������������������������������000444��000764��000764�� 761�12322253245� 16201� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Example from Graphviz extension # http://www.wickle.com/wiki/index.php/Graphviz_extension node { shape: circle; } [ main ] { shape: rect; } # this is a comment -> [ parse ] -> [ execute ] -> [ make_string ] { label: make a\n string; } [ main ] ..> [ init ] [ main ] -- Testlabel --> [ cleanup ] [ init ] -> [ make_string ] [ main ] == 100 times ==> { color: red; style: bold; } [ printf ] # bold red edge! [ execute ] -> { color: red; } [ compare ] { shape: rect; background: #c1b2ff; } ���������������Graph-Easy-0.75/t/fun/0020.txt����������������������������������������������������������������������000444��000764��000764�� 320�12322253245� 16167� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Enlightment # http://bloodgate.com/perl/graph/ [ Textual description ] { fill: #804020; } -> [ Parser ] { fill: #a06040; } -> [ Layouter ] { fill: #d08060; } -> [ Output (ASCII/HTML) ] { fill: #ffa090; } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fun/0011.txt����������������������������������������������������������������������000444��000764��000764�� 506�12322253245� 16175� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Elan and Roy on Teamwork # http://www.cafepress.com/orderofthestick.10272636?zoom=yes#zoom [ Teamwork ] { fill: yellow; title: Elan; } -- is the key to --> [ Victory ] { fill: red; title: Roy; } [ Victory ] -- the order of the --> [ Stick ] { fill: #ff80a0; } [ Victory ] -- Treasure --> [ Haley ] { fill: lightblue; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fun/geek_dating.txt���������������������������������������������������������������000444��000764��000764�� 3575�12322253245� 20106� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# The famous 1999 geek dating flow char from userfriendly.org # http://www.userfriendly.org/cartoons/archives/99mar/19990314.html graph { label: GEEK DATING FLOWCHART; font-size: 3em; color: red; font: serif; } node { text-wrap: auto; color: black; font-size: 0.8em; } edge { color: black; } edge.yes { label: Yes; } edge.no { label: No; } [ Start ] { label: Do you have someone in mind? } --> { class: no; flow: forward; } [ GPF ] { fill: #00b0ff; } [ Start ] --> { class: yes; } [ Available ] { label: Are they available? } --> { class: yes; } [ Exist ] { label: Do they know you exist? } --> { class: yes; } [ Truly remararkable. They're available and they know you exist. Will wonders never cease. ] { origin: Exist; offset: 0,4; } --> { end: back, 0; } [ Askout ] { label: So now you just need to ask them out on a date. What do they say? } --> { class: yes; } [ Hahahaha! Yeah. Right. ] --> { start: front,0; end: right, 0; } [ End ] { label: Well, you can still have a date with your Palm S<Pilot>; format: pod; } [ Available ] --> { class: no; } [ GPF ] [ Exist ] --> { class: no; } [ Ask them if they like Computers: ] --> { class: no; } [ Ask them if they like 'Star Wars': ] --> { class: no; } [ Ask them if they like the "Hitchhiker's Guide': ] --> { class: no; } [ Qualities ] { label: Ask them if they have any redeeming qualities at all: } [ Ask them if they like Computers: ], [ Ask them if they like 'Star Wars': ] [ Ask them if they like the "Hitchhiker's Guide': ], [ Qualities ] --> { class: yes; end: back, 0; } [ Lying ] { label: They're lying. Ditch them; } [ Qualities ] --> { class: no; } [ Smell ] { label: At least they're honest. Ask them if you smell bad: } --> { class: no; } [ Lying ] --> [ End ] [ Smell ] --> { class: yes;} [ Yup, they're honest all right. But now you know they think you smell bad. Ditch them. ] --> [ End ] �����������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fun/0200.txt����������������������������������������������������������������������000444��000764��000764�� 635�12322253245� 16200� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Example from: http://wiki.debian.org.hk/w/Generate_SSL_cert # http://wiki.debian.org.hk/w/Generate_SSL_cert [ Start ] { shape: rounded; } -- openssl\n genrsa --> [ key ] -- openssl\n req --> [ Certificate\n Signing\n Request\n (CSR) ] -> [ CA ] { label: "Certificate\n Authority\n (CA)"; shape: circle; } -> [ Certificate\n (CRT) ] [ CA ] -> [ Certificate\n Revocation\n List\n (CRL) ] [ CA Key ] -> [ CA ] ���������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fun/0010.txt����������������������������������������������������������������������000444��000764��000764�� 307�12322253245� 16173� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Elan and Roy on Teamwork # http://www.cafepress.com/orderofthestick.10272636?zoom=yes#zoom [ Teamwork ] { fill: yellow; title: Elan; } -- is the key to --> [ Victory ] { fill: red; title: Roy; } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fun/overview.txt������������������������������������������������������������������000444��000764��000764�� 1165�12322253245� 17504� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������graph { flow: south; } node.input { fill: lime; } node.output { fill: darkorange; } node.dot { fill: gold; } [ Text ], [ Graphviz ] { class: input; } -> [ Parser ] [ Perl ] { class: input; }, [ Parser ] -> [ Graph::Easy ] -> { start: front; } [ Text2 ] { label: Text; }, [ Graphviz2 ] { class: output } [ Graph::Easy ] -> [ Layouter ] [ Graphviz2 ] { label: Graphviz; } -> { minlen: 1; } [ dot ] { fill: #8080ff; } -> { start: front; } [ .pdf ], [ .png ], [ .ps ] { class: dot; } [ Layouter ] { offset: 2,0; origin: Graph::Easy; } -> { start: front; } [ ASCII /\nUnicode ], [ HTML ], [ SVG ] { class: output } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fun/biofuel.txt�������������������������������������������������������������������000444��000764��000764�� 1140�12322253245� 17254� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Example from: http://www.islandseeds.org/wiki/Biofuel # http://www.islandseeds.org/wiki/Biofuel graph { flow: east; } node { shape: ellipse; } [ solar energy ] { fill: yellow; } [ water] { fill: cyan; } [ soil ] { fill: burlywood; } -> [ vegetation ] -> [ processing ] -> [ biofuel ] -> [ combustion ] -> [ useful work ] { fill: lightgray; } [ combustion ] -> [ carbon dioxide ] [ combustion ] -> [ pollution ] [ processing ] ..> [ compost ] ..> [ soil ] [ processing ] ..> [ carbon dioxide ] [ processing ] ..> [ pollution ] [ water ] -> [ vegetation ] [ solar energy ] -> [ vegetation ] ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/t/fun/0000.txt����������������������������������������������������������������������000444��000764��000764�� 761�12322253245� 16176� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Example from Graphviz extension # http://www.wickle.com/wiki/index.php/Graphviz_extension node.red { background: red; } [ ns ] { class: red } -> [ addons ] -> [ metamod ] { class: red } -> [ dlls2 ] { label: dlls } [ metamod ] -> [ doc ] -> [html ] [ ns ] -> [ logs ] [ ns ] -> [ gfx ] -> [ vgui ] [ addons ] -> [ amxmodx ] -> [ configs ] { class: red } [ amxmodx ] -> [ data ] -> [ lang ] [ amxmodx ] -> [ dlls ] [ amxmodx ] -> [ plugins ] { class: red } [ doc ] -> [ txt ] ���������������Graph-Easy-0.75/t/fun/0131.txt����������������������������������������������������������������������000444��000764��000764�� 612�12322253245� 16176� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Three non-overlapping groups group.dmz { fill: #ffa070; } group.outer { fill: #f07070; } ( Internal Network: [ Workstation ] ) { fill: #70b070; } [ Workstation ] --> [ Inner Firewall ] ( DMZ: [ Inner Firewall ] -> [ Proxy ] --> [ Outer Firewall ] [ Proxy ] --> [ Database\n Server ] ) { class: dmz; } ( Outer: [ Internet ] ) { class: outer } [ Outer Firewall ] --> [ Internet ] ����������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/bin���������������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 14452� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/bin/graph-easy����������������������������������������������������������������������000555��000764��000764�� 45101�12322253245� 16616� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w use strict; use Graph::Easy 0.63; use Graph::Easy::Parser; my $help_requested = 0; # echo "[A]" | graph-easy # should work # graph-easy # need help $help_requested = 1 if @ARGV == 0 && -t STDIN; # list of supported output formats for external renderers like dot: my @external = qw/png bmp gif jpg pdf ps ps2 tif tga pcl hpgl/; my $external = join('|',@external); my $qr_ext = qr/^($external)\z/; my $OUT = \*STDERR; my $opt = get_options(); # error? $help_requested = 1 if !ref($opt); # no error and --help was specified $help_requested = 2 if ref($opt) && $opt->{help} ne ''; my $copyright = "Graph::Easy v$Graph::Easy::VERSION (c) by Tels 2004-2008. " ."Released under the GPL 2.0 or later.\n\n"; if (ref($opt) && $opt->{version} != 0) { print $copyright; print "Running under Perl v$]"; eval { require Graph::Easy::As_svg; }; if (defined $Graph::Easy::As_svg::VERSION) { print " and using Graph::Easy::As_svg v$Graph::Easy::As_svg::VERSION"; } print ".\n\n"; exit 2; } if ($help_requested > 0) { print STDERR $copyright; require Pod::Usage; if ($help_requested > 1 && $Pod::Usage::VERSION < 1.35) { # The way old Pod::Usage executes "perldoc" might fail: system('perldoc', $0); exit 2; } Pod::Usage::pod2usage( { -exitval => 2, -verbose => $help_requested } ); } my $verbose = $opt->{verbose}; print $OUT $copyright if $verbose; ############################################################################# # Create the parser object my $parser_class = 'Graph::Easy::Parser'; if ($opt->{from} eq 'graphviz') { require Graph::Easy::Parser::Graphviz; $parser_class = 'Graph::Easy::Parser::Graphviz'; } elsif ($opt->{from} =~ /^(vcg|gdl)\z/) { require Graph::Easy::Parser::VCG; $parser_class = 'Graph::Easy::Parser::VCG'; } print $OUT "Creating $parser_class object.\n" if $verbose; my $parser = $parser_class->new( debug => $opt->{debug} ); ############################################################################# # parse the input file print $OUT "Parsing input in $opt->{from} from $opt->{inputname}.\n" if $verbose; my $graph = $parser->from_file($opt->{input}); my $error = ''; $error = $parser->error() if !$graph || $parser->error(); $error = $graph->error() if $graph && $graph->error(); die ($error) if $error; ############################################################################# # If wanted, generate the statistics: if ($opt->{stats}) { print STDERR "\nInput is a ", $graph->is_simple() ? 'simple' : 'multi-edged', ", ", $graph->is_undirected() ? 'undirected' : 'directed', " graph with:\n"; my $nodes = $graph->nodes(); my $edges = $graph->edges(); my $groups = $graph->groups(); print STDERR " $nodes node" . ($nodes != 1 ? 's' : '') . ", $edges edge" . ($edges != 1 ? 's' : '') . " and $groups group" . ($groups != 1 ? 's' : '') . "\n\n"; for my $g ($graph->groups()) { my $nodes = $g->nodes(); my $edges = $g->edges(); my $groups = $g->groups(); print STDERR " Group '$g->{name}':\n"; print STDERR " $nodes node" . ($nodes != 1 ? 's' : '') . ", $edges edge" . ($edges != 1 ? 's' : '') . " and $groups group" . ($groups != 1 ? 's' : '') . "\n\n"; } } ############################################################################# # Generate the wanted output format and write it to the output: if (! $opt->{parse}) { my $method = 'as_' . $opt->{as} . '_file'; if ($verbose) { if ($opt->{outputname} =~ /\.$external\z/) { print $OUT "Piping output to '$opt->{renderer} -T$opt->{ext} -o \"$opt->{outputname}\"'.\n"; } else { print $OUT "Writing output as $opt->{as} to $opt->{outputname}.\n"; } } $graph->timeout(abs($opt->{timeout} || 240)); my $FILE = $opt->{output}; print $FILE $graph->$method(); print $OUT "Everything done. Have fun!\n\n" if $verbose; } ############################################################################# # Everything done ############################################################################# ############################################################################# sub get_options { # set the defaults my $opt = { input => undef, output => undef, as => '', from => 'txt', help => '', as_ascii => '', as_boxart => '', as_html => '', as_svg => '', as_graphviz => '', as_txt => '', as_vcg => '', as_gdl => '', as_graphml => '', debug => 0, from_txt => '', from_vcg => '', from_gdl => '', from_graphviz => '', verbose => 0, version => 0, parse => 0, stats => 0, timeout => 240, renderer => 'dot', }; # insert the ones from @external for my $e (@external) { $opt->{$e} = ''; } # map the output format to the method to generate the output: my $formats = { html => 'html', txt => 'ascii', svg => 'svg', dot => 'graphviz', vcg => 'vcg', gdl => 'gdl', graphml => 'graphml', }; # insert the ones from @external for my $e (@external) { $formats->{$e} = 'graphviz'; } # do we have some options? if (@ARGV > 0) { require Getopt::Long; my @o = ( "input=s" => \$opt->{input}, "output=s" => \$opt->{output}, "as=s" => \$opt->{as}, "from=s" => \$opt->{from}, "help|?" => \$opt->{help}, "version" => \$opt->{version}, "verbose" => \$opt->{verbose}, "debug=i" => \$opt->{debug}, "parse" => \$opt->{parse}, "as_ascii|ascii" => \$opt->{as_ascii}, "as_html|html" => \$opt->{as_html}, "as_svg|svg" => \$opt->{as_svg}, "as_txt|txt" => \$opt->{as_txt}, "as_vcg|vcg" => \$opt->{as_vcg}, "as_gdl|gdl" => \$opt->{as_gdl}, "as_graphml|graphml" => \$opt->{as_graphml}, "as_graphviz|graphviz|as_dot|dot" => \$opt->{as_graphviz}, "as_boxart|boxart" => \$opt->{as_boxart}, "timeout=i" => \$opt->{timeout}, "renderer=s" => \$opt->{renderer}, "stats" => \$opt->{stats}, "from_txt" => \$opt->{from_txt}, "from_vcg" => \$opt->{from_vcg}, "from_gdl" => \$opt->{from_gdl}, "from_graphviz" => \$opt->{from_graphviz}, ); # insert the ones from @external for my $e (@external) { push @o, "as_$e|$e" => \$opt->{"as_$e"}; } return unless Getopt::Long::GetOptions (@o); } # allow "as=dot" for easier usage: $opt->{as} = 'graphviz' if $opt->{as} eq 'dot'; # make the renderer argument sane to avoid --renderer=';rm -fR *': $opt->{renderer} =~ s/[^a-zA-Z0-9_\\\/\:\.-]//g; # if there are arguments left, they are input and possible output $opt->{input} = shift @ARGV if @ARGV; $opt->{output} = shift @ARGV if @ARGV; if (!defined $opt->{input}) { $opt->{input} = \*STDIN; $opt->{inputname} = 'STDIN'; } else { $opt->{inputname} = $opt->{input}; } # This code gets confused if the user specified multiple options. Not much # can be done about that except whack the user with something heavy: for my $format (qw/ascii boxart html svg txt graphviz vcg gdl graphml/, @external ) { warn ("Warning: Output format '$format' overrides specified '$opt->{as}'") if $opt->{"as_$format"} && $opt->{as}; $opt->{as} = $format if $opt->{"as_$format"}; delete $opt->{"as_$format"}; } if ($opt->{as} =~ $qr_ext) { $opt->{output} = $opt->{input} unless defined $opt->{output}; # set some default output name, so the replace works correctly $opt->{output} = 'graph.txt' if ref($opt->{input}); # two-step process to fix bug #37534 - overwrites input with no extension # example.txt => example $opt->{output} =~ s/\.(txt|dot|vcg|gdl|graphml|$external)\z//; # example => example.png $opt->{output} .= ".$opt->{as}"; } if (!defined $opt->{output}) { $opt->{outputname} = 'STDOUT'; $opt->{output} = \*STDOUT; # default to ASCII if nothing is known $opt->{as} = 'ascii' if $opt->{as} eq ''; } else { my $file = $opt->{output}; $opt->{outputname} = $opt->{output}; if ($opt->{as} eq '') { $opt->{as} = 'ascii'; # default $opt->{as} = $formats->{$1} if $file =~ /\.(html|svg|txt|dot|vcg|gdl|graphml|$external)\z/; } $opt->{output} = undef; if ($opt->{as} !~ $qr_ext) { # do not clobber the output file if we cannot read the input return unless ref $opt->{input} || -R $opt->{input}; open $opt->{output}, ">", $file or die ("Cannot write to $file: $!"); } else { # open a pipe to dot/neato etc. my $file_save = $file; $file_save =~ s/["'\|;]//g; # remove potentially unsafe characters open $opt->{output}, "|$opt->{renderer} -T$opt->{as} -o \"$file_save\"" or die ("Cannot open pipe to dot: $!"); binmode $opt->{output}, ':utf8'; } } if ($opt->{as} !~ $qr_ext) { binmode ($opt->{output}, ':utf8') or die ("Cannot do binmode(output,':utf8')"); } else { $opt->{ext} = $opt->{as}; $opt->{as} = 'graphviz'; } # convert "from_vcg" to "from=vcg" for my $format (qw/txt graphviz dot vcg gdl/) { $opt->{from} = $format if $opt->{"from_$format"}; delete $opt->{"from_$format"}; } $opt->{from} = 'graphviz' if $opt->{from} eq 'dot'; die ("Unknown input format '$opt->{from}'") unless $opt->{from} =~ /^(vcg|gdl|graphviz|txt)\z/; $opt; } __END__ =pod =head1 NAME graph-easy - render/convert graphs in/from various formats =head1 SYNOPSIS Convert between graph formats and layout/render graphs: graph-easy [options] [inputfile [outputfile]] echo "[ Bonn ] - car -> [ Berlin ]" | graph-easy graph-easy --input=graph.dot --as_ascii graph-easy --html --output=mygraph.html graph.txt graph-easy graph.txt graph.svg graph-easy graph.txt --as_dot | dot -Tpng -o graph.png graph-easy graph.txt --png graph-easy graph.vcg --dot graph-easy graph.dot --gdl graph-easy graph.dot --graphml =head1 ARGUMENTS Here are the most important options, more are listed in the full documentation: =over 10 =item --help Print the full documentation, not just this short overview. =item --input Specify the input file name. Example: graph-easy --input=input.txt The format will be auto-detected, override it with L<--from>. =item --output Specify the output file name. Example: graph-easy --output=output.txt input.txt =item --as Specify the output format. Example: graph-easy --as=ascii input.txt Valid formats are: ascii ASCII art rendering boxart Unicode Boxart rendering html HTML svg Scalable Vector Graphics graphviz the DOT language dot alias for "graphviz" txt Graph::Easy text vcg VCG (Visualizing Compiler Graphs - a subset of GDL) text gdl GDL (Graph Description Language) text graphml GraphML In addition, the following formats are understood and piped through the program specified with the --renderer option (default: dot): bmp Windows bitmap gif GIF hpgl HP-GL/2 vector graphic jpg JPEG pcl PCL printer language pdf PDF png PNG ps Postscript ps2 Postscript with PDF notations (see graphviz documentation) tga Targa bitmap tif TIFF bitmap The default format will be determined by the output filename extension, and is C<ascii>, if the output filename was not set. You can also use B<ONE> argument of the form C<--as_ascii> or C<--ascii>. =item --from Specify the input format. Valid formats are: graphviz the DOT language txt Graph::Easy text vcg VCG text gdl GDL (Graph Description Language) text If not specified, the input format is auto-detected. You can also use B<ONE> argument of the form C<--from_dot>, etc. =item --renderer The external program (default: "dot") used to render the output formats like C<png>, C<jpg> etc. Some choices are "neato", "twopi", "fdp" or "circo". =item --parse Input will only be parsed, without any output generation. Useful in combination with C<--debug=1> or C<--stats>. Example: graph-easy input.txt --parse --debug=1 =item --stats Write various statistics about the input graph to STDERR. Best used in combination with C<--parse>: graph-easy input.txt --parse --stats =item --timeout Set the timeout B<in seconds> for the Graph::Easy layouter that generates ASCII, HTML, SVG or boxart output. If the layout does not finish in this time, it will be aborted. Example: graph-easy input.txt --timeout=500 Conversion to DOT, VCG/GDL, GraphML or plain text ignores the timeout. The default is 240 seconds (4 minutes). =item --verbose Write info regarding the conversion process to STDERR. =back =head1 DESCRIPTION C<graph-easy> reads a description of a graph (a connected network of nodes and edges, not a pie chart :-) and then converts this to the desired output format. By default, the input will be read from STDIN, and the output will go to STDOUT. The input is expected to be encoded in UTF-8, the output will also be UTF-8. It understands the following formats as input: Graph::Easy http://bloodgate.com/perl/graph/manual/ DOT http://www.graphviz.org/ VCG http://rw4.cs.uni-sb.de/~sander/html/gsvcg1.html GDL http://www.aisee.com/ The formats are automatically detected, regardless of the input file name, but you can also explicitly declare your input to be in one specific format. The output can be a dump of the graph in one of the following formats: Graph::Easy http://bloodgate.com/perl/graph/manual/ DOT http://www.graphviz.org/ VCG http://rw4.cs.uni-sb.de/~sander/html/gsvcg1.html GDL http://www.aisee.com/ GraphML http://graphml.graphdrawing.org/ In addition, C<Graph::Easy> can also create layouts of graphs in one of the following output formats: HTML SVG ASCII BOXART Note that for SVG output, you need to install the module L<Graph::Easy::As_svg> first. As a shortcut, you can also specify the output format as 'png', this will cause C<graph-easy> to pipe the input in graphviz format to the C<dot> program to create a PNG file in one step. The following two examples are equivalent: graph-easy graph.txt --dot | dot -Tpng -o graph.png graph-easy graph.txt --png X<svg> X<html> X<ascii> X<boxart> X<png> X<dot> X<graphviz> X<vcg> X<gdl> X<graph description language> X<unicode> =head1 OTHER ARGUMENTS C<graph-easy> supports a few more arguments in addition to the ones from above: =over 10 =item --version Write version info and exit. =item --debug=N Set the debug level (1..3). Warning, this will generate huge amounts of hard to understand output on STDERR. Example: graph-easy input.txt --output=test.html --debug=1 =item --png, --dot, --vcg, --gdl, --txt, --ascii, --boxart, --html, --svg Given exactly one of these options, produces the desired output format. =back =head1 EXAMPLES =head2 ASCII output echo "[ Bonn ] -- car --> [ Berlin ], [ Ulm ]" | graph-easy +--------+ car +-----+ | Bonn | -----> | Ulm | +--------+ +-----+ | | car v +--------+ | Berlin | +--------+ =head2 Graphviz example output echo "[ Bonn ] -- car --> [ Berlin ], [ Ulm ]" | graph-easy --dot digraph GRAPH_0 { edge [ arrowhead=open ]; graph [ rankdir=LR ]; node [ fontsize=11, fillcolor=white, style=filled, shape=box ]; Bonn -> Ulm [ label=car ] Bonn -> Berlin [ label=car ] } =head2 VCG example output echo "[ Bonn ] -- car --> [ Berlin ], [ Ulm ]" | graph-easy --vcg graph: { title: "Untitled graph" node: { title: "Berlin" } node: { title: "Bonn" } node: { title: "Ulm" } edge: { label: "car" sourcename: "Bonn" targetname: "Ulm" } edge: { label: "car" sourcename: "Bonn" targetname: "Berlin" } } =head2 GDL example output GDL (Graph Description Language) is a superset of VCG, and thus the output will look almost the same as VCG: echo "[ Bonn ] -- car --> [ Berlin ], [ Ulm ]" | graph-easy --gdl graph: { title: "Untitled graph" node: { title: "Berlin" } node: { title: "Bonn" } node: { title: "Ulm" } edge: { label: "car" source: "Bonn" target: "Ulm" } edge: { label: "car" source: "Bonn" target: "Berlin" } } =head2 GraphML example output GraphML is XML: echo "[ Bonn ] -- car --> [ Berlin ], [ Ulm ]" | graph-easy --graphml <?xml version="1.0" encoding="UTF-8"?> <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"> <!-- Created by Graph::Easy v0.58 at Mon Aug 20 00:01:25 2007 --> <key id="d0" for="edge" attr.name="label" attr.type="string"/> <graph id="G" edgedefault="directed"> <node id="Berlin"> </node> <node id="Bonn"> </node> <node id="Ulm"> </node> <edge source="Bonn" target="Berlin"> <data key="d0">car</data> </edge> <edge source="Bonn" target="Ulm"> <data key="d0">car</data> </edge> </graph> <graphml> =head1 CAVEATS Please note that it is impossible to convert 100% from one format to another format since every graph language out there has features that are unique to only this language. In addition, the conversion process always converts the input first into an L<Graph::Easy> graph, and then to the desired output format. This means that only features and attributes that are actually valid in Graph::Easy are supported yet. Work in making Graph::Easy an universal format supporting as much as possible is still in progress. Attributes that are not yet supported natively by Graph::Easy are converted to custom attributes with a prefixed C<x-format->, f.i. C<x-dot->. Upon output to the same format, these are converted back, but conversion to a different format will lose these attributes. For a list of what problems still remain, please see the TODO file in the C<Graph::Easy> distribution on CPAN: L<http://search.cpan.org/~tels/Graph-Easy/> If you notice anything wrong, or miss attributes, please file a bug report on L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Graph-Easy> so we can fix it and include the missing things into Graph::Easy! X<bugreport> =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the terms of the GPL. See the LICENSE file of Graph::Easy for a copy of the GPL. This product includes color specifications and designs developed by Cynthia Brewer (L<http://colorbrewer.org/>). See the LICENSE file for the full license text that applies to these color schemes. X<gpl> X<apache-style> X<cynthia> X<brewer> X<colorscheme> X<license> =head1 AUTHOR Copyright (C) 2004 - 2008 by Tels L<http://bloodgate.com> =head1 SEE ALSO More information can be found in the online manual of Graph::Easy: L<http://bloodgate.com/perl/graph/manual/> See also: L<Graph::Easy>, L<Graph::Easy::Manual> =cut ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/scripts�����������������������������������������������������������������������������000755��000764��000764�� 0�12322253245� 15371� 5����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������Graph-Easy-0.75/scripts/bump-version-number.pl������������������������������������������������������000444��000764��000764�� 1210�12322253245� 21771� 0����������������������������������������������������������������������������������������������������ustar�00shlomif�������������������������shlomif�������������������������000000��000000�������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl use strict; use warnings; use File::Find::Object; use IO::All; my $tree = File::Find::Object->new({}, 'lib/'); my $version_n = shift(@ARGV); if (!defined($version_n)) { die "Specify version number as an argument! bump-version-number.pl '0.0.1'"; } while (my $r = $tree->next()) { if ($r =~ m{/\.svn\z}) { $tree->prune(); } elsif ($r =~ m{\.pm\z}) { my @lines = io->file($r)->getlines(); foreach (@lines) { s#(\$VERSION = '|^Version )\d+\.\d+(?:\.\d+)?('|)#$1 . $version_n . $2#e; } io->file($r)->print( @lines ); } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������