[kernel-team] 19/86: * lib/kconfigeditor/kconfig/menu/file.py: Support choice. * lib/kconfigeditor/kconfig/package/files.py: Dump choice correctly.

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Mon Dec 21 00:34:54 UTC 2015


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch benh/kconfigeditor2
in repository kernel-team.

commit d133b923c7f025dd4580236e167bcdd88d011b9d
Author: Bastian Blank <waldi at debian.org>
Date:   Thu Mar 13 08:46:09 2008 +0000

    * lib/kconfigeditor/kconfig/menu/file.py: Support choice.
    * lib/kconfigeditor/kconfig/package/files.py: Dump choice correctly.
    
    svn path=/people/waldi/utils/kconfigeditor2/; revision=10819
---
 .../lib/kconfigeditor/kconfig/menu/file.py         | 22 ++++++++-----
 .../lib/kconfigeditor/kconfig/package/files.py     | 37 ++++++++++++++++------
 2 files changed, 41 insertions(+), 18 deletions(-)

diff --git a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py
index 157eac8..efda282 100644
--- a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py
+++ b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/menu/file.py
@@ -4,10 +4,16 @@ class File(list):
     def __init__(self, filename):
         self.filename = filename
 
+class FileChoice(list):
+    def __init__(self, prompt = None):
+        self.prompt = prompt
+
+    def __repr__(self):
+        return "<%s(%r)>" % (self.__class__.__name__, self.prompt)
+
 class FileConfig(object):
-    def __init__(self, name):
-        self.name = name
-        self.prompt = None
+    def __init__(self, name, prompt = None):
+        self.name, self.prompt = name, prompt
 
     def __repr__(self):
         return "<%s(%r, %r)>" % (self.__class__.__name__, self.name, self.prompt)
@@ -35,8 +41,8 @@ class Parser(object):
             else:
                 try:
                     stack.top().process_line(line)
-                except:
-                    raise Exception("Can't parse: '%s' (%d)" % (line, lineno))
+                except Exception, e:
+                    raise Exception("Can't parse: '%s' (%d): %s" % (line, lineno, e))
             lineno += 1
         return stack.top().process_stop(lineno, 0)
 
@@ -178,9 +184,9 @@ class _BlockRoot(
 class _BlockChoice(_BlockObject, _BlockContainerCommon):
     def __init__(self, parent):
         super(_BlockChoice, self).__init__(parent)
-        # TODO
-        self.entry = parent.entry
-        _BlockConfigData(self, FileConfig(None))
+        self.entry = FileChoice()
+        parent.entry.append(self.entry)
+        _BlockConfigData(self, self.entry)
 
     def process_default(self, text, ind):
         _BlockType(self, text, ind)
diff --git a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
index 312bc9c..5b9c9ca 100644
--- a/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
+++ b/utils/kconfigeditor2/lib/kconfigeditor/kconfig/package/files.py
@@ -2,7 +2,7 @@ import os
 
 from debian_linux.config import ConfigCoreHierarchy
 
-from kconfigeditor.kconfig.menu.file import FileConfig
+from kconfigeditor.kconfig.menu.file import FileChoice, FileConfig
 
 class Files(dict):
     def __init__(self, root):
@@ -110,19 +110,36 @@ class File(dict):
 
         self.read(fd)
 
+    def _dump_file_choice(self, processed, ignored, f):
+        ret = []
+        for i in f:
+            if isinstance(i, FileConfig):
+                ret.extend(self._dump_file_config(processed, ignored, i))
+        if ret:
+            ret.insert(0, "## choice: %s" % f.prompt)
+            ret.insert(-1, '## end choice')
+        return ret
+
+    def _dump_file_config(self, processed, ignored, i):
+        ret = []
+        e = self.get(i.name, None)
+        if e is not None:
+            if i.name in processed:
+                pass
+            elif i.prompt:
+                processed.add(i.name)
+                ret.append(e)
+            else:
+                ignored.add(i.name)
+        return ret
+
     def _dump_file(self, processed, ignored, f):
         ret = []
         for i in f:
             if isinstance(i, FileConfig):
-                e = self.get(i.name, None)
-                if e is not None:
-                    if i.name in processed:
-                        pass
-                    elif i.prompt:
-                        processed.add(i.name)
-                        ret.append(e)
-                    else:
-                        ignored.add(i.name)
+                ret.extend(self._dump_file_config(processed, ignored, i))
+            elif isinstance(i, FileChoice):
+                ret.extend(self._dump_file_choice(processed, ignored, i))
         if ret:
             ret[0:0] = ["##", "## file: %s" % f.filename, "##"]
             ret.append('')

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/kernel-team.git



More information about the Kernel-svn-changes mailing list