Graph-Easy

 view release on metacpan or  search on metacpan

CHANGES  view on Meta::CPAN

    + 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 <BR/> 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)

CHANGES  view on Meta::CPAN

  * 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 <tr></tr> 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 <caption>, 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 "</pre>"
  * 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 <title> 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



( run in 1.759 second using v1.01-cache-2.11-cpan-39bf76dae61 )