gzz-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gzz-commits] gzz/metacode uml.py umltool.py


From: Asko Soukka
Subject: [Gzz-commits] gzz/metacode uml.py umltool.py
Date: Sun, 15 Dec 2002 20:08:49 -0500

CVSROOT:        /cvsroot/gzz
Module name:    gzz
Changes by:     Asko Soukka <address@hidden>    02/12/15 20:08:49

Modified files:
        metacode       : uml.py 
Added files:
        metacode       : umltool.py 

Log message:
        split uml.py

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/metacode/umltool.py?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/gzz/gzz/metacode/uml.py.diff?tr1=1.19&tr2=1.20&r1=text&r2=text

Patches:
Index: gzz/metacode/uml.py
diff -u gzz/metacode/uml.py:1.19 gzz/metacode/uml.py:1.20
--- gzz/metacode/uml.py:1.19    Thu Aug 29 07:43:35 2002
+++ gzz/metacode/uml.py Sun Dec 15 20:08:49 2002
@@ -15,742 +15,8 @@
 # file for more details.
 # 
 
-from __future__ import nested_scopes
-import re
-import os
 import sys
-import random
-import string
-
-jlinkpackage = None
-
-def matchRemove(p, s):
-    "Match pattern p in s and remove the match, return (match, ns)"
-    m = re.match(p,s)
-    if m: s = re.sub(p, "", s)
-    return (m, s)
-
-def resolveTabs(s):
-    return re.sub("\t", "        ", s);
-
-def initSpaces(s):
-    n = len(re.match("^\s*", s).group())
-    return (n, s.strip())
-
-def randomVar():
-    l = len(string.letters)
-    return "".join([
-       string.letters[random.randint(0, l-1)] 
-           for k in range(20)])
-
-def parseIndented(s):
-    stack = [(-1, [])]
-    for r in s.split("\n") :
-       if re.match("^\s*$", r): continue
-       r = resolveTabs(r) 
-       (n,x) = initSpaces(r)
-       while n < stack[-1][0]:
-           stack.pop()
-       if n > stack[-1][0]:
-           new = (n, [x])
-           stack[-1][1].append(new[1])
-           stack.append(new)
-       else: # x == stack[-1][0]:
-           new = (n, [x])
-           stack[-2][1].append(new[1])
-           stack.pop()
-           stack.append(new)
-    return stack[0][1]
-
-class namedEl:
-    def docontents(self, l):
-       global curList
-       self.jlink = None
-       for el in l:
-           self.handleContained(el)
-       print self.jlink
-    def handleContained(self, el):
-       if el[0] == "jlink":
-           jlink = el[1:]
-           if len(jlink):
-               self.jlink = jlink[0][0]
-           else:
-               self.jlink = self.defaultjlink()
-       else:
-           curList.addContainedElement(self.name, el)
-    def defaultjlink(self):
-       return self.name
-    def jlinkstr(self, box):
-       if self.jlink != None:
-           return 'showjlink("'+self.jlink+'", ('+box+'));'
-       return ""
-    def repl(self, s):
-       s = s.replace("%%", self.var)
-       s = s.replace("%name%", self.name)
-       if "stereo" in dir(self):
-           s = s.replace("%stereo%", self.stereo or "")
-       return s
-    def drawCode(self):
-       s = """
-           drawmeasuredpic(%%);
-           """
-       return self.repl(s)
-
-class mpsequence:
-    def getVarForY(self, before, after):
-       """Get a variable name for a Y coordinate.
-       Padding before and after.
-       """
-       v1 = randomVar()
-       v2 = randomVar()
-       yvar = self.yvar
-       self.ycode += """
-           numeric %(v1)s, %(v2)s;
-           %(v2)s = %(yvar)s - %(before)s - %(after)s;
-           %(v1)s = %(yvar)s - %(before)s;
-       """ % locals()
-       self.yvar = v2
-       return v1;
-    class call:
-       def __init__(self, parent, sourcex, toks, l):
-           self.var = randomVar()
-           self.parent = parent
-           self.targetx = "(xpart(%s.c))" % (toks[1])
-           self.targetname = toks[1]
-           if toks[1] not in parent.seqobjs:
-               parent.seqobjs.append(toks[1])
-           if sourcex == None:
-               # self.sourcex = "(" + self.targetx + " - 100)"
-               self.sourcex = "-50"
-           else:
-               self.sourcex = sourcex
-           if len(toks) > 2:
-               self.text = " ".join(toks[2:])
-           else:
-               self.text = "\"\""
-           self.list = parent.parseContents(self.targetx, l)
-       def setupCode(self):
-           return " ".join([e.setupCode() for e in self.list])
-       def measure(self):
-           self.yu = self.parent.getVarForY(5,5)
-           for e in self.list:
-               e.measure()
-           self.yl = self.parent.getVarForY(0, 15)
-       def drawCode_measure(self):
-           s = """
-               sequencecallmeasure(%(sourcex)s, %(targetx)s, %(yu)s, %(yl)s, 
%(text)s);
-           """ % self.__dict__;
-           return s + " ".join([e.drawCode_measure() for e in self.list])
-       def drawCode_draw(self):
-           s = """
-               sequencecall(%(sourcex)s, %(targetx)s, %(yu)s, %(yl)s, 
%(text)s);
-           """ % self.__dict__;
-           return s + " ".join([e.drawCode_draw() for e in self.list])
-
-    class delete(call):
-       def drawCode_measure(self):
-           s = mpsequence.call.drawCode_measure(self)
-           self.parent.seqobjsdeletes[self.targetname] = self.yl;
-           return s
-
-       def drawCode_draw(self):
-           s = mpsequence.call.drawCode_draw(self)
-           return (s + 
-            " sequencedestroy( %(targetx)s, %(yl)s ); " 
-                   % self.__dict__)
-    class create(call):
-       def measure(self):
-           self.yu = self.parent.getVarForY(10,10)
-           for e in self.list:
-               e.measure()
-           self.yl = self.parent.getVarForY(20, 20)
-       def drawCode_measure(self):
-           s = """
-               sequencecreatemeasure(%(sourcex)s, %(targetname)s, %(yu)s, 
%(yl)s, %(text)s);
-           """ % self.__dict__;
-           return s + " ".join([e.drawCode_measure() for e in self.list])
-
-       def drawCode_draw(self):
-           s = """
-               sequencecreate(%(sourcex)s, %(targetname)s, %(yu)s, %(yl)s, 
%(text)s);
-           """ % self.__dict__;
-           return s + " ".join([e.drawCode_draw() for e in self.list])
-
-       
-
-    def __init__(self, var, s, l):
-       self.seqobjs = []
-       self.seqobjsdeletes = {}
-       toks = s.split(" ");
-       s = toks[0]
-       self.var = var or s
-       self.name = s
-       self.list = self.parseContents(None, l)
-       self.ycode = ""
-       
-    def parseContents(self, sourceName, list):
-       l = []
-       for el in list:
-           toks = el[0].split(" ")
-           s = toks[0]
-           if s == "call":
-               l.append(self.call(self,  sourceName, toks, el[1:]))
-           elif s == "delete":
-               l.append(self.delete(self,  sourceName, toks, el[1:]))
-           elif s == "create":
-               l.append(self.create(self,  sourceName, toks, el[1:]))
-           elif s == "return":
-               pass
-           else:
-               assert 0, "Must have call or return, not '"+s+"'"
-       return l
-    def setupCode(self):
-       return self.repl(
-           " ".join([e.setupCode() for e in self.list])
-           )
-    def lifeend(self, obj):
-       return self.seqobjsdeletes.get(obj, self.yvar)
-    def drawCode(self):
-       self.yvar = randomVar()
-       self.ycode = "numeric %(yvar)s; %(yvar)s = -50;" % self.__dict__;
-       for e in self.list:
-           e.measure()
-       m = self.ycode
-       m += " ".join([e.drawCode_measure() for e in self.list])
-       m += " ".join([
-           "sequencedrawlifeline(%s, %s);" % (so, self.lifeend(so))
-               for so in self.seqobjs
-       ])
-       m += " ".join([e.drawCode_draw() for e in self.list])
-       return self.repl(m)
-    def repl(self, s):
-       s = s.replace("%%", self.var)
-       return s
-
-
-class mpclass(namedEl):
-    def __init__(self, var, s, l):
-       print "mpclass:",s,l
-       toks = s.split(" ");
-       s = toks[0]
-       self.stereo = None
-       for tok in toks[1:]:
-           mat = re.match('"(.*)"', tok)
-           if mat:
-               self.stereo = mat.group(1)
-       self.var = var or s
-       self.name = s
-       self.methods = self.fields = []
-       self.docontents(l)
-    def handleContained(self, el):
-       if el[0] == "methods":
-           self.methods = el[1:]
-       elif el[0] == "fields":
-           self.fields = el[1:]
-       else:
-           namedEl.handleContained(self, el)
-    def defaultjlink(self):
-       if jlinkpackage != None and "." not in self.name:
-           return jlinkpackage + "." + self.name
-       return self.name
-    def setupCode(self):
-       s = """
-           picture %%.cls, %%.pict, %%.meth, %%.sep, %%.fiel, %%.stereo;
-           numeric %%.maxwid;
-           %%.cls = classTitle("%name%");
-           %%.meth = stackStrings(defaultfont, 1, METHODS);
-           %%.fiel = stackStrings(defaultfont, 1, FIELDS);
-           STEREO
-
-           maxwid(%%.maxwid, %%.stereo);
-           maxwid(%%.maxwid, %%.cls);
-           maxwid(%%.maxwid, %%.meth);
-           maxwid(%%.maxwid, %%.fiel);
-
-           maxwidctr(%%.maxwid, %%.stereo);
-           maxwidctr(%%.maxwid, %%.cls);
-
-           %%.sep = nullpicture;
-           addto %%.sep doublepath (0,0)--(%%.maxwid,0) withpen currentpen;
-           %%.pict = stackpics(%%.stereo, %%.cls, %%.sep, %%.meth, %%.sep, 
%%.fiel);
-
-           picmeasurements(%%);
-           """
-       s = s.replace("METHODS", ", ".join(
-           [ '"'+m[0]+'"' for m in self.methods ] ))
-       s = s.replace("FIELDS", ", ".join(
-           [ '"'+m[0]+'"' for m in self.fields ] ))
-       if self.stereo:
-           s = s.replace("STEREO", 
-               "%%.stereo = stereotype(\"%stereo%\");")
-       else:
-           s = s.replace("STEREO", 
-               "%%.stereo = nullpicture;")
-       return self.repl(s)
-    def drawCode(self):
-       s = self.jlinkstr("bboxmeasuredpic(%%)") + """
-           drawmeasuredpic(%%);
-           draw bboxmeasuredpic(%%);
-           """ 
-       return self.repl(s)
-
-class mppackage(namedEl):
-    def __init__(self, var, s, l):
-       print "mppackage:",s,l
-       self.var = var or s
-       self.name = s
-       self.docontents(l)
-    def setupCode(self):
-       s = """
-           picture %%.pict;
-           %%.pict = classTitle("%name%");
-           picmeasurements(%%);
-           """
-       return self.repl(s)
-    def drawCode(self):
-       s =  self.jlinkstr("bboxmeasuredpic(%%)") + """
-           drawmeasuredpic(%%);
-           draw bboxmeasuredpic(%%);
-           draw (((0,0)--(15,0)--(15,5)--(0,5)--cycle) shifted %%.nw);
-           """ 
-       return self.repl(s)
-
-
-class simpleEl(namedEl):
-    def __init__(self, var, s, l):
-       print "mp simple element:",self, s,l
-       self.var = var or s
-       self.name = s
-       self.docontents(l)
-
-# XXX underlining
-class mpseqobject(simpleEl):
-    def setupCode(self):
-       s = """
-           picture %%.titl, %%.pict;
-           picture %%.ghost.pict;
-           %%.titl = classTitle("%name%");
-           %%.pict = %%.titl;
-           addto %%.pict doublepath bbox %%.titl;
-           %%.ghost.pict = %%.titl;
-           picmeasurements(%%);
-           picmeasurements(%%.ghost);
-           xpart(%%.c) = xpart(%%.ghost.c);
-           """
-       return self.repl(s)
-    def drawCode(self):
-       s = """
-           if not known(ypart(%%.c)):
-               ypart(%%.c) = ypart(%%.ghost.c);
-           fi
-           drawmeasuredpic(%%);
-           """
-       return self.repl(s)
-
-
-
-
-class mpcomponent(simpleEl):
-    def setupCode(self):
-       s = """
-           picture %%.titl, %%.pict;
-           %%.titl = classTitle("%name%");
-           %%.pict = %%.titl;
-           addto %%.pict doublepath bbox %%.titl;
-
-           picmeasurements(%%);
-           """
-       return self.repl(s)
-
-class mpinterface(simpleEl):
-    def setupCode(self):
-       s = """
-           picture %%.titl, %%.pict, %%.intlabel.pict;
-           %%.pict = nullpicture;
-           addto %%.pict doublepath (((0,1)..(1,0)..(0,-1)..(-1,0)..cycle) 
scaled 5);
-           %%.intlabel.pict = classTitle("%name%");
-
-           picmeasurements(%%);
-           picmeasurements(%%.intlabel);
-           """
-       return self.repl(s)
-    def drawCode(self):
-       s = """
-           drawmeasuredpic(%%);
-           if not known %%.intlabel.c:
-               %%.intlabel.nw = %%.se;
-           fi
-           drawmeasuredpic(%%.intlabel);
-       """
-       return self.repl(s)
-
-class mpnary(simpleEl):
-    def setupCode(self):
-       s = """
-           picture %%.pict;
-           %%.pict = naryassoc;
-           picmeasurements(%%);
-           """
-       return self.repl(s)
-    def drawCode(self):
-       s = """
-           drawmeasuredpic(%%);
-       """
-       return self.repl(s)
-
-class mpbigpackage(simpleEl):
-    def setupCode(self):
-       s = """
-           picture %%.titl.pict;
-           %%.titl.pict = classTitle("%name%");
-           addto %%.titl.pict doublepath (bbox %%.titl.pict) withpen 
currentpen;
-
-           unknownpicmeasurements(%%);
-           picmeasurements(%%.titl);
-           %%.titl.sw = %%.nw;
-           """
-       return self.repl(s)
-    def drawCode(self):
-       s = self.jlinkstr("bboxmeasuredpic(%%)") + """
-           fixmeasuredpic(%%);
-           draw bboxmeasuredpic(%%);
-           drawmeasuredpic(%%.titl);
-           """
-       return self.repl(s)
-
-
-
-
-class mpqual(namedEl):
-    def __init__(self, var, s, l):
-       self.var = var
-       self.name = "q"
-       self.fields = []
-       self.docontents(l)
-    def handleContained(self, el):
-       if el[0] == "fields":
-           self.fields = el[1:]
-       else:
-           namedEl.handleContained(self, el)
-    def setupCode(self):
-       s = """
-           picture %%.pict;
-           %%.pict = stackStrings(defaultfont, 1, FIELDS);
-           addto %%.pict doublepath bbox(%%.pict) ;
-           picmeasurements(%%);
-           """
-       s = s.replace("FIELDS", ", ".join(
-           [ '"'+m[0]+'"' for m in self.fields ] ))
-       return self.repl(s)
-
-class mpassoc(namedEl):
-    class end(namedEl):
-       def __init__(self, var, list):
-           self.var = var
-           self.name = ""
-           self.obj = list.pop(0)
-           self.type = ""
-           self.role = " "
-           self.multi = " "
-           while len(list) > 0:
-               el = list.pop(0)
-               if el == "-":
-                   return
-               elif el == "aggreg" or el == "compos":
-                   self.type = el
-               else:
-                   mat = re.match("^multi\((.*)\)$", el)
-                   if mat:
-                       self.multi = mat.group(1)
-                       continue
-                   mat = re.match("^role\((.*)\)$", el)
-                   if mat:
-                       self.role = mat.group(1)
-                       continue
-                   assert 0, "Invalid assoc adorn "+el
-       def setupCode(self):
-           s = """
-               picture %%.multi, %%.role;
-               path %%.p;
-               %%.multi = adornmentName("MULTI");
-               %%.role = adornmentName("ROLE");
-               """
-           s = s.replace("MULTI", self.multi).replace("ROLE", self.role)
-           return self.repl(s)
-       def drawCode(self):
-           s = """
-               %sassoc(%%.p, %%.multi, %%.role);
-               """
-           s = self.repl(s) % self.type;
-           return s
-
-           
-    def __init__(self, var, s, l):
-       self.var = var or randomVar()
-       self.name = ""
-       self.mems = s.split()
-
-       self.a = self.end(self.var+".a", self.mems)
-       self.mems.reverse()
-       self.b = self.end(self.var+".b", self.mems)
-
-    def setupCode(self):
-       s = """
-           path %%.p;
-           """ + self.a.setupCode() + self.b.setupCode() 
-       return self.repl(s) 
-    def drawCode(self):
-       s = """
-           if not known %%.p:
-               %%.p = backuppath(START, END);
-               show %%.p;
-           else:
-               %%.p := clipmeasuredpath(START, END, %%.p);
-           fi
-           %%.a.p = subpath(0,0.5*length(%%.p)) of %%.p;
-           %%.b.p = subpath(length(%%.p),0.5*length(%%.p)) of %%.p;
-           """ + self.a.drawCode() + self.b.drawCode() 
-       return self.repl(s).replace("START", self.a.obj).replace("END", 
self.b.obj)
-
-
-class simpleRel(namedEl):
-    def __init__(self, var, s, l):
-       self.var = var or randomVar()
-       self.name = ""
-       ends = s.split()
-       assert len(ends) == 2
-       self.start = ends[0]
-       self.end = ends[1]
-    def setupCode(self):
-       s = """
-           path %%.p;
-           """
-       return self.repl(s) 
-    def pathCode(self):
-       s = """
-           if not known %%.p:
-               %%.p = backuppath(START, END);
-               show %%.p;
-           else:
-               %%.p := clipmeasuredpath(START, END, %%.p);
-           fi
-           """
-       return self.repl(s).replace("START", self.start).replace("END", 
self.end)
-
-class mpsupply(simpleRel):
-    def drawCode(self):
-       return self.pathCode() + self.repl(" draw %%.p; ")
-
-class mpuse(simpleRel):
-    def drawCode(self):
-       return self.pathCode() + self.repl(" drawarrow %%.p dashed evenly; ")
-
-class mprealize(simpleRel):
-    def drawCode(self):
-       return self.pathCode() + self.repl(" realize(%%.p); ")
-
-class mpinherit(simpleRel):
-    def drawCode(self):
-       return self.pathCode() + self.repl(" inherit(%%.p); ")
-
-class mpdep(simpleRel):
-    def __init__(self, var, s, l):
-       (m,s) = matchRemove('^\s*"(\w*)"\s*', s)
-       self.stereo = m.group(1)
-       simpleRel.__init__(self, var, s, l)
-    def drawCode(self):
-       return self.pathCode() + self.repl(' dep(%%.p, "%stereo%"); ')
-
-curList = None
-
-class mplist:
-    def __init__(self, l):
-       global curList;
-       curList = self
-       self.extras = []
-       self.list = filter(None, [self.parseElement(i) for i in l])
-       self.list.extend(self.extras)
-    def addContainedElement(self, containerName, e):
-       s = e[0]
-       (w,s) = matchRemove("^\s*(\w+)\s*", s)
-       key = w.group(1)
-       type = self.getType(key)
-       print "Internal: ", type
-       element = type(None, containerName + " " + s, e[1:])
-       self.extras.append(element)
-
-    def parseElement(self, e):
-       s = e[0]
-       name = None
-       (m,s) = matchRemove("^\s*(\w+)\s*=\s*", s) 
-       if m: name = m.group(1) 
-       (w,s) = matchRemove("^\s*(\w+)\s*", s)
-       key = w.group(1)
-       if key == "jlinkpackage": 
-           global jlinkpackage
-           jlinkpackage = s
-           return None
-       type = self.getType(key)
-       print type
-       return type(name, s, e[1:])
-
-    def getType(self,key):
-       if key == "class": type = mpclass
-       elif key == "qual": type = mpqual
-       elif key == "component": type = mpcomponent
-       elif key == "interface": type = mpinterface
-       elif key == "assoc": type = mpassoc
-       elif key == "naryassoc": type = mpnary
-       elif key == "supply": type = mpsupply
-       elif key == "use": type = mpuse
-       elif key == "dep": type = mpdep
-       elif key == "package": type = mppackage
-       elif key == "inherit": type = mpinherit
-       elif key == "realize": type = mprealize
-       elif key == "bigpackage": type = mpbigpackage
-       elif key == "seqobject": type = mpseqobject
-       elif key == "sequence": type = mpsequence
-       else:
-           assert 0, "Unknown key! "+key
-       return type
-    def setupCode(self):
-       "The code to set up the metapost objects for user geometry code"
-       return "\n".join([e.setupCode() for e in self.list]) + "\n"
-    def drawCode(self):
-       "The code to draw the objects after the user code"
-       code = "\n".join([e.drawCode() for e in self.list]) + "\n"
-       code += """
-           showjlinksize("bbox", (bbox currentpicture));
-           """
-       return code
-
-class jlink:
-    def __init__(self, els):
-       self.name = re.match('^"(.*)"$', els[0]).group(1)
-       self.corners = [float(e) for e in els[1:]]
-       print "JLINK INIT: ",self.name
-    def mapCorners(self, mapper):
-       print "UnMapped: ", self.corners
-       self.corners = [int(e) for e in (
-           mapper(self.corners[0], self.corners[1]) +
-           mapper(self.corners[2], self.corners[3]) 
-       )]
-       print "Mapped: ", self.corners
-    def imgmapanchor(self):
-       ts = self.name.split(".")
-       if re.search("html", ts[-1]):
-           target = self.name
-       elif re.match("^[a-z]", ts[-1]):
-           target = ("../javadoc/" + "/".join(ts) 
-               + "/package-summary.html#package_description")
-       else:
-           target = ("../javadoc/" + "/".join(ts)
-               + ".html")
-       return """<A href="%s" shape="rect" coords="%s" target="_top">%s</A>""" 
% (
-           target, ",".join(["%s"%c for c in self.corners]), self.name
-       )
-       
-
-def roundDown(x):
-    return int(float(x) - 5)
-def roundUp(x):
-    return int(float(x) + 5)
-
-class psbbox:
-    def __init__(self, els):
-       self.x=(roundDown(els[0]), roundUp(els[2]))
-       self.y=(roundUp(els[1]), roundDown(els[3]))
-       self.scale = 1 # 1 point = 1 pixel
-       self.w = self.scale*(self.x[1]-self.x[0])
-       self.h = self.scale*(self.y[0]-self.y[1])
-    def mapPoint(self, x, y):
-       return (self.scale * (x - self.x[0]), 
-               self.h - self.scale * (y - self.y[1])); # reverse y
-    def pstopnm(self, scale):
-       dpi = 72.0
-       return ["%s"%r for r in [ "-llx", self.x[0]/dpi, "-lly", self.y[1]/dpi,
-               "-urx", self.x[1]/dpi, "-ury", self.y[0]/dpi,
-               "-xsize", self.w * scale, "-ysize", self.h * scale,
-               "-xborder", 0, "-yborder", 0]]
-
-
-def run(prefix):
-    s = open(prefix+".uml").read()
-
-    l = parseIndented(s)
-    m = mplist(l)
-
-    open(prefix+".gen1", "w").write(m.setupCode())
-    open(prefix+".gen2", "w").write(m.drawCode())
-    open(prefix+".gen3", "w").write("""
-
-       prologues := 1;
-       input umlhelper.mp
-
-       beginfig(1)
-
-       input %(prefix)s.gen1
-       input %(prefix)s.mp
-       input %(prefix)s.gen2
-       endfig
-       end
-       """ % locals())
-
-
-    assert not os.spawnlp(os.P_WAIT, 
-       "/usr/bin/mpost", "/usr/bin/mpost", prefix+".gen3")
-
-    log = open(prefix+".log").read()
-    print "LINKS"
-    links = []
-
-    log = log.replace("\n","") # mpost splits lines awkwardly in the log.
-
-    for link in re.findall("JLINKRECT\((.*?)\)", log):
-       els = link.split(",")
-       if els[0] == "\"bbox\"":
-           bbox = els
-       else:
-           links.append(jlink(els))
-    print links
-    print "BBOX", bbox
-    bbox = psbbox(bbox[1:])
-    for link in links: link.mapCorners(bbox.mapPoint)
-
-    list = bbox.pstopnm(4)
-    print "PSTOPNM: ", list
-    cmd = ("pstopnm -verbose "+" ".join(list)+" <"+prefix+""".1 | pnmscale 
-reduce 4 |
-       pnmtopng >"""+prefix+".png")
-    print "Command:",cmd
-    os.system(cmd)
-
-    htmlcode = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-       "http://www.w3.org/TR/html4/strict.dtd";>
-       <HTML>
-          <HEAD>
-             <TITLE>Autogenerated UML imagemap</TITLE>
-          </HEAD>
-          <BODY>
-          <P>
-           %(prefix)s<BR>
-            <OBJECT data="%(filename)s" type="image/png" usemap="#map1">
-              <MAP name="map1">
-              <P>
-               The UML diagram as PNG. Links us to
-               %(links)s
-               </MAP>
-            </OBJECT>
-          </BODY>
-       </HTML>
-       """ % { "prefix": prefix,
-               "filename": prefix+".png",
-               "links": " ".join([l.imgmapanchor() for l in links]) }
-    open(prefix+".html", "w").write(htmlcode)
-
-       
-
-# run("core")
-# run("pp")
+from umltool import *
 
 for prefix in sys.argv[1:]:
     run(prefix)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]