]> mj.ucw.cz Git - eval.git/blobdiff - t/moe/config.py
New ConfigError subclasses, move re_VARNAME
[eval.git] / t / moe / config.py
index 95cc316b4972cfb5020a24bfba4bba94752f10f9..a96fdb6207e2dea03870934573b26f39fcff001e 100644 (file)
@@ -46,6 +46,8 @@ class MoeConfig:
                    k = k[:-1]
                    if not self.vars.has_key(k):
                        self.vars[k] = [("a","")];
+                   else:
+                       self.vars[k] += [("s"," ")]
                else:
                    self.vars[k] = []
                if not key_pattern.match(k):
@@ -121,31 +123,21 @@ class MoeConfigStack:
     """Stack of configuration files."""
 
     def __init__(self, base=None):
-       ## FIXME: Do we need to duplicate the config files themselves?
         if base:
            self.stk = base.stk[:]
        else:
            self.stk = []
        self.in_progress = {}
-       self.reset_cache()
-
-    def reset_cache(self):
-       self.cache = {}
 
     def push(self, cfg):
        self.stk.append(cfg)
-       self.reset_cache()
 
     def __getitem__(self, k):
-       if self.cache.has_key(k):
-           return self.cache[k]
         if self.in_progress.has_key(k):
            raise MoeConfigEvalError, "Definition of $%s is recursive" % k;
        self.in_progress[k] = 1;
         v = self.do_get(k, len(self.stk)-1)
        del self.in_progress[k]
-       ## FIXME: This is disabled, because the immutability invariant is broken!
-       # self.cache[k] = v
        return v
 
     def do_get(self, k, pos):
@@ -155,6 +147,8 @@ class MoeConfigStack:
                new = cfg.vars[k]
                if len(new) > 0 and new[0][0] == "a":
                    v = self.do_get(k, pos-1)
+                   if v != "" and not v.endswith(" "):
+                       v += " "
                else:
                    v = ""
                for op,arg in new:
@@ -205,7 +199,6 @@ class MoeConfigStack:
            else:
                newstk.append(cfg)
        self.stk = newstk
-       self.reset_cache()
 
 def parse_overrides(argv):
     cfg = None