gzz-commits
[Top][All Lists]
Advanced

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

[Gzz-commits] navidoc ./rst2any.py doc/syntax.rst navidoc/par...


From: Asko Soukka
Subject: [Gzz-commits] navidoc ./rst2any.py doc/syntax.rst navidoc/par...
Date: Wed, 11 Jun 2003 03:49:35 -0400

CVSROOT:        /cvsroot/navidoc
Module name:    navidoc
Branch:         
Changes by:     Asko Soukka <address@hidden>    03/06/11 03:49:35

Modified files:
        .              : rst2any.py 
        doc            : syntax.rst 
        navidoc        : parser.py 
        navidoc/link   : __init__.py docxx.py javadoc.py 
        navidoc/mp     : __init__.py html.py uml.py 
        navidoc/util   : debug.py parser.py 

Log message:
        syntax upgrade

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/rst2any.py.diff?tr1=1.31&tr2=1.32&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/doc/syntax.rst.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/parser.py.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/link/__init__.py.diff?tr1=1.21&tr2=1.22&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/link/docxx.py.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/link/javadoc.py.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/mp/__init__.py.diff?tr1=1.36&tr2=1.37&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/mp/html.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/mp/uml.py.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/util/debug.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/util/parser.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: navidoc/doc/syntax.rst
diff -u navidoc/doc/syntax.rst:1.3 navidoc/doc/syntax.rst:1.4
--- navidoc/doc/syntax.rst:1.3  Fri Jun  6 09:28:16 2003
+++ navidoc/doc/syntax.rst      Wed Jun 11 03:49:34 2003
@@ -2,6 +2,23 @@
 UML Syntax
 ==========
 
+Testi
+=====
+
+.. UML:: testikaavio
+
+   class (foo) foo1
+       fields
+               blah
+       methods
+               bar
+
+   class (bar) foo2
+
+   ---
+   vertically(50, hor_c, bar, foo);
+
+
 Elements
 ========
 
@@ -81,7 +98,7 @@
                barmethod2
                barmethodn
 
-   class bar bar1 "abstract"
+   class (bar) bar1 "abstract"
    ---
    horizontally(50, hor_c, foo, bar);
 
@@ -193,18 +210,18 @@
 
 .. UML:: elements-assoc
 
-   class fooA foo1 
+   class (fooA) foo1 
        assoc - barA
-   class fooB foo2
+   class (fooB) foo2
        assoc role(foo) multi(1) - barB
-   class fooC foo3
+   class (fooC) foo3
        assoc compos - multi(*) barC
-   class fooD foo4
+   class (fooD) foo4
        assoc role(foo) multi(1) compos - multi(*) compos role(bar) barD
-   class barA bar1
-   class barB bar2
-   class barC bar3
-   class barD bar4
+   class (barA) bar1
+   class (barB) bar2
+   class (barC) bar3
+   class (barD) bar4
    ---
    horizontally(150, hor_cA, fooA, barA);
    horizontally(150, hor_cB, fooB, barB);
@@ -214,18 +231,18 @@
 
 Syntax::
 
-   class fooA foo1 
+   class (fooA) foo1 
        assoc - barA
-   class fooB foo2
+   class (fooB) foo2
        assoc role(foo) multi(1) - barB
-   class fooC foo3
+   class (fooC) foo3
        assoc compos - multi(*) barC
-   class fooD foo4
+   class (fooD) foo4
        assoc role(foo) multi(1) compos - multi(*) compos role(bar) barD
-   class barA bar1
-   class barB bar2
-   class barC bar3
-   class barD bar4
+   class (barA) bar1
+   class (barB) bar2
+   class (barC) bar3
+   class (barD) bar4
    ---
    horizontally(150, hor_cA, fooA, barA);
    horizontally(150, hor_cB, fooB, barB);
@@ -248,11 +265,11 @@
 .. UML:: elements-nary
 
    naryassoc nary
-   class fooA foo1 
+   class (fooA) foo1 
        assoc multi(1) - nary
-   class barA bar1
+   class (barA) bar1
        assoc multi(*) - nary
-   class barB bar2
+   class (barB) bar2
        assoc multi(*) - nary
    ---
    horizontally(150, hor_c, fooA, nary, barA);
@@ -261,11 +278,11 @@
 Syntax::
 
    naryassoc nary
-   class fooA foo1 
+   class (fooA) foo1 
        assoc multi(1) - nary
-   class barA bar1
+   class (barA) bar1
        assoc multi(*) - nary
-   class barB bar2
+   class (barB) bar2
        assoc multi(*) - nary
    ---
    horizontally(150, hor_c, fooA, nary, barA);
@@ -453,19 +470,19 @@
 
 .. UML:: elements-horizontally
 
-   class fooA foo1
-   class fooB foo2
-   class fooC foo3
-   class fooD foo4
+   class (fooA) foo1
+   class (fooB) foo2
+   class (fooC) foo3
+   class (fooD) foo4
    ---
    horizontally(50, hor_c, fooA, fooB, fooC, fooD);
 
 Syntax::
 
-   class fooA foo1
-   class fooB foo2
-   class fooC foo3
-   class fooD foo4
+   class (fooA) foo1
+   class (fooB) foo2
+   class (fooC) foo3
+   class (fooD) foo4
    ---
    horizontally(50, hor_c, fooA, fooB, fooC, fooD);
 
@@ -485,19 +502,19 @@
 
 .. UML:: elements-vertically
 
-   class fooA foo1
-   class fooB foo2
-   class fooC foo3
-   class fooD foo4
+   class (fooA) foo1
+   class (fooB) foo2
+   class (fooC) foo3
+   class (fooD) foo4
    ---
    vertically(50, hor_c, fooA, fooB, fooC, fooD);
 
 Syntax::
 
-   class fooA foo1
-   class fooB foo2
-   class fooC foo3
-   class fooD foo4
+   class (fooA) foo1
+   class (fooB) foo2
+   class (fooC) foo3
+   class (fooD) foo4
    ---
    vertically(50, ver_c, fooA, fooB, fooC, fooD);
 
@@ -512,96 +529,46 @@
 Is name for CS could be optional. If not given, could use random
 name.
 
-leftof
-------
-
-.. UML:: elements-leftof
-
-   class foo
-       leftof bar 50
-   class bar
-
-Syntax::
-
-   class foo
-       leftof bar 50
-   class bar
-
-rightof
--------
-
-.. UML:: elements-rightof
-
-   class foo
-       rightof bar 50
-   class bar
-
-Syntax::
-
-   class foo
-       rightof bar 50
-   class bar
-
-above
------
-
-.. UML:: elements-above
-
-   class foo
-       above bar 50
-   class bar
-
-Syntax::
-
-   class foo
-       above bar 50
-   class bar
-
-under
------
-
-.. UML:: elements-under
-
-   class foo
-       under bar 50
-   class bar
-
-Syntax::
-
-   class foo
-       under bar 50
-   class bar
-
 Linking
 =======
 
 .. uml:: elements-linking
 
    page foo
-       link
+       link
                syntax.gen.html
 
-   page bar "Fenfire project"
+   page (bar) "Fenfire project"
        link fenfire
                projects.gen.html
 
+   jlinkpackage org.fenfire.loom
    class View
+       jlink
 
+   jlinkpackage
    class LoomView
+       jlink
+               org.fenfire.loom.View
 
+   clinkpackage Vob
    class Vob
+        clink
 
+   clinkpackage
    class CVob
+       clink
+               Vob.Vob
    ---
    horizontally(50, hor_c, foo, bar, View, LoomView, Vob, CVob);
 
 Syntax::
 
    page foo
-       link
+       link
                syntax.gen.html
 
-   page bar "Fenfire project"
+   page (bar) "Fenfire project"
        link fenfire
                projects.gen.html
 
@@ -623,12 +590,4 @@
        clink
                Vob.Vob
    ---
-   horizontally(50, hor_c, foo, bar, View, LoomView, Vob, CVob);
-
-Unknown
-=======
-
-- left-of ?
-- right-of ?
-- above ? 
-- under ?
+   horizontally(50, hor_c, foo, bar, View, LoomView, Vob, CVob);
\ No newline at end of file
Index: navidoc/navidoc/link/__init__.py
diff -u navidoc/navidoc/link/__init__.py:1.21 
navidoc/navidoc/link/__init__.py:1.22
--- navidoc/navidoc/link/__init__.py:1.21       Wed Jun  4 08:19:18 2003
+++ navidoc/navidoc/link/__init__.py    Wed Jun 11 03:49:34 2003
@@ -19,7 +19,7 @@
 # MA  02111-1307  USA
 # 
 
-#$Id: __init__.py,v 1.21 2003/06/04 12:19:18 humppake Exp $
+#$Id: __init__.py,v 1.22 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Tuomas Lukka, Asko Soukka
@@ -46,38 +46,41 @@
     error = 0
     target = None
 
-    def __init__(self, var, s, list):
+    def __init__(self, var, toks, list):
         """
         Initilizes link.
         """
-        dbg(self.key+' VAR: %s, S: %s, LIST: %s' % (var, s, list))
+       dbg("link: %s %s %s" % (var, toks,list))
 
         if config.link_base_directory == None:
             redirection_path = config.working_directory
         else: redirection_path = config.link_base_directory
             
-        if (len(s.split(' ')) > 0):
+        if (len(toks) > 0):
+            self.title = toks[0]
+
+        if (len(toks) > 1):
             """
-            The 'link' may be followed by an attributed, which is
+            The 'link' may be followed by an attribute, which is
             interpreted as keyword for one of the redirections mapped
             in config.
             """
-            redirection = s.split(' ')[-1]
+            self.title = toks[0]
+            redirection = toks[-1]
             if config.link_redirection.has_key(redirection):
-                s = s[0:len(s)-len(redirection)-1]
+                toks.remove(redirection)
                 redirection_path = config.link_redirection[redirection]
                 dbg('Redirection %s: %s' % (redirection, redirection_path))
 
-        self.title = s.strip()
-
         if (len(list) > 0):
             """
             Multiple link could be given.
             Let the last working one overwrite others.
             """
             for link in list:
-                if type(link) == type([]):
-                    link = link[0]
+                if type(link[0]) == type([]):
+                    link = link[0][0]
+                else: link = link[0]
                 if self.target == None or \
                        not os.path.isfile(self.target):
                     if link.startswith('http://'): self.target = link
Index: navidoc/navidoc/link/docxx.py
diff -u navidoc/navidoc/link/docxx.py:1.4 navidoc/navidoc/link/docxx.py:1.5
--- navidoc/navidoc/link/docxx.py:1.4   Fri Jun  6 08:17:07 2003
+++ navidoc/navidoc/link/docxx.py       Wed Jun 11 03:49:34 2003
@@ -19,7 +19,7 @@
 # MA  02111-1307  USA
 # 
 
-#$Id: docxx.py,v 1.4 2003/06/06 12:17:07 humppake Exp $
+#$Id: docxx.py,v 1.5 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Asko Soukka
@@ -48,14 +48,16 @@
             tuples = tuples.findall(index.read())
             index.close()
             for link, name in tuples:
-                targets[name] = slashify(docxx)+link#
+                targets[name] = slashify(docxx)+link
 
 class CLinkPackage(navidoc.Element):
     key = "clinkpackage"
 
-    def __init__(self, var, s, list):
-        dbg("Set clinkpackage to: "+s)
-        config.linkpackages['clink'] = s
+    def __init__(self, var, toks, list):
+        if len(toks) > 0: package = toks[0]
+        else: package = ''
+        dbg("Set clinkpackage to: "+package)
+        config.linkpackages['clink'] = package
 
     def setup_code(self): return ''
 
@@ -64,14 +66,14 @@
 class CLink(navidoc.link.Link):
     key = "clink"
 
-    def __init__(self, var, s, list):
-        navidoc.link.Link.__init__(self, var, s, list)
+    def __init__(self, var, toks, list):
+        navidoc.link.Link.__init__(self, var, toks, list)
 
         if not self.target or self.error:
             self.error = 0
-            if len(list) > 0 and len(list[0][0]) > 0:
-                self.target = list[0][0].strip()
-            else: self.target = s.strip()
+            if len(list) > 0 and len(list[0][0][0]) > 0:
+                self.target = list[0][0][0]
+            else: self.target = toks[0]
             self.set_target()
             self.set_status()
             dbg(self.key+" Doc++ target: %s, error: %s" % (self.target, 
self.error))
Index: navidoc/navidoc/link/javadoc.py
diff -u navidoc/navidoc/link/javadoc.py:1.8 navidoc/navidoc/link/javadoc.py:1.9
--- navidoc/navidoc/link/javadoc.py:1.8 Mon May 26 07:19:10 2003
+++ navidoc/navidoc/link/javadoc.py     Wed Jun 11 03:49:34 2003
@@ -19,7 +19,7 @@
 # MA  02111-1307  USA
 # 
 
-#$Id: javadoc.py,v 1.8 2003/05/26 11:19:10 humppake Exp $
+#$Id: javadoc.py,v 1.9 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Asko Soukka
@@ -41,9 +41,11 @@
 class JLinkPackage(navidoc.Element):
     key = "jlinkpackage"
 
-    def __init__(self, var, s, list):
-        dbg("Set jlinkpackage to: "+s)
-        config.linkpackages['jlink'] = s
+    def __init__(self, var, toks, list):
+        if len(toks) > 0: package = toks[0]
+        else: package = ''
+        dbg("Set jlinkpackage to: "+package)
+        config.linkpackages['jlink'] = package
 
     def setup_code(self): return ''
 
@@ -52,14 +54,14 @@
 class JLink(navidoc.link.Link):
     key = "jlink"
 
-    def __init__(self, var, s, list):
-        navidoc.link.Link.__init__(self, var, s, list)
+    def __init__(self, var, toks, list):
+        navidoc.link.Link.__init__(self, var, toks, list)
 
         if not self.target or self.error:
             self.error = 0
-            if len(list) > 0 and len(list[0][0]) > 0:
-                self.target = list[0][0].strip()
-            else: self.target = s.strip()
+            if len(list) > 0 and len(list[0][0][0]) > 0:
+                self.target = list[0][0][0]
+            else: self.target = toks[0]
             self.set_target()
             self.set_status()
             dbg(self.key+" Javadoc target: %s, error: %s" % (self.target, 
self.error))
Index: navidoc/navidoc/mp/__init__.py
diff -u navidoc/navidoc/mp/__init__.py:1.36 navidoc/navidoc/mp/__init__.py:1.37
--- navidoc/navidoc/mp/__init__.py:1.36 Wed Jun  4 08:19:19 2003
+++ navidoc/navidoc/mp/__init__.py      Wed Jun 11 03:49:34 2003
@@ -19,7 +19,7 @@
 # MA  02111-1307  USA
 # 
 
-# $Id: __init__.py,v 1.36 2003/06/04 12:19:19 humppake Exp $
+# $Id: __init__.py,v 1.37 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Tuomas Lukka, Asko Soukka
@@ -66,32 +66,27 @@
        return self.repl(s)
 
 class SimpleElement(MetapostElement):
-    def __init__(self, var, s, list):
-       dbg("Simple element: %s %s %s" % (self, s, list))
-       self.var = var or s
-       self.name = s
+    def __init__(self, var, toks, list):
+       dbg("Simple element: %s %s %s" % (var, toks, list))
+       self.var = var or toks[0]
+       self.name = toks[0]
        self.do_contents(list)
         if self.link != None:
             self.link.bbox = ('bboxmeasuredpic(%s)' % (self.var))
 
 class mptitle(MetapostElement):
     key = 'title'
-    def __init__(self, var, s, list = []):
-       dbg("mp: %s %s" % (s,list))
-        """Grep longer title after variable name."""
-        if var == None and s.find(' ')!=-1:
-            self.var = s.split(' ')[0]
-            s = s[len(self.var)+1:]
-            if s[0] == '"' and s[-1]=='"':
-                s = s[1:len(s)-1]
-        else: self.var = var or s
+    def __init__(self, var, toks, list = []):
+       dbg("mptitle: %s %s %s" % (var, toks, list))
+        if not var: raise UMLException('No variable given name for title 
(%s).' %(' '.join(toks)))
+        self.var = var
+        self.name = var
+        self.title = ' '.join(toks)
+
+        # Removing possible quotes
+        if self.title.startswith('"') and self.title.endswith('"'):
+            self.title = self.title[1:len(self.title)-1]
         
-        """Title could be used as name if contains no spaces"""
-        if len(s.split(' ')) > 0:
-            self.name = self.var
-        else: self.name = s
-        self.title = s
-
         self.do_contents(list)
         if self.link != None:
             self.link.bbox = ('bboxmeasuredpic(%s)' % (self.var))
@@ -111,7 +106,7 @@
 
 class mpContextMenu(MetapostElement):
     key = 'contextmenu'
-    def __init__(self, var, s, list = []):
+    def __init__(self, var, toks, list = []):
         config.mp_context_menu = 1
     def setup_code(self):
         return ''
@@ -159,8 +154,8 @@
                 target = relative_path(config.link_base_directory, refers[id])
             refer_names[id] = random_var()
 
-            element = mptitle(refer_names[id], title,
-                              [['link', target+'#'+diagram]])
+            element = mptitle(refer_names[id], [title],
+                              [[['link'], [target+'#'+diagram]]])
             if id == len(refers)-1:
                 context_menu += "\tdraw ulcorner(bbox(currentpicture))+(0,10) 
-- urcorner(bbox(currentpicture))+(0,10) withpen pencircle scaled 1.5pt;\n"
                 context_menu += element.setup_code()
@@ -201,10 +196,10 @@
 
     dir = slashify(config.mp_directory)
 
-    gen1 = open(dir+diagram+context+config.midfix+'.mp.1', 'w')
+    gen1 = open(dir+diagram+context+config.midfix+'.mp.2', 'w')
     gen1.write(m.setup_code()+'\n')
     gen1.close()
-    gen2 = open(dir+diagram+context+config.midfix+'.mp.2', 'w')
+    gen2 = open(dir+diagram+context+config.midfix+'.mp.3', 'w')
     gen2.write(m.draw_code()+"\n")
     gen2.write(draw_extra+"\n")
 
@@ -217,15 +212,18 @@
     rough_edges = []
 
     midfix = config.midfix
-    gen3 = open(dir+diagram+context+config.midfix+".mp.3", "w")
+    gen3 = open(dir+diagram+context+config.midfix+".mp.4", "w")
     gen3.write("""
        prologues := 1;
-       input """+slashify(relative_path(config.mp_directory, 
'navidoc/mp/'))+"""uml.mp
-
+        """)
+    for include in config.mp_includes:
+        gen3.write("""
+       input """+slashify(relative_path(config.mp_directory, 
'navidoc/mp/'))+include)
+    gen3.write("""        
        beginfig(1)
-           input %(diagram)s%(context)s%(midfix)s.mp.1
-           input %(diagram)s%(midfix)s.mp
            input %(diagram)s%(context)s%(midfix)s.mp.2
+           input %(diagram)s%(midfix)s.mp
+           input %(diagram)s%(context)s%(midfix)s.mp.3
        endfig
        end
        """ % locals())
@@ -240,7 +238,7 @@
 
     syscmd = config.metapost+' --file-line-error-style ' \
              + '--interaction nonstopmode ' \
-             + diagram + config.midfix + '.mp.3 >'+config.stderr
+             + diagram + config.midfix + '.mp.4 >'+config.stderr
 
     dbg(syscmd)
     os.system('cd '+config.mp_directory+';'+syscmd)
@@ -336,15 +334,16 @@
             )]
         dbg("Mapped corners: "+str(self.corners))
 
-    def imgmapanchor(self, scale=1.0, diagram=None):
+    def imgmapanchor(self, scale=1.0, diagram=''):
         #If we have a link with empty target and empty title, let's link
         #it to the diagram itself, if diagram name provided.
         if self.title == '' and diagram: self.title = 
diagram+config.midfix+'.png'
         if self.target == '' and diagram:
             self.target = slashify(relative_path(config.working_directory, 
config.mp_directory))+diagram+config.midfix+'.png'
-        if self.target.endswith('.png'): target = '_plain'
+        if self.target.endswith('.png'):
+            target = '_plain'
         else: target = '_top'
-            
+        
         return """<area href="%s" shape="rect" coords="%s" target="%s" 
title="%s" alt="%s" />""" \
                % (self.target,
                   ",".join(["%s"%(int(c*scale)) for c in self.corners]),
Index: navidoc/navidoc/mp/html.py
diff -u navidoc/navidoc/mp/html.py:1.3 navidoc/navidoc/mp/html.py:1.4
--- navidoc/navidoc/mp/html.py:1.3      Mon May 26 06:58:02 2003
+++ navidoc/navidoc/mp/html.py  Wed Jun 11 03:49:34 2003
@@ -19,7 +19,7 @@
 # MA  02111-1307  USA
 # 
 
-# $Id: html.py,v 1.3 2003/05/26 10:58:02 humppake Exp $
+# $Id: html.py,v 1.4 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Tuomas Lukka, Asko Soukka
@@ -31,27 +31,23 @@
 
 import re
 
-from navidoc.util.parser import *
+import navidoc
 
 dbg = config.dbg.shorthand('html')
 
 class mppage(navidoc.mp.MetapostElement):
     key = 'page'
-    def __init__(self, var, s, list):
-       dbg("mpnode: %s %s" % (s, list))
-        """Grep longer title after variable name."""
-        if var == None and s.find(' ')!=-1:
-            self.var = s.split(' ')[0]
-            s = s[len(self.var)+1:]
-            if s[0] == '"' and s[-1]=='"':
-                s = s[1:len(s)-1]
-        else: self.var = var or s
-        
-        """Title could be used as name if contains no spaces"""
-        if len(s.split(' ')) > 0:
-            self.name = self.var
-        else: self.name = s
-        self.title = s
+    def __init__(self, var, toks, list):
+       dbg("mppage: %s %s %s" % (var, toks, list))
+        if not var and len(toks) == 1: var = toks[0]
+        if not var: raise navidoc.mp.uml.UMLException('No variable name given 
for page (%s).' %(' '.join(toks)))
+        self.var = var
+        self.name = var
+        self.title = ' '.join(toks)
+
+        # Removing possible quotes
+        if self.title.startswith('"') and self.title.endswith('"'):
+            self.title = self.title[1:len(self.title)-1]
 
        self.do_contents(list)
         if self.link != None:
Index: navidoc/navidoc/mp/uml.py
diff -u navidoc/navidoc/mp/uml.py:1.16 navidoc/navidoc/mp/uml.py:1.17
--- navidoc/navidoc/mp/uml.py:1.16      Fri Jun  6 09:03:41 2003
+++ navidoc/navidoc/mp/uml.py   Wed Jun 11 03:49:34 2003
@@ -19,7 +19,7 @@
 # MA  02111-1307  USA
 # 
 
-# $Id: uml.py,v 1.16 2003/06/06 13:03:41 humppake Exp $
+# $Id: uml.py,v 1.17 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Tuomas Lukka, Asko Soukka
@@ -126,10 +126,10 @@
            """ % self.__dict__;
            return s + " ".join([el.draw_code_draw() for el in self.list])
 
-    def __init__(self, var, s, list):
+    def __init__(self, var, toks, list):
+        dbg("mpsequence: %s %s %s" % (var, toks, list))
        self.seqobjs = []
        self.seqobjsdeletes = {}
-       toks = s.split(" ");
        s = toks[0]
        self.var = var or s
        self.name = s
@@ -139,7 +139,7 @@
     def parse_contents(self, source_name, list):
        l = []
        for el in list:
-           toks = el[0].split(" ")
+           toks = el[0]
            s = toks[0]
            if s == "call":
                l.append(self.call(self, source_name, toks, el[1:]))
@@ -177,31 +177,24 @@
 
 class mpclass(navidoc.mp.MetapostElement):
     key = 'class'
-    def __init__(self, var, s, list):
-       dbg("mpclass: %s %s" % (s, list))
-       toks = s.split(" ");
-       s = toks[0]
-        (can_s, None) = re.subn('[0-9]', '', s)
-        if s != can_s:
-            raise UMLException('Class name %s contains numbers. Please, use 
syntax "class foo foo123".' % (s))
-       self.var = var or s
-       self.name = s
+    def __init__(self, var, toks, list):
+       dbg("mpclass: %s %s %s" % (var, toks, list))
+       self.var = var or toks[0]
+       self.name = toks[0]
 
        self.stereo = None
-       for tok in toks[1:]:
-           mat = re.match('"(.*)"', tok)
-           if mat:
-               self.stereo = mat.group(1)
-            else: self.name = tok
+       for tok in toks:
+           mat = re.match('^"(.*)"$', tok)
+           if mat: self.stereo = mat.group(1)
 
        self.methods = self.fields = []
        self.do_contents(list)
         if self.link:
             self.link.bbox = ('bboxmeasuredpic(%s)' %(self.var))             
     def handle_contained(self, el):
-       if el[0] == "methods":
+       if el[0][0] == "fields":
            self.methods = el[1:]
-       elif el[0] == "fields":
+       elif el[0][0] == "methods":
            self.fields = el[1:]
        else:
            navidoc.mp.MetapostElement.handle_contained(self, el)
@@ -228,10 +221,10 @@
 
            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 ] ))
+           [ '"'+' '.join(m[0])+'"' for m in self.fields ] ))
+       s = s.replace("METHODS", ", ".join(
+           [ '"'+' '.join(m[0])+'"' for m in self.methods ] ))
        if self.stereo:
            s = s.replace("STEREO", 
                "%%.stereo = stereotype(\"%stereo%\");")
@@ -248,10 +241,10 @@
 
 class mppackage(navidoc.mp.MetapostElement):
     key = 'package'
-    def __init__(self, var, s, list):
-       dbg("mppackage: %s %s" % (s, list))
-       self.var = var or s
-       self.name = s
+    def __init__(self, var, toks, list):
+       dbg("mppackage: %s %s %s" % (var, toks, list))
+       self.var = var or toks[0]
+       self.name = toks[0]
        self.do_contents(list)
         if self.link != None:
             self.link.bbox = ('bboxmeasuredpic(%s)' % (self.var))
@@ -371,13 +364,13 @@
 
 class mpqual(navidoc.mp.MetapostElement):
     key = 'qual'
-    def __init__(self, var, s, list):
-       self.var = var or s
-       self.name = s
+    def __init__(self, var, toks, list):
+       self.var = var or toks[0]
+       self.name = toks[0]
        self.fields = []
        self.do_contents(list)
     def handle_contained(self, el):
-       if el[0] == "fields":
+       if el[0][0] == "fields":
            self.fields = el[1:]
        else:
            navidoc.mp.MetapostElement.handle_contained(self, el)
@@ -389,7 +382,7 @@
            picmeasurements(%%);
            """
        s = s.replace("FIELDS", ", ".join(
-           [ '"'+m[0]+'"' for m in self.fields ] ))
+           [ '"'' '+' '.join(m[0])+'"' for m in self.fields ] ))
        return self.repl(s)
 
 class mpassoc(navidoc.mp.MetapostElement):
@@ -435,14 +428,14 @@
            return s
 
            
-    def __init__(self, var, s, list):
+    def __init__(self, var, toks, list):
+        dbg("mpassoc: %s %s %s" % (var, toks, list))
        self.var = var or random_var()
        self.name = ""
-       mems = s.split()
 
-       self.a = self.end(self.var+".a", mems)
-       mems.reverse()
-       self.b = self.end(self.var+".b", mems)
+       self.a = self.end(self.var+".a", toks)
+       toks.reverse()
+       self.b = self.end(self.var+".b", toks)
 
     def setup_code(self):
        s = """
@@ -462,39 +455,15 @@
            """ + self.a.draw_code() + self.b.draw_code() 
        return self.repl(s).replace("START", self.a.obj).replace("END", 
self.b.obj)
 
-class mpvobtransform(mpassoc):
-    key = 'vobtransform'
-    def __init__(self, var, s, list):
-       mpassoc.__init__(self, var, s, list)
-       self.a.type = "vobtransformfrom"
-       self.b.type = "vobtransformto"
-
-class mpvobtransformsub(mpassoc):
-    key = 'vobtransformsub'
-    def __init__(self, var, s, list):
-       mpassoc.__init__(self, var, s, list)
-       self.a.type = "vobtransformfromsub"
-       self.b.type = "vobtransformtosub"
-
-
-class mpvobin(mpassoc):
-    key = 'vobin'
-    def __init__(self, var, s, list):
-       mpassoc.__init__(self, var, s, list)
-       self.a.type = "vobinfrom"
-       self.b.type = "vobinto"
-
-
 class SimpleRelation(navidoc.mp.MetapostElement):
-    def __init__(self, var, s, list):
+    def __init__(self, var, toks, list):
+        dbg("SimpleRelation: %s %s %s" % (var, toks, list))
        self.var = var or random_var()
        self.name = ""
-       ends = s.split()
-        #assert len(ends) == 2
-        if len(ends) != 2:
-            raise UMLException("len(ends) != 2")
-       self.start = ends[0]
-       self.end = ends[1]
+        if len(toks) != 2:
+            raise UMLException('Error when creating SimpleRelation (%s). 
len(toks) != 2.' % (' '.join(toks)))
+       self.start = toks[0]
+       self.end = toks[1]
     def setup_code(self):
        s = """
            path %%.p;
@@ -533,53 +502,50 @@
 
 class mpdep(SimpleRelation):
     key = 'dep'
-    def __init__(self, var, s, list):
-        args = s.split()
-        if len(args) < 3: raise UMLException("Not enough arguments for 'dep' 
%s." % (s))
-        if len(args) > 3: raise UMLException("Too many arguments for 'dep' 
%s." %(s))
+    def __init__(self, var, toks, list):
+        if len(toks) < 3: raise UMLException("Not enough arguments for 'dep' 
%s." % (' '.join(toks)))
+        if len(toks) > 3: raise UMLException("Too many arguments for 'dep' 
%s." %(' '.join(toks)))
         self.stereo = None
-        for arg in args:
-            if arg.startswith('"'):
-                self.stereo = arg
-                args.remove(arg)
-        if self.stereo == None: raise UMLException("Dependency role not given 
in %s." %(s))
-       SimpleRelation.__init__(self, var, ' '.join(args), list)
-    def draw_code(self):
-       return self.pathCode() + self.repl(' dep(%%.p, %stereo%); ')
-
-class mpvobsubmatch(SimpleRelation):
-    key = 'vobsubmatch'
-    def draw_code(self):
-       return self.pathCode() + self.repl(" vobsubmatch(%%.p); ")
-
-class placement(navidoc.mp.MetapostElement):
-    def __init__(self, var, s, list):
-       self.var = var or random_var()
-       self.name = ""
-        (self.start, self.end, self.length) = s.split()
-    def draw_code(self):
-        return ""
-
-class above(placement):
-    key = 'above'
-    def setup_code(self):
-        return self.repl(' vertically(%s, %s, %s, %s);' %
-                         (self.length, self.var, self.start, self.end))
-
-class under(placement):
-    key = 'under'
-    def setup_code(self):
-        return self.repl(' vertically(%s, %s, %s, %s);' %
-                         (self.length, self.var, self.end, self.start))
-
-class leftOf(placement):
-    key = 'leftof'
-    def setup_code(self):
-        return self.repl(' horizontally(%s, %s, %s, %s);' %
-                         (self.length, self.var, self.start, self.end))
-
-class rightOf(placement):
-    key = 'rightof'
-    def setup_code(self):
-        return self.repl(' horizontally(%s, %s, %s, %s);' %
-                         (self.length, self.var, self.end, self.start))
+       for tok in toks:
+           mat = re.match('^"(.*)"$', tok)
+           if mat:
+                self.stereo = mat.group(1)
+                toks.remove(tok)
+        if self.stereo == None: raise UMLException("Dependency role not given 
in %s." %(' '.join(toks)))
+       SimpleRelation.__init__(self, var, toks, list)
+    def draw_code(self):
+       return self.pathCode() + self.repl(' dep(%%.p, "%stereo%"); ')
+
+#All placements are done in metapost code and these are deprecated
+
+#class placement(navidoc.mp.MetapostElement):
+#    def __init__(self, var, toks, list):
+#      self.var = var or random_var()
+#      self.name = ""
+#        (self.start, self.end, self.length) = toks
+#    def draw_code(self):
+#        return ""
+
+#class above(placement):
+#    key = 'above'
+#    def setup_code(self):
+#        return self.repl(' vertically(%s, %s, %s, %s);' %
+#                         (self.length, self.var, self.start, self.end))
+
+#class under(placement):
+#    key = 'under'
+#    def setup_code(self):
+#        return self.repl(' vertically(%s, %s, %s, %s);' %
+#                         (self.length, self.var, self.end, self.start))
+
+#class leftOf(placement):
+#    key = 'leftof'
+#    def setup_code(self):
+#        return self.repl(' horizontally(%s, %s, %s, %s);' %
+#                         (self.length, self.var, self.start, self.end))
+
+#class rightOf(placement):
+#    key = 'rightof'
+#    def setup_code(self):
+#        return self.repl(' horizontally(%s, %s, %s, %s);' %
+#                         (self.length, self.var, self.end, self.start))
Index: navidoc/navidoc/parser.py
diff -u navidoc/navidoc/parser.py:1.16 navidoc/navidoc/parser.py:1.17
--- navidoc/navidoc/parser.py:1.16      Wed May 28 05:42:57 2003
+++ navidoc/navidoc/parser.py   Wed Jun 11 03:49:34 2003
@@ -19,7 +19,7 @@
 # MA  02111-1307  USA
 # 
 
-# $Id: parser.py,v 1.16 2003/05/28 09:42:57 humppake Exp $
+# $Id: parser.py,v 1.17 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Tuomas Lukka, Asko Soukka
@@ -32,6 +32,7 @@
 import mp, link
 from util.parser import *
 
+
 dbg = config.dbg.shorthand('parser')
 
 class ElementFactor:
@@ -47,7 +48,7 @@
             dbg ("Checking module: "+str(module_path))
             self.types.update(keys_for_classes(module_path, self.top_class))
             for module in dir(module_path):
-                module = getattr(module_path, module)
+                if module not in ['os', 're']: module = getattr(module_path, 
module)
                 if type(module) == type(navidoc):
                     dbg ("Checking module: "+str(module))
                     # XXX Needs check and exception for conflicting element 
types
@@ -89,6 +90,8 @@
         for element in list:
             element = self.parse_element(element)
             # Borders of linked elements should be drawn before element itself.
+            # Moves link border element from ``extras`` stack into ``elements``
+            # in front of the linked element.
             if len(self.extras) > 0 and \
                    isinstance(self.extras[0], navidoc.link.Link):
                 self.list.append(self.extras.pop(0))
@@ -99,20 +102,20 @@
         """
         Add a subelement.
         """
-       s = elements[0]
-        (w,s) = match_remove("^\s*(\w+)\s*", s)
-        key = w.group(1)
-
-        # XXX this need clariying sometime, why every element don't have 'var'?
-        if super.var != None:
-            element = self.factor.create_new(key, None, super.var + " " + s, 
elements[1:])
-        else:
-            element = self.factor.create_new(key, None, super.name + " " + s, 
elements[1:])
+       toks = elements[0]
+        key = toks[0]
+        toks.remove(key)
+
+        # XXX why no explicit var is given?
+        if super.var != None: toks.insert(0, super.var)
+        else: toks.insert(0, super.name)
+        element = self.factor.create_new(key, None, toks, elements[1:])
 
         if isinstance(element, navidoc.link.Link):
-            # mpclass may have different var and name, links should be base on 
name :/
-            if super.var != super.name:
-                element = self.factor.create_new(key, None, super.name + " " + 
s, elements[1:])
+            # mpclass may have different var and name, links should be based 
on name :/
+            if isinstance(element, navidoc.link.Link) and super.var != 
super.name:
+                toks[0] = super.name
+                element = self.factor.create_new(key, None, toks, elements[1:])
             super.link = element
             self.extras.insert(0, element)
         else: self.extras.append(element)
@@ -121,14 +124,39 @@
         """
         Parse a single element.
         """
-       s = element[0]
-       name = None
-       (m,s) = match_remove("^\s*(\w+)\s*=\s*", s) 
-       if m: name = m.group(1) 
-       (w,s) = match_remove("^\s*(\w+)\s*", s)
-       key = w.group(1)
-        dbg('Creating %s %s %s %s.' % (key, name, s, element[1:]))
-        element = self.factor.create_new(key, name, s, element[1:])
+
+       init = element[0]
+        name = None
+
+        # catching explicit variable name from "element (foo) foo1"
+        for tok in init:
+            mat = re.match('^\((.*)\)$', tok)
+            if mat:
+                name = mat.group(1)
+                init.remove(tok)
+
+        # catching explicit variable name from "foo = element foo1"
+        if init.count('='):
+            if init.index('=') != 1:
+                raise ParserException('Variable preceding "=" cannot contain 
any whitespaces in "%s".' % ' '.join(init))
+            if len(init) < 3:
+                raise ParserException('Missing element name in "%s".' % ' 
'.join(init))
+            name = init[0]
+            init = init[2:]
+
+        dbg('Creating %s %s %s %s.' % (init[0], name, init[1:], element[1:]))
+        element = self.factor.create_new(init[0], name, init[1:], element[1:])
+
+        # element's variable name can't contain any numbers
+        if hasattr(element, 'var') and element.var:
+            can_s = re.subn('[0-9]', '', element.var)[0]
+            if can_s != element.var: raise UMLException(
+"""
+Class name %s contains numbers.
+Please, use syntax "foo = class foo123" or "class (foo) foo123"
+and refer it later using "foo".'
+""" % (s))
+            
         return element
 
     def setup_code(self):
Index: navidoc/navidoc/util/debug.py
diff -u navidoc/navidoc/util/debug.py:1.1 navidoc/navidoc/util/debug.py:1.2
--- navidoc/navidoc/util/debug.py:1.1   Mon Apr  7 11:58:00 2003
+++ navidoc/navidoc/util/debug.py       Wed Jun 11 03:49:34 2003
@@ -19,7 +19,7 @@
 # MA  02111-1307  USA
 # 
 
-#$Id: debug.py,v 1.1 2003/04/07 15:58:00 humppake Exp $
+#$Id: debug.py,v 1.2 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Asko Soukka
@@ -28,7 +28,9 @@
 __docformat__ = 'reStructuredText'
 
 class DebugFilter:
-    """Handle debug streams."""
+    """
+    Navidoc debug stream handler class.
+    """
 
     short = "d:D:"
     long = ["--dbg="]
@@ -41,12 +43,29 @@
         pass
 
     def enable(self, dbg_name):
+        """
+        enable(self, dbg_name)
+        
+        Enables output of a named debug stream.
+        """
         self.output_enabled[dbg_name] = 1
 
     def mute(self, dbg_name):
+        """
+        mute(self, dbg_name)
+        
+        Mutes output of a named debug stream.
+        """
         self.output_enabled[dbg_name] = 0
 
     def out(self, dbg_name, dbg_str):
+        """
+        out(self, dbg_name, dbg_str)
+
+        Print string to a named debug stream.
+        If the debug stream is muted, adds string into
+        its buffer.
+        """
         if self.output_enabled.has_key(dbg_name) \
                and self.output_enabled[dbg_name]:
             print "[", dbg_name, "]", dbg_str
@@ -56,10 +75,20 @@
             self.buffer['dbg_name'].append(dbg_str)
 
     def shorthand(self, dbg_name):
+        """
+        shorthand(self, dbg_name)
+
+        Return shorthand for use of a named debug stream.
+        """
         return lambda dbg_string, self=self, dbg_name=dbg_name: \
                                         self.out(dbg_name, dbg_string)
 
     def flush(self, dbg_name):
+        """
+        flush(self, dbg_name)
+
+        Flush the buffer of a named debug stream.
+        """
         if self.buffer.has_key(dbg_name):
             for line in self.buffer['dbg_name']:
                 print "[", dbg_name, "]", line
Index: navidoc/navidoc/util/parser.py
diff -u navidoc/navidoc/util/parser.py:1.1 navidoc/navidoc/util/parser.py:1.2
--- navidoc/navidoc/util/parser.py:1.1  Mon Apr  7 11:58:00 2003
+++ navidoc/navidoc/util/parser.py      Wed Jun 11 03:49:34 2003
@@ -19,7 +19,7 @@
 # MA  02111-1307  USA
 # 
 
-# $Id: parser.py,v 1.1 2003/04/07 15:58:00 humppake Exp $
+# $Id: parser.py,v 1.2 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Tuomas Lukka, Asko Soukka
@@ -28,11 +28,14 @@
 __docformat__ = 'reStructuredText'
 
 import re, random
+
 import navidoc
 
 def match_remove(p, s):
     """
-    Match pattern p in s and remove the match, return (match, ns)
+    match_remove(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)
@@ -40,21 +43,28 @@
 
 def tabs_to_spaces(s):
     """
+    tabs_to_spaces(s)
+
     Transform tabs into spaces. Return the transformed string.
     """
     return re.sub("\t", "        ", s);
 
-def init_spaces(s):
+def init_spaces(s, tokenize=0):
     """
+    init_spaces(s)
+
     Strip whitespaces and calculates the amount of them in the
     beginning of the string. Return the amount and stripped
-    string.
+    string. Stripped string could also be tokenized - using
+    whitespace as tokenizer.
     """
     n = len(re.match("^\s*", s).group())
-    return (n, s.strip())
-
+    if tokenize: return (n, s.strip().split())
+    else: return (n, s.strip())
 def random_var():
     """
+    random_var()
+
     Return a 20 random character string.
     """
     letters = "abcdeghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ"
@@ -63,17 +73,21 @@
        letters[random.randint(0, l-1)] 
            for k in range(20)])
 
-def parse_indented(s):
+def parse_indented(s, tokenize=1):
     """
+    parse_indented(s, tokenize=true)
+
     Split the string into lines after "\n"s. Parse the string
     array into array tree after indentions in consecutive strings.
+    May also tokenize strings - whitespace as tokenizer.
     Return the parsed array.
     """
     stack = [(-1, [])]
     for r in s.split("\n") :
        if re.match("^\s*$", r): continue
        r = tabs_to_spaces(r) 
-       (n,x) = init_spaces(r)
+        if tokenize: (n,x) = init_spaces(r, tokenize=1)
+        else: (n,x) = init_spaces(r)
        while n < stack[-1][0]:
            stack.pop()
        if n > stack[-1][0]:
@@ -89,8 +103,11 @@
 
 def keys_for_classes(module, top_class):
     """
+    keys_for_classes(module, top_class)
+    
     Gather a key -> class dictionary for all classes containing
-    'key' in the given module.
+    'key' in the given module. In Navidoc this is used to
+    collect UML elements from modules.
     """
     d = {}
     for element in dir(module):
Index: navidoc/rst2any.py
diff -u navidoc/rst2any.py:1.31 navidoc/rst2any.py:1.32
--- navidoc/rst2any.py:1.31     Thu Jun  5 08:03:48 2003
+++ navidoc/rst2any.py  Wed Jun 11 03:49:34 2003
@@ -21,7 +21,7 @@
 # MA  02111-1307  USA
 # 
 
-#$Id: rst2any.py,v 1.31 2003/06/05 12:03:48 humppake Exp $
+#$Id: rst2any.py,v 1.32 2003/06/11 07:49:34 humppake Exp $
 
 #
 # Written by Asko Soukka
@@ -44,10 +44,15 @@
 
 from navidoc.util.path import *
 
-import navidoc.mp.uml
-import navidoc.mp.html
-import navidoc.link.javadoc
-import navidoc.link.docxx
+# imports parser "plugins"
+config.mp_includes = listdir('navidoc/mp',['mp'],dirs=0)
+dirlist = listdir('navidoc/mp',['py'],dirs=0)
+for module in dirlist:
+    if module != '__init__.py': exec('import navidoc.mp.%s' % 
module[0:len(module)-3])
+
+dirlist = listdir('navidoc/link',['py'],dirs=0)
+for module in dirlist:
+    if module != '__init__.py': exec('import navidoc.link.%s' % 
module[0:len(module)-3])
 
 """
 The main frontend for running Navidoc.




reply via email to

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