[prev in list] [next in list] [prev in thread] [next in thread]
List: git
Subject: Re: [StGit PATCH 4/5] Simplify editor selection logic
From: Karl =?iso-8859-1?Q?Hasselstr=F6m?= <kha () treskal ! com>
Date: 2008-01-30 17:57:57
Message-ID: 20080130175757.GA30529 () diana ! vm ! bytemark ! co ! uk
[Download RAW message or body]
On 2008-01-30 09:55:18 -0500, Jay Soffian wrote:
> On Jan 30, 2008 2:28 AM, Karl Hasselström <kha@treskal.com> 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@treskal.com
www.treskal.com/kalle
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic