Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

VnaExporter for Pharo Build Status

Short description about VNA format can be found on Gephi website.


VnaExporter is available in Pharo 3 configuration browser.

You can also load it executing is a workspace:

Gofer it
  smalltalkhubUser: 'Pharo'
  project: 'MetaRepoForPharo30';
  configurationOf: 'VnaExporter';

How to use


First create a new instance of exporter: exporter := VnaExporter new.

To add nodes use:

exporter addNode: anObject.
exporter addNodes: aCollection.
exporter model: aCollection "overrides whole nodes set"

To add edges use:

exporter addEdge: aPair.
exporter addEdges: aCollectionOfPairs.
exporter edges: aCollectionOfPairs "overrides whole edges set"

There are also shortcuts for edges:

exporter connectAll "intializes all possible edges".
exporter connectAllNoLoops "intializes all possible edges except loops".
exporter connectAllUndirected "for any 2 nodes only one edge is initialised between them".
exporter connectAllUndirectedNoLoops "Same as previous but without loops"

###Data and properties

To define different properties we use blocks. They will be evaluated for each node to obtain required data.

Remember to initialise the idBlock, the default value is #yourself. Remember that specification says that ID has to be unique.

exporter idBlock: aBlock "block accepts 1 value"

To set a node data values use:

exporter nodeData: #dataName computeAs: aBlock

you can also remove them with:

exporter removeNodeData: #dataName

Each node property has the dedicated getter and setter. If there is no block set (i.e. value is set to nil) that property won't be exported (blocks accepts 1 value).

exporter xBlock: aBlock.
exporter yBlock: aBlock.
exporter sizeBlock: aBlock.

Edges data has a similar API as node data, but block have to accept 2 values.

exporter tieData: #dataName computeAs: aBlock.
exporter removeTieData: #dataName

To generate VNA from the exporter either print it on a stream or generate a string:

exporter printOn: aStream.
exporter printString