[Zodb-checkins] CVS: Packages/ZConfig - schema.py:1.1.2.26

Fred L. Drake, Jr. fred@zope.com
Wed, 18 Dec 2002 17:22:17 -0500


Update of /cvs-repository/Packages/ZConfig
In directory cvs.zope.org:/tmp/cvs-serv16428

Modified Files:
      Tag: zconfig-schema-devel-branch
	schema.py 
Log Message:
Some internal refactoring for better consistency.


=== Packages/ZConfig/schema.py 1.1.2.25 => 1.1.2.26 ===
--- Packages/ZConfig/schema.py:1.1.2.25	Wed Dec 18 16:25:32 2002
+++ Packages/ZConfig/schema.py	Wed Dec 18 17:22:16 2002
@@ -204,7 +204,7 @@
         sectiontype = self.get_sectiontype(attrs)
         handler = self.get_handler(attrs)
         min = self.get_required(attrs) and 1 or 0
-        any, name, attribute = self.get_name_info(attrs)
+        any, name, attribute = self.get_name_info(attrs, "section")
         if any or not name:
             self.error("section name may not be '*' or '+'")
         section = info.SectionInfo(name, sectiontype,
@@ -218,7 +218,7 @@
     def start_multisection(self, attrs):
         sectiontype = self.get_sectiontype(attrs)
         min, max = self.get_ordinality(attrs)
-        any, name, attribute = self.get_name_info(attrs)
+        any, name, attribute = self.get_name_info(attrs, "multisection")
         if any not in ("*", "+"):
             self.error("multisection must specify '*' or '+' for the name")
         handler = self.get_handler(attrs)
@@ -247,18 +247,11 @@
         self._stack.pop().finish()
 
     def get_key_info(self, attrs, element):
-        name = attrs.get("name")
+        any, name, attribute = self.get_name_info(attrs, element)
         if not name:
             self.error(element + " name may not be omitted or empty")
-        # run the keytype converter to make sure this is a valid key
-        name = self._stack[-1].keytype(name)
         datatype = self.get_datatype(attrs, "datatype", "str")
         handler = self.get_handler(attrs)
-        attribute = attrs.get("attribute")
-        if attribute is not None:
-            attribute = self._identifier(attribute)
-        else:
-            attribute = self._identifier(name.replace("-", "_"))
         return name, datatype, handler, attribute
 
     def start_key(self, attrs):
@@ -289,10 +282,10 @@
     def end_multikey(self):
         self._stack.pop().finish()
 
-    def get_name_info(self, attrs):
+    def get_name_info(self, attrs, element):
         name = attrs.get("name")
         if not name:
-            self.error("section name must be specified and non-empty")
+            self.error(element + " name must be specified and non-empty")
         aname = attrs.get("attribute")
         if aname:
             aname = self._identifier(aname)
@@ -303,6 +296,8 @@
                     " when using '*' or '+' for a section name")
             return name, None, aname
         else:
+            # run the keytype converter to make sure this is a valid key
+            name = self._stack[-1].keytype(name)
             if not aname:
                 aname = self._basic_key(name)
                 aname = self._identifier(aname.replace('-', '_'))