On 2008-01-30 09:55:18 -0500, Jay Soffian wrote: > On Jan 30, 2008 2:28 AM, Karl Hasselström <kha@xxxxxxxxxxx> wrote: > > You could write it kind of like this: > > > > def e(key): return os.environ.get(key, None) > > def c(key): return config.get(key) > > editor = filter(None, [e('GIT_EDITOR'), c('stgit.editor'), c('core.editor'), > > e('VISUAL'), e('EDITOR'), 'vi'])[0] > > Too clever by half if you ask me. Why not just: > > editor = (os.environ.get('GIT_EDITOR') or > config.get('stgit.editor') or > config.get('core.editor') or > os.environ.get('VISUAL') or > os.environ.get('EDITOR') or > 'vi') > > And be done with it? Yes. It's more repetitive, but not much longer. With only five options and one default -- if there were more, my version would be nicer (IMHO). > > Of course, if we're going to have code like this in several places > > (you already mentioned the pager), we could build a function like > > this: > > > > editor = get_config(['GIT_EDITOR', 'stgit.editor', 'core.editor', > > 'VISUAL', 'EDITOR'], default = 'vi') > > > > that would differentiate between env variables and conf keys by > > looking for dots in the name or something. > > def get_config(keys, default=None): > rv = default > for k in keys: > if '.' in k: > d = config > else: > d = os.environ > if k in d: > rv = d[k] > break > return rv 'config' isn't a dict, so you have to use config.get, and you can't use 'k in config'. But otherwise yes. So something like this maybe: def get_config(keys, default = None): rv = None for k in keys: if '.' in k: rv = config.get(k) else: rv = os.environ.get(k, None) if rv != None: return rv return default -- Karl Hasselström, kha@xxxxxxxxxxx www.treskal.com/kalle - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html