[Top][All Lists]
[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gzz-commits] navidoc ./rst2any.py doc/syntax.rst navidoc/par...,
Asko Soukka <=