Example #1
0
 def _parse_cfg(cls, cfg_str):
     if len(cfg_str) == 0:
         raise ValueError("invalid config!")
     cfg_pairs = split_nest(cfg_str, sep=",")
     cfg = {}
     for p in cfg_pairs:
         kv = split_nest(p, sep="=")
         n = len(kv)
         if n == 1:
             key = kv[0]
             val = True
         elif n == 2:
             key, val = kv
             # value conversion
             vl = val.lower()
             if vl in ("true", "on", ""):
                 val = True
             elif vl in ("false", "off"):
                 val = False
         else:
             raise ValueError("not a key value pair in config!")
         if len(key) == 0:
             raise ValueError("invalid key!")
         cfg[key] = val
     return cfg
Example #2
0
 def _parse_cfg(cls, cfg_str):
   if len(cfg_str) == 0:
     raise ValueError("invalid config!")
   cfg_pairs = split_nest(cfg_str, sep=',')
   cfg = {}
   for p in cfg_pairs:
     kv = split_nest(p, sep='=')
     n = len(kv)
     if n == 1:
       key = kv[0]
       val = True
     elif n == 2:
       key, val = kv
       # value conversion
       vl = val.lower()
       if vl in ("true", "on", ""):
         val = True
       elif vl in ("false", "off"):
         val = False
     else:
       raise ValueError("not a key value pair in config!")
     if len(key) == 0:
       raise ValueError("invalid key!")
     cfg[key] = val
   return cfg
Example #3
0
 def parse(cls, spec):
     name = None
     src_list = []
     append = False
     cfg = {}
     # has optional config?
     cfg_pos = spec.find("?")
     if cfg_pos >= 0:
         cfg = cls._parse_cfg(spec[cfg_pos + 1:])
         spec = spec[0:cfg_pos]
     # src start
     col_pos = spec.find(":")
     # no colon
     if col_pos == -1:
         name = spec
     elif col_pos == len(spec) - 1:
         name = spec[:-1]
     # a:foo
     elif col_pos > 0:
         name = spec[:col_pos]
         src = spec[col_pos + 1:]
         if len(src) > 0:
             # append src list?
             if src[0] == "+":
                 append = True
                 src = src[1:]
         if len(src) > 0:
             src_list = split_nest(src, sep="+")
             if len(src_list) == 0:
                 raise ValueError("empty source list!")
             for src in src_list:
                 if len(src) == 0:
                     raise ValueError("contains empty source!")
         else:
             raise ValueError("empty source list!")
     # check name
     if name is None or name == "":
         raise ValueError("no name in spec!")
     return cls(name, src_list, cfg, append)
Example #4
0
 def parse(cls, spec):
   name = None
   src_list = []
   append = False
   cfg = {}
   # has optional config?
   cfg_pos = spec.find('?')
   if cfg_pos >= 0:
     cfg = cls._parse_cfg(spec[cfg_pos+1:])
     spec = spec[0:cfg_pos]
   # src start
   col_pos = spec.find(':')
   # no colon
   if col_pos == -1:
     name = spec
   elif col_pos == len(spec) - 1:
     name = spec[:-1]
   # a:foo
   elif col_pos > 0:
     name = spec[:col_pos]
     src = spec[col_pos+1:]
     if len(src) > 0:
       # append src list?
       if src[0] == '+':
         append = True
         src = src[1:]
     if len(src) > 0:
       src_list = split_nest(src, sep='+')
       if len(src_list) == 0:
         raise ValueError("empty source list!")
       for src in src_list:
         if len(src) == 0:
           raise ValueError("contains empty source!")
     else:
       raise ValueError("empty source list!")
   # check name
   if name is None or name == "":
     raise ValueError("no name in spec!")
   return cls(name, src_list, cfg, append)