# HG changeset patch # User Mathias De Maré # Date 1472483949 -7200 # Node ID e7cacb45c4beec972ef49459eecb873d6b63205a # Parent e40343ce9c4c4819ea5669abb3447d5c031a8270 formatter: introduce isplain() to replace (the inverse of) __nonzero__() (API) V2: also remove and replace __nonzero__ diff -r e40343ce9c4c -r e7cacb45c4be mercurial/commands.py --- a/mercurial/commands.py Tue Aug 30 15:55:07 2016 -0400 +++ b/mercurial/commands.py Mon Aug 29 17:19:09 2016 +0200 @@ -441,12 +441,12 @@ if linenumber and (not opts.get('changeset')) and (not opts.get('number')): raise error.Abort(_('at least one of -n/-c is required for -l')) - if fm: + if fm.isplain(): + def makefunc(get, fmt): + return lambda x: fmt(get(x)) + else: def makefunc(get, fmt): return get - else: - def makefunc(get, fmt): - return lambda x: fmt(get(x)) funcmap = [(makefunc(get, fmt), sep) for op, sep, get, fmt in opmap if opts.get(op)] funcmap[0] = (funcmap[0][0], '') # no separator in front of first column @@ -476,12 +476,12 @@ for f, sep in funcmap: l = [f(n) for n, dummy in lines] - if fm: - formats.append(['%s' for x in l]) - else: + if fm.isplain(): sizes = [encoding.colwidth(x) for x in l] ml = max(sizes) formats.append([sep + ' ' * (ml - w) + '%s' for w in sizes]) + else: + formats.append(['%s' for x in l]) pieces.append(l) for f, p, l in zip(zip(*formats), zip(*pieces), lines): @@ -1185,7 +1185,7 @@ fm = ui.formatter('bookmarks', opts) hexfn = fm.hexfunc marks = repo._bookmarks - if len(marks) == 0 and not fm: + if len(marks) == 0 and fm.isplain(): ui.status(_("no bookmarks set\n")) for bmark, n in sorted(marks.iteritems()): active = repo._activebookmark @@ -4442,10 +4442,10 @@ def display(fm, fn, ctx, pstates, states): rev = ctx.rev() - if fm: + if fm.isplain(): + formatuser = ui.shortuser + else: formatuser = str - else: - formatuser = ui.shortuser if ui.quiet: datefmt = '%Y-%m-%d' else: @@ -5695,10 +5695,10 @@ pathitems = sorted(ui.paths.iteritems()) fm = ui.formatter('paths', opts) - if fm: + if fm.isplain(): + hidepassword = util.hidepassword + else: hidepassword = str - else: - hidepassword = util.hidepassword if ui.quiet: namefmt = '%s\n' else: diff -r e40343ce9c4c -r e7cacb45c4be mercurial/formatter.py --- a/mercurial/formatter.py Tue Aug 30 15:55:07 2016 -0400 +++ b/mercurial/formatter.py Mon Aug 29 17:19:09 2016 +0200 @@ -57,10 +57,6 @@ def __exit__(self, exctype, excvalue, traceback): if exctype is None: self.end() - def __nonzero__(self): - '''return False if we're not doing real templating so we can - skip extra work''' - return True def _showitem(self): '''show a formatted item once all data is collected''' pass @@ -96,6 +92,9 @@ def plain(self, text, **opts): '''show raw text for non-templated mode''' pass + def isplain(self): + '''check for plain formatter usage''' + return False def nested(self, field): '''sub formatter to store nested data in the specified field''' self._item[field] = data = [] @@ -142,8 +141,6 @@ self.hexfunc = hex else: self.hexfunc = short - def __nonzero__(self): - return False def startitem(self): pass def data(self, **data): @@ -156,6 +153,8 @@ self._ui.write(deftext % fielddata, **opts) def plain(self, text, **opts): self._ui.write(text, **opts) + def isplain(self): + return True def nested(self, field): # nested data will be directly written to ui return self