Graph-Easy

 view release on metacpan or  search on metacpan

CHANGES  view on Meta::CPAN

    + 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 "<br \>" instead of "\n <br \>", 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
      separately. 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



( run in 2.464 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )