Skip to content

Commit

Permalink
Merge branch 'add-pos-call'
Browse files Browse the repository at this point in the history
  • Loading branch information
paetzke committed Feb 17, 2014
2 parents fd97bd4 + 5eb8759 commit cc42af1
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 5 deletions.
6 changes: 3 additions & 3 deletions dotter/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
"""
dotter
Copyright (c) 2013, Friedrich Paetzke (f.paetzke@gmail.com)
Copyright (c) 2013-2014, Friedrich Paetzke (f.paetzke@gmail.com)
All rights reserved.
"""
from .dotter import Dotter, RankType, Shape
from .dotter import Dotter, Program, RankType, Shape

__version__ = '0.2.0'
__author__ = 'Friedrich Paetzke'
__license__ = 'BSD'
__copyright__ = 'Copyright 2013 Friedrich Paetzke'
__copyright__ = 'Copyright 2013-2014 Friedrich Paetzke'
23 changes: 22 additions & 1 deletion dotter/dotter.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,20 @@
from subprocess import PIPE, Popen


class Program:

"""
These values can be used as valid render engine
"""
Circo = 'circo'
Dot = 'dot'
Fdp = 'fdp'
Neato = 'neato'
Sfdp = 'sfdp'
Twopi = 'twopi'


class RankType:

"""
Expand Down Expand Up @@ -92,7 +106,8 @@ class Shape:
class Dotter:

def __init__(self, directed=True, output_to_file=True,
output_filename=None, output_type=None, program='dot', strict=False):
output_filename=None, output_type=None, program=Program.Dot,
strict=False):
self.directed = directed

self.args = [program]
Expand Down Expand Up @@ -177,6 +192,12 @@ def node_attributes(self, node, font=None, fontsize=None, shape=None, url=None):
def set_label(self, node, label):
self.execute('{0} [label="{1}"]'.format(Dotter.escape(node), label))

def set_position(self, node, x, y):
if not self.args[0] in [Program.Fdp, Program.Neato]:
raise Warning()

self.execute('{} [pos="{},{}!"]'.format(Dotter.escape(node), x, y))

def nodes_attributes(self, font=None, shape=None):
if font:
self.execute('node [fontname="{}"]'.format(font))
Expand Down
18 changes: 17 additions & 1 deletion tests/test_dotter.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"""
import os

from dotter import Dotter, RankType, Shape
from dotter import Dotter, Program, RankType, Shape
from pytest import raises


def load_data(filename):
Expand Down Expand Up @@ -47,6 +48,21 @@ def test_addnode_label():
assert expected == dotter.commands


def test_set_position():
dotter = Dotter(program=Program.Neato)
dotter.add_node('a')
dotter.set_position('a', 5, 4)
expected = ['digraph', ' {', 'gb', 'gb [label="a"]', 'gb [pos="5,4!"]']
assert expected == dotter.commands


def test_set_position_wrong_program():
dotter = Dotter()
dotter.add_node('a')
with raises(Warning):
dotter.set_position('a', 5, 4)


def test_rank():
dotter = Dotter()
for node in ['a', 'b', 'c', 'd']:
Expand Down

0 comments on commit cc42af1

Please sign in to comment.