Again, small utility docSor
algaba at my-deja.com
algaba at my-deja.com
Sat Jul 10 06:04:24 EDT 1999
Sorry if you get this twice !!
I've done this:
"""
1998 Manuel Gutierrez Algaba
You are free to use , modify, distribute and copy this piece of
python code, if you keep this free copyright notice in it.
arbor.py Version 1.0
It makes trees of anything you want to. Class depencencies, calls...
For more related doc py programs look at:
http:\\www.ctv.es\USERS\irmina\texpython.htm
or email me:
irmina at ctv.es
Something like this :
|||->a
||| |||->1
||| ||| |->e
||| ||-->2
||| |--->4
||-->b
|--->c
just describing it as:
a.add(['a','b','c'],'letras', 'letras del abecedario')
a.add([1,2,4], 'a' )
a.add(['e'],1)
a.dibuja('letras')
It's so extremely easy and small ( the python code )
that it doesn't deserve a translation...
TODO:
- Read from a properties file.
"""
import sys
class atree:
def __init__(self, cabecera, hojas, diccionario, inf):
self.cabecera = cabecera
self.inf = inf
self.hojas = hojas
self.diccionario = diccionario
self.anyadido = ""
self.anyadido_hijo = ""
def dibuja(self, anyadido=""):
self.anyadido = anyadido
if not self.inf is None:
self.imprimeln( self.cabecera + "("+ self.inf +")")
else:
self.imprimeln( self.cabecera)
k = 0
cuantas = len(self.hojas)
for i in self.hojas:
self.dibuja_hoja(i, k, cuantas)
k = k + 1
def dibuja_hoja(self , hoja, pos, cuantas):
self.anyadido_hijo = ""
self.imprime( self.anyadido )
composicion_vert = self.compone_vert(cuantas, pos)
self.imprime( composicion_vert )
composicion_vert = self.escribe_flecha(composicion_vert)
if hoja in self.diccionario.keys():
self.diccionario[hoja].dibuja(self.anyadido +
self.anyadido_hijo)
else:
self.imprimeln( hoja)
def compone_vert(self, cuantas, pos):
a = ""
for i in xrange(0, cuantas):
if (i < cuantas - pos) :
b = "|"
c = "|"
else:
b = " "
c = "-"
a = a + c
self.anyadido_hijo = self.anyadido_hijo + b
return a
def escribe_flecha(self, anyadido):
self.imprime( "->")
self.anyadido_hijo = self.anyadido_hijo + " "
return anyadido + " "
def imprime(self, s):
sys.stdout.write(str(s))
def imprimeln(self, s):
sys.stdout.write(str(s)+"\n")
class rep:
def __init__(self):
self.diccionario = {}
#self.anyade()
def add(self, lista_hojas, cabecera, comentario = None ):
self.diccionario[cabecera] = atree(cabecera,
lista_hojas,
self.diccionario,
comentario)
def dibuja(self, l):
self.diccionario[l].dibuja()
if __name__=='__main__':
a = rep()
a.add(['a','b','c'],'letras', 'letras del abecedario')
a.add([1,2,4], 'a' )
a.add(['e'],1)
a.dibuja('letras')
Sorry again, if you get this twice.
Sent via Deja.com http://www.deja.com/
Share what you know. Learn what you don't.
More information about the Python-list
mailing list