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

Reply via email to