[kernel] r10804 - people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu

Bastian Blank waldi at alioth.debian.org
Tue Mar 11 16:57:08 UTC 2008


Author: waldi
Date: Tue Mar 11 16:57:06 2008
New Revision: 10804

Log:
lib/kconfigeditor/kconfig/menu/file.py: Update.


Modified:
   people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py

Modified: people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py
==============================================================================
--- people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py	(original)
+++ people/waldi/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py	Tue Mar 11 16:57:06 2008
@@ -52,7 +52,7 @@
             else:
                 stack.top().process_line(line)
             lineno += 1
-        return stack.top().stop(lineno, 0)
+        return stack.top().process_stop(lineno, 0)
 
 class _Text(object):
     __slots__ = "text", "lineno", "column"
@@ -116,7 +116,7 @@
     split_rules = r"""
 ^
     (?P<ind>\s*)
-    (---)?(?P<word>[a-z_]+)(---)?
+    (---\s*)?(?P<word>[a-z_]+)(\s*---)?
     (
         \s*"(?P<rest2>.+)"
         |
@@ -158,7 +158,7 @@
 
 class _BlockContainerDepends(_BlockContainer):
     def process_depends(self, text, ind):
-        _BlockDepends(self, ind)
+        _BlockType(self, text, ind)
 
 class _BlockContainerMenu(_BlockContainer):
     def process_menu(self, text, ind):
@@ -166,28 +166,11 @@
 
 class _BlockObject(_Element):
     def __getattr__(self, name):
-        def ret(*args):
-            return self.recurse(name, *args)
-        return ret
-
-class _BlockObjectIndentation(_BlockObject):
-    split_rules = r"^(?P<ind>\s+)(?P<rest>.*)$"
-    split_re = re.compile(split_rules)
-
-    def __init__(self, parent, ind):
-        super(_BlockObjectIndentation, self).__init__(parent)
-        self._indentation = ind
-
-    def process_line(self, text):
-        match = self.split_re.match(text)
-        if not match:
-            return self.recurse('process_line', text)
-        l = len(match.group('ind'))
-        if self._indentation < l:
-            return self.recurse('process_line', text)
-
-    def process_line_empty(self):
-        pass
+        if name.startswith('process_'):
+            def ret(*args):
+                return self.recurse(name, *args)
+            return ret
+        raise AttributeError(name)
 
 class _BlockRoot(
     _BlockContainerChoice,
@@ -204,13 +187,14 @@
     def process_mainmenu(self, text, ind):
         pass
 
-    def stop(self, lineno, column):
+    def process_stop(self, lineno, column):
         self.stack.pop(self)
         return self.entry
 
 class _BlockChoice(_BlockObject, _BlockContainerCommon):
     def __init__(self, parent):
         super(_BlockChoice, self).__init__(parent)
+        # TODO
         self.entry = parent.entry
         _BlockConfigData(self)
 
@@ -274,11 +258,32 @@
         self.entry = FileConfig(name)
         parent.entry.append(self.entry)
 
-class _BlockDepends(_BlockObjectIndentation):
-    pass
+class _BlockHelp(_BlockObject):
+    split_rules = r"^(?P<ind>\s+)(?P<rest>.*)$"
+    split_re = re.compile(split_rules)
+
+    def __init__(self, parent, ind):
+        super(_BlockHelp, self).__init__(parent)
+        self.indentation_init = len(ind)
+        self.indentation = None
+
+    def process_line(self, text):
+        match = self.split_re.match(text)
+        if match:
+            ind = match.group('ind').expandtabs()
+            l = len(ind)
+            if l >= self.indentation_init:
+                if self.indentation is None:
+                    self.indentation = l
+                    return
+                elif l >= self.indentation:
+                    return
+
+        return self.recurse('process_line', text)
+
+    def process_line_empty(self):
+        pass
 
-class _BlockHelp(_BlockObjectIndentation):
-    pass
 
 class _BlockIf(_BlockObject,
     _BlockContainerChoice,
@@ -312,6 +317,9 @@
     def __init__(self, parent, name):
         super(_BlockMenuconfig, self).__init__(parent, "")
         self.entry = parent.entry
+        # TODO
+        entry = FileConfig(name)
+        parent.entry.append(entry)
         _BlockConfigData(self)
 
 class _BlockSource(_BlockObject):



More information about the Kernel-svn-changes mailing list