Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
19 / 19 |
Graphviz | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
6 | |
100.00% |
19 / 19 |
createGraphVizDot() | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
export() | |
100.00% |
1 / 1 |
5 | |
100.00% |
18 / 18 |
<?php | |
/* | |
* Mondrian | |
*/ | |
namespace Trismegiste\Mondrian\Transform\Format; | |
use Alom\Graphviz\Digraph; | |
use Trismegiste\Mondrian\Graph\Vertex; | |
/** | |
* Graphviz is a decorator for GraphViz output | |
* | |
*/ | |
class Graphviz extends GraphExporter | |
{ | |
protected function createGraphVizDot() | |
{ | |
return new Digraph('PhpGraph'); | |
} | |
public function export() | |
{ | |
$default = array('fixedsize' => true, 'width' => 2, 'height' => 2); | |
$dot = $this->createGraphVizDot(); | |
$inverseIndex = new \SplObjectStorage(); | |
// add vertices | |
foreach ($this->graph->getVertexSet() as $idx => $vertex) { | |
$inverseIndex[$vertex] = $idx; | |
$dot->node($idx, array_merge($default, $vertex->getAttribute())); | |
} | |
// add edges | |
foreach ($this->graph->getEdgeSet() as $edge) { | |
$dot->edge(array($inverseIndex[$edge->getSource()], $inverseIndex[$edge->getTarget()])); | |
} | |
// add cluster | |
foreach ($this->getPartition() as $idx => $subgraph) { | |
$scc = $dot->subgraph("cluster_$idx"); | |
$scc->attr('graph', array('bgcolor' => 'antiquewhite')); | |
foreach ($subgraph as $vertex) { | |
$scc->node($inverseIndex[$vertex]); | |
} | |
} | |
return $dot->render(); | |
} | |
} |