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 generateds-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/generateds-users