Dave Kuhlman <[EMAIL PROTECTED]> writes:
>
> I've made a few fixes. Here is the note from the README:
>
> Version 1.14e (09/18/2008)
> * Minor fix for generation of syntax error (missing parenthesis).
> * Eliminated generation of specification of superclass
> (superclass =) for undefined types.
> * Fixed error setting value in SimpleElementDict.
>
> I've attached a patch file generated against version 1.14d.
Here are a few more fixes. I've added the patch file (generated against version
1.14d). It's below.
I'll upload a new version is a day or so.
- Dave
#==============================================================
--- Orig/generateDS-1.14d/generateDS.py 2008-08-14 15:45:07.000000000 -0700
+++ generateDS.py 2008-09-22 11:04:14.000000000 -0700
@@ -75,8 +75,8 @@
import StringIO
# Default logger configuration
-#logging.basicConfig(level=logging.DEBUG,
-# format='%(asctime)s %(levelname)s %(message)s')
+## logging.basicConfig(level=logging.DEBUG,
+## format='%(asctime)s %(levelname)s %(message)s')
##from IPython.Shell import IPShellEmbed
##args = ''
@@ -116,6 +116,7 @@
NameTable = {
'type': 'typexx',
+ 'float': 'float_',
}
for kw in keyword.kwlist:
NameTable[kw] = '%sxx' % kw
@@ -600,7 +601,7 @@
self.attrs['type'] = type_val
self.type = type_val
if not self.complex:
- SimpleElementDict[self.name] = self.name
+ SimpleElementDict[self.name] = self
for child in self.children:
child.annotate_find_type()
@@ -1079,7 +1080,7 @@
self.inSchema = 0
if len(self.stack) != 1:
print '*** error stack. len(self.stack): %d' % len(self.stack)
- sys.exit(-1)
+ sys.exit(1)
logging.debug("Previous root:", self.root)
self.root = self.stack[0]
logging.debug("New root:", self.root)
@@ -1185,7 +1186,7 @@
child.getType() == NonNegativeIntegerType:
s1 = '%s showIndent(outfile, level)\n' % fill
outfile.write(s1)
- s1 = "%s outfile.write('<%%s%s>%%d</%%s%s>\\n' %% (namespace_,
%s_, namespace_)\n" % \
+ s1 = "%s outfile.write('<%%s%s>%%d</%%s%s>\\n' %% (namespace_,
%s_, namespace_))\n" % \
(fill, name, name, cleanName, )
outfile.write(s1)
elif child.getType() == BooleanType:
@@ -1659,7 +1660,7 @@
name = attrDef.getName()
cleanName = cleanupName(name)
mappedName = mapName(cleanName)
- atype = attrDef.getData_type()
+ atype = attrDef.getType()
if atype in IntegerType or \
atype == PositiveIntegerType or \
atype == NonPositiveIntegerType or \
@@ -1672,9 +1673,9 @@
s1 = " self.%s = int(attrs.get('%s').value)\n" % \
(mappedName, name)
outfile.write(s1)
- s1 = ' except ValueError:\n'
+ s1 = ' except ValueError, exp:\n'
outfile.write(s1)
- s1 = " raise ValueError('Bad integer attribute
(%s)')\n" % \
+ s1 = " raise ValueError('Bad integer attribute (%s):
%%s' %% exp)\n" % \
(name, )
outfile.write(s1)
if atype == PositiveIntegerType:
@@ -1723,9 +1724,9 @@
s1 = " self.%s = float(attrs.get('%s').value)\n" % \
(mappedName, name, )
outfile.write(s1)
- s1 = ' except:\n'
+ s1 = ' except ValueError, exp:\n'
outfile.write(s1)
- s1 = " raise ValueError('Bad float/double attribute
(%s)')\n" % \
+ s1 = " raise ValueError('Bad float/double attribute
(%s): %%s' %% exp)\n" % \
(name, )
outfile.write(s1)
elif atype == TokenType:
@@ -1822,9 +1823,10 @@
outfile.write(s1)
s1 = " ival_ = int(sval_)\n"
outfile.write(s1)
- s1 = " except ValueError:\n"
+ s1 = " except ValueError, exp:\n"
outfile.write(s1)
- s1 = " raise ValueError('requires integer -- %s' %
child_.toxml())\n"
+ s1 = " raise ValueError('requires integer (%s): %%s'
%% exp)\n" % \
+ (name, )
outfile.write(s1)
if childType == PositiveIntegerType:
s1 = " if ival_ <= 0:\n"
@@ -1902,9 +1904,10 @@
outfile.write(s1)
s1 = " fval_ = float(sval_)\n"
outfile.write(s1)
- s1 = " except ValueError:\n"
+ s1 = " except ValueError, exp:\n"
outfile.write(s1)
- s1 = " raise ValueError('requires float (or double)
-- %s' % child_.toxml())\n"
+ s1 = " raise ValueError('requires float or double
(%s): %%s' %% exp)\n" % \
+ (name, )
outfile.write(s1)
s1 = " obj_ =
self.mixedclass_(MixedContainer.CategorySimple,\n"
outfile.write(s1)
@@ -1980,11 +1983,16 @@
childType = SimpleTypeDict[childType].getBase()
elif mappedName in ElementDict:
childType = ElementDict[mappedName].getType()
- if attrCount == 0 and \
- (childType in StringType or \
- childType == TokenType or \
- childType == DateTimeType or \
- childType == DateType \
+ # fix-simpletype
+ base = child.getBase()
+ is_simple_type = (child.getSimpleType() or
+ (base and base in SimpleTypeDict))
+ if (attrCount == 0 and
+ ((childType in StringType or
+ childType == TokenType or
+ childType == DateTimeType or
+ childType == DateType
+ ) or is_simple_type)
):
s1 = ' %s child_.nodeType == Node.ELEMENT_NODE and \\\n' % \
keyword
@@ -2024,9 +2032,10 @@
outfile.write(s1)
s1 = " ival_ = int(sval_)\n"
outfile.write(s1)
- s1 = " except ValueError:\n"
+ s1 = " except ValueError, exp:\n"
outfile.write(s1)
- s1 = " raise ValueError('requires integer -- %s' %
child_.toxml())\n"
+ s1 = " raise ValueError('requires integer (%s): %%s'
%% exp)\n" % \
+ (name, )
outfile.write(s1)
if childType == PositiveIntegerType:
s1 = " if ival_ <= 0:\n"
@@ -2098,9 +2107,10 @@
outfile.write(s1)
s1 = " fval_ = float(sval_)\n"
outfile.write(s1)
- s1 = " except ValueError:\n"
+ s1 = " except ValueError, exp:\n"
outfile.write(s1)
- s1 = " raise ValueError('requires float (or double)
-- %s' % child_.toxml())\n"
+ s1 = " raise ValueError('requires float or double
(%s): %%s' %%exp)\n" % \
+ (name, )
outfile.write(s1)
if child.getMaxOccurs() > 1:
s1 = " self.%s.append(fval_)\n" % (mappedName, )
@@ -2415,8 +2425,10 @@
if base and base in ElementDict:
parent = ElementDict[base]
s2 = buildCtorParams(parent)
- s1 = ' %s.__init__(self%s)\n' % (base, s2, )
- outfile.write(s1)
+ parentName = parent.getName()
+ if parentName in AlreadyGenerated:
+ s1 = ' %s.__init__(self%s)\n' % (base, s2, )
+ outfile.write(s1)
attrDefs = element.getAttributeDefs()
for key in attrDefs:
attrDef = attrDefs[key]
@@ -2668,10 +2680,13 @@
if UserMethodsModule:
generateMemberSpec(outfile, element)
wrt(' subclass = None\n')
- if base:
- wrt(' superclass = %s\n' % (base))
- else:
- wrt(' superclass = None\n')
+ superclass_name = 'None'
+ if base and base in ElementDict:
+ parent = ElementDict[base]
+ parentName = parent.getName()
+ if parentName in AlreadyGenerated:
+ superclass_name = base
+ wrt(' superclass = %s\n' % superclass_name)
generateCtor(outfile, element)
wrt(' def factory(*args_, **kwargs_):\n')
wrt(' if %s%s.subclass:\n' % (prefix, name))
#==============================================================
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
generateds-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/generateds-users