allow config .py's to process their own locals
authorTero Marttila <terom@fixme.fi>
Thu, 04 Feb 2010 19:38:54 +0200
changeset 38 66a42168c80b
parent 37 6fd6a9fdc001
child 39 e82b6df5baa3
allow config .py's to process their own locals
fixbot/config.py
--- a/fixbot/config.py	Thu Feb 04 19:17:29 2010 +0200
+++ b/fixbot/config.py	Thu Feb 04 19:38:54 2010 +0200
@@ -22,7 +22,10 @@
         self.opts = opts
         self.defaults = defaults
 
-    def _map_name (self, name) :
+        # temp. vars
+        self.locals = {}
+
+    def optname (self, name) :
         return name.replace('_', '-')
 
     def __getitem__ (self, name) :
@@ -30,7 +33,20 @@
             Map from foo_bar -> foo-bar
         """
 
-        return self.opts[self._map_name(name)]
+        # translate
+        optname = self.optname(name)
+        
+        if optname in self.opts :
+            # normal long opt
+            return self.opts[optname]
+
+        elif name in self.locals :
+            # temp local
+            return self.locals[name]
+
+        else :
+            # unknown
+            raise NameError(name)
 
     def __setitem__ (self, name, value) :
         """
@@ -45,15 +61,15 @@
             return
         
         # translate name
-        name = self._map_name(name)
+        optname = self.optname(name)
 
-        if name in self.opts :
+        if optname in self.opts :
             # normal long opt
-            pass
+            name = optname
 
         else :
-            # fail
-            raise NameError(name)
+            # store as a local
+            store = self.locals
         
         # store
         store[name] = value