[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] navidoc ./rst2any.py navidoc/__init__.py navido...
From: |
Asko Soukka |
Subject: |
[Gzz-commits] navidoc ./rst2any.py navidoc/__init__.py navido... |
Date: |
Mon, 31 Mar 2003 10:24:20 -0500 |
CVSROOT: /cvsroot/navidoc
Module name: navidoc
Changes by: Asko Soukka <address@hidden> 03/03/31 10:24:19
Modified files:
. : rst2any.py
navidoc : __init__.py parser.py
navidoc/directives: pegboard.py
navidoc/mp : __init__.py uml.py
navidoc/utils : parser.py
Log message:
building
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/rst2any.py.diff?tr1=1.16&tr2=1.17&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/__init__.py.diff?tr1=1.9&tr2=1.10&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/parser.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/directives/pegboard.py.diff?tr1=1.10&tr2=1.11&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/mp/__init__.py.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/mp/uml.py.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/navidoc/navidoc/navidoc/utils/parser.py.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
Patches:
Index: navidoc/navidoc/__init__.py
diff -u navidoc/navidoc/__init__.py:1.9 navidoc/navidoc/__init__.py:1.10
--- navidoc/navidoc/__init__.py:1.9 Fri Mar 28 08:08:57 2003
+++ navidoc/navidoc/__init__.py Mon Mar 31 10:24:19 2003
@@ -19,7 +19,7 @@
# MA 02111-1307 USA
#
-#$Id: __init__.py,v 1.9 2003/03/28 13:08:57 humppake Exp $
+#$Id: __init__.py,v 1.10 2003/03/31 15:24:19 humppake Exp $
#
# Written by Asko Soukka
@@ -72,27 +72,27 @@
class Element:
"""
-cd The general element for all subelements.
+ The general element for all subelements.
"""
- def __init__(self, list):
- self.list = list
+ list = None
+ linkpackage = None
class NamedElement (Element):
"""
Element with name and linking features.
"""
def do_contents(self, list):
+ dbg_parser = config.dbg.shorthand('parser')
+
for el in list:
self.handle_contained(el)
- dbg("Link: "+self.link)
+ dbg_parser("Link: "+self.link)
def handle_contained(self, el):
- if link_types.has_key(el[0]):
+ if self.list.link_factor.is_type(el[0]):
link = el[1:]
if len(link):
- self.link = link_types[el[0]](link[0][0])
+ self.link = self.list.link_factor.create_new(el[0], link[0][0])
else:
- self.link = self.defaultlink(link[0][0])
+ self.link = self.list.link_factor.create_new('link',
link[0][0])
else:
self.list.add_sub_element(self.name, el)
- def defaultlink(self, link):
- return link.Link(link)
Index: navidoc/navidoc/directives/pegboard.py
diff -u navidoc/navidoc/directives/pegboard.py:1.10
navidoc/navidoc/directives/pegboard.py:1.11
--- navidoc/navidoc/directives/pegboard.py:1.10 Fri Mar 28 08:08:57 2003
+++ navidoc/navidoc/directives/pegboard.py Mon Mar 31 10:24:19 2003
@@ -19,7 +19,7 @@
# MA 02111-1307 USA
#
-# $Id: pegboard.py,v 1.10 2003/03/28 13:08:57 humppake Exp $
+# $Id: pegboard.py,v 1.11 2003/03/31 15:24:19 humppake Exp $
#
# Written by Benja Fallensten, Vesa Kaihlavirta, Asko Soukka
@@ -115,7 +115,7 @@
init_working_directory = config.working_directory
for pegdir in pegdirs:
- dbg('processing PEG ' + pegdir)
+ dbg('Processing PEG ' + pegdir)
config.working_directory = slashify(init_working_directory)+pegdir
peg = {'authors': [], 'status': config.pegboard_undefined, 'topic':
pegdir,
Index: navidoc/navidoc/mp/__init__.py
diff -u navidoc/navidoc/mp/__init__.py:1.6 navidoc/navidoc/mp/__init__.py:1.7
--- navidoc/navidoc/mp/__init__.py:1.6 Fri Mar 28 08:08:57 2003
+++ navidoc/navidoc/mp/__init__.py Mon Mar 31 10:24:19 2003
@@ -19,7 +19,7 @@
# MA 02111-1307 USA
#
-# $Id: __init__.py,v 1.6 2003/03/28 13:08:57 humppake Exp $
+# $Id: __init__.py,v 1.7 2003/03/31 15:24:19 humppake Exp $
#
# Written by Tuomas Lukka, Asko Soukka
@@ -45,7 +45,7 @@
else: return 'showfocus("'+target+'", '+title+', ('+box+'));'
navidoc.link.Link.draw_code = link_draw_code
-class MetaPostElement(navidoc.parser.NamedElement):
+class MetapostElement(navidoc.NamedElement):
def repl(self, s):
s = s.replace("%%", self.var)
s = s.replace("%name%", self.name)
@@ -58,7 +58,7 @@
"""
return self.repl(s)
-class SimpleElement(MetaPostElement):
+class SimpleElement(MetapostElement):
def __init__(self, var, s, list):
dbg("Simple element: %s %s %s" % (self, s, list))
self.var = var or s
@@ -157,8 +157,8 @@
PostScriptBoundingBox.
"""
def __init__(self, els):
- self.x=(roundDown(els[0]), roundUp(els[2]))
- self.y=(roundUp(els[1]), roundDown(els[3]))
+ self.x=(round_down(els[0]), round_up(els[2]))
+ self.y=(round_up(els[1]), round_down(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])
@@ -204,11 +204,12 @@
class MetapostException(Exception):
def __init__(self, value):
+ Exception.__init__(self)
self.value = value
def __str__(self):
return self.value
-def roundDown(x):
+def round_down(x):
return int(float(x) - 5)
-def roundUp(x):
+def round_up(x):
return int(float(x) + 5)
Index: navidoc/navidoc/mp/uml.py
diff -u navidoc/navidoc/mp/uml.py:1.3 navidoc/navidoc/mp/uml.py:1.4
--- navidoc/navidoc/mp/uml.py:1.3 Fri Mar 28 08:08:57 2003
+++ navidoc/navidoc/mp/uml.py Mon Mar 31 10:24:19 2003
@@ -19,7 +19,7 @@
# MA 02111-1307 USA
#
-# $Id: uml.py,v 1.3 2003/03/28 13:08:57 humppake Exp $
+# $Id: uml.py,v 1.4 2003/03/31 15:24:19 humppake Exp $
#
# Written by Tuomas Lukka, Asko Soukka
@@ -31,11 +31,18 @@
import re
-from navidoc.parser import *
+from navidoc.utils.parser import *
dbg = config.dbg.shorthand('uml')
-class mpsequence(Element):
+class UMLException(Exception):
+ def __init__(self, value):
+ Exception.__init__(self)
+ self.value = value
+ def __str__(self):
+ return self.value
+
+class mpsequence(navidoc.Element):
key = 'sequence'
def getVarForY(self, before, after):
@@ -142,7 +149,7 @@
elif s == "return":
pass
else:
- raise umlException("Must have call or return, not '"+s+"'")
+ raise UMLException("Must have call or return, not '"+s+"'")
return l
def setup_code(self):
return self.repl(
@@ -167,7 +174,7 @@
s = s.replace("%%", self.var)
return s
-class mpclass(MetaPostElement):
+class mpclass(navidoc.mp.MetapostElement):
key = 'class'
def __init__(self, var, s, list):
dbg("mpclass: %s %s" % (s,list))
@@ -188,7 +195,7 @@
elif el[0] == "fields":
self.fields = el[1:]
else:
- MetaPostElement.handle_contained(self, el)
+ navidoc.mp.MetapostElement.handle_contained(self, el)
def defaultlink(self):
if self.linkpackage != None and "." not in self.name:
return self.linkpackage + "." + self.name
@@ -234,7 +241,7 @@
"""
return self.repl(s)
-class mppackage(MetaPostElement):
+class mppackage(navidoc.mp.MetapostElement):
key = 'package'
def __init__(self, var, s, list):
dbg("mppackage: %s %s" % (s,l))
@@ -256,7 +263,7 @@
"""
return self.repl(s)
-class mptitle(MetaPostElement):
+class mptitle(navidoc.mp.MetapostElement):
key = 'title'
def __init__(self, var, s, l = []):
dbg("mp: %s %s" % (s,l))
@@ -277,7 +284,7 @@
return self.repl(s)
# XXX underlining
-class mpseqobject(SimpleElement):
+class mpseqobject(navidoc.mp.SimpleElement):
key = 'seqobject'
def setup_code(self):
s = """
@@ -301,7 +308,7 @@
"""
return self.repl(s)
-class mpcomponent(SimpleElement):
+class mpcomponent(navidoc.mp.SimpleElement):
key = 'component'
def setup_code(self):
s = """
@@ -314,7 +321,7 @@
"""
return self.repl(s)
-class mpinterface(SimpleElement):
+class mpinterface(navidoc.mp.SimpleElement):
key = 'interface'
def setup_code(self):
s = """
@@ -337,7 +344,7 @@
"""
return self.repl(s)
-class mpnary(SimpleElement):
+class mpnary(navidoc.mp.SimpleElement):
key = 'naryassoc'
def setup_code(self):
s = """
@@ -352,7 +359,7 @@
"""
return self.repl(s)
-class mpbigpackage(SimpleElement):
+class mpbigpackage(navidoc.mp.SimpleElement):
key = 'bigpackage'
def setup_code(self):
s = """
@@ -375,7 +382,7 @@
drawmeasuredpic(%%.titl);"""
return self.repl(s)
-class mpqual(MetaPostElement):
+class mpqual(navidoc.mp.MetapostElement):
key = 'qual'
def __init__(self, var, s , list):
self.var = var
@@ -386,7 +393,7 @@
if el[0] == "fields":
self.fields = el[1:]
else:
- MetaPostElement.handle_contained(self, el)
+ navidoc.mp.MetapostElement.handle_contained(self, el)
def setup_code(self):
s = """
picture %%.pict;
@@ -398,9 +405,9 @@
[ '"'+m[0]+'"' for m in self.fields ] ))
return self.repl(s)
-class mpassoc(MetaPostElement):
+class mpassoc(navidoc.mp.MetapostElement):
key = 'assoc'
- class end(MetaPostElement):
+ class end(navidoc.mp.MetapostElement):
def __init__(self, var, list):
self.var = var
self.name = ""
@@ -423,7 +430,7 @@
if mat:
self.role = mat.group(1)
continue
- raise umlException("Invalid assoc adorn "+el)
+ raise UMLException("Invalid assoc adorn "+el)
def setup_code(self):
s = """
picture %%.multi, %%.role;
@@ -491,14 +498,14 @@
self.b.type = "vobinto"
-class SimpleRelation(MetaPostElement):
+class SimpleRelation(navidoc.mp.MetapostElement):
def __init__(self, var, s , 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")
+ raise UMLException("len(ends) != 2")
self.start = ends[0]
self.end = ends[1]
def setup_code(self):
@@ -551,7 +558,7 @@
def draw_code(self):
return self.pathCode() + self.repl(" vobsubmatch(%%.p); ")
-class placement(MetaPostElement):
+class placement(navidoc.mp.MetapostElement):
def __init__(self, var, s , list):
self.var = var or random_var()
self.name = ""
@@ -577,7 +584,7 @@
return self.repl(' horizontally(%s, %s, %s, %s);' %
(self.length, self.var, self.start, self.end))
-class leftOf(placement):
+class rightOf(placement):
key = 'right-of'
def setup_code(self):
return self.repl(' horizontally(%s, %s, %s, %s);' %
Index: navidoc/navidoc/parser.py
diff -u navidoc/navidoc/parser.py:1.6 navidoc/navidoc/parser.py:1.7
--- navidoc/navidoc/parser.py:1.6 Fri Mar 28 08:08:57 2003
+++ navidoc/navidoc/parser.py Mon Mar 31 10:24:19 2003
@@ -19,7 +19,7 @@
# MA 02111-1307 USA
#
-# $Id: parser.py,v 1.6 2003/03/28 13:08:57 humppake Exp $
+# $Id: parser.py,v 1.7 2003/03/31 15:24:19 humppake Exp $
#
# Written by Tuomas Lukka, Asko Soukka
@@ -34,43 +34,53 @@
dbg = config.dbg.shorthand('parser')
-class ElementFactor:
+class Factor:
+ """
+ Gather available linktypes from modules.
+ """
+
+ types = {}
- element_types = {}
- link_types = {}
+ def __init__(self, element_list, module_paths, top_class):
+ self.types.clear()
+ self.element_list = element_list
+ for module_path in module_paths:
+ dbg ("Checking module: "+str(module_path))
+ self.types.update(keys_for_classes(module_path, top_class))
+ for module in dir(module_path):
+ module = getattr(module_path, module)
+ if type(module) == type(navidoc):
+ dbg ("Checking module: "+str(module))
+ self.types.update(keys_for_classes(module, top_class))
+ dbg("Collected: "+str(self.types))
- def __init__(self):
+ def is_type(self, key): return self.types.has_key(key)
+
+ def get_type(self, key):
"""
- Gather available elements and linktypes from modules.
+ Return an element type class reference for key.
"""
- #XXX: Fix key-name conflicts
- element_types.update(keys4classes(navidoc.mp))
- for module in dir(navidoc.mp):
- module = getattr(navidoc.mp, module)
- if type(module) == type(navidoc.parser):
- print module
- element_types.update(keys4classes(module))
-
- # link_types.update(keys4classes(navidoc.link))
- # for module in dir(navidoc.link):
- # module = getattr(navidoc.link, module)
- # link_types.update(keys4classes(module))
-
- def keys4classes(self.module):
- """
- Gather a key -> class dictionary for all classes containing
- 'key' in sub modules under root module.
- """
- d = {}
- for element in dir(module):
- element = getattr(module, element)
- if type(element) == type(Element) \
- and issubclass(element, Element):
- print element
- if hasattr(element, "key") \
- and type(element.key) == type(''):
- d[element.key] = element
- return d
+ if self.types.has_key(key):
+ dbg("Internal: "+self.types[key])
+ return self.types[key]
+ else: raise ParserException("Unknown element key: "+key)
+
+class LinkFactor(Factor):
+ """
+ """
+ def create_new(self, key, target):
+ type = self.get_type(key)
+ new = type(target)
+ return new
+
+class ElementFactor(Factor):
+ """
+ """
+ def create_new(self, key, var, s, list):
+ type = self.get_type(key)
+ new = type(var, s, list)
+ new.list = self.element_list
+ return new
class ElementList:
"""
@@ -81,6 +91,8 @@
"""
Initializes ElementList by parsing all elements in list.
"""
+ self.element_factor = ElementFactor(self, [mp], navidoc.Element)
+ self.link_factor = LinkFactor(self, [link], link.Link)
self.linkpackage = None
self.extras = []
self.list = [self.parse_element(element) for element in list]
@@ -93,10 +105,7 @@
s = element[0]
(w,s) = match_remove("^\s*(\w+)\s*", s)
key = w.group(1)
- type = self.get_type(key)
- dbg("Internal: "+type)
- element = type(None, super_name + " " + s, element[1:])
- element.list = self
+ element = self.element_factor.create_new(key, None, super_name + " " +
s, element[1:])
self.extras.append(element)
def parse_element(self, element):
@@ -112,19 +121,10 @@
if key == "linkpackage":
self.linkpackage = s
return None
- type = self.get_type(key)
- dbg("Type: "+type)
- element = type(name, s, element[1:])
- element.list = self
+ dbg('Creating %s %s %s %s.' % (key, name, s, element[1:]))
+ element = self.element_factor.create_new(key, name, s, element[1:])
return element
- def get_type(self, key):
- """
- Return an element type class reference for key.
- """
- if element_types.haskey(key): return element_types[key]
- else: raise ParserException("Unknown element key: "+key)
-
def setup_code(self):
"Return the code to set up the objects for user geometry code"
return "\n".join([element.setup_code() for element in self.list]) + "\n"
@@ -136,7 +136,7 @@
class ParserException(Exception):
def __init__(self, value):
- Exception.__init__()
+ Exception.__init__(self)
self.value = value
def __str__(self):
return self.value
Index: navidoc/navidoc/utils/parser.py
diff -u navidoc/navidoc/utils/parser.py:1.1 navidoc/navidoc/utils/parser.py:1.2
--- navidoc/navidoc/utils/parser.py:1.1 Mon Mar 31 04:32:00 2003
+++ navidoc/navidoc/utils/parser.py Mon Mar 31 10:24:19 2003
@@ -19,7 +19,7 @@
# MA 02111-1307 USA
#
-# $Id: parser.py,v 1.1 2003/03/31 09:32:00 humppake Exp $
+# $Id: parser.py,v 1.2 2003/03/31 15:24:19 humppake Exp $
#
# Written by Tuomas Lukka, Asko Soukka
@@ -28,6 +28,7 @@
__docformat__ = 'reStructuredText'
import re, random, string
+import navidoc
def match_remove(p, s):
"""
@@ -85,7 +86,7 @@
stack.append(new)
return stack[0][1]
-def keys_for_classes(module):
+def keys_for_classes(module, top_class):
"""
Gather a key -> class dictionary for all classes containing
'key' in the given module.
@@ -93,9 +94,8 @@
d = {}
for element in dir(module):
element = getattr(module, element)
- if type(element) == type(Element) \
- and issubclass(element, Element):
- print element
+ if type(element) == type(top_class) \
+ and issubclass(element, top_class):
if hasattr(element, "key") \
and type(element.key) == type(''):
d[element.key] = element
Index: navidoc/rst2any.py
diff -u navidoc/rst2any.py:1.16 navidoc/rst2any.py:1.17
--- navidoc/rst2any.py:1.16 Fri Mar 28 08:08:57 2003
+++ navidoc/rst2any.py Mon Mar 31 10:24:19 2003
@@ -21,7 +21,7 @@
# MA 02111-1307 USA
#
-#$Id: rst2any.py,v 1.16 2003/03/28 13:08:57 humppake Exp $
+#$Id: rst2any.py,v 1.17 2003/03/31 15:24:19 humppake Exp $
#
# Written by Asko Soukka
@@ -39,6 +39,8 @@
import navidoc.modules
from navidoc.utils.path import *
+
+import navidoc.mp.uml
"""
The main frontend for running Navidoc.