Mercurial > hg-stable
changeset 38577:a3130208db1c
stringutil: move _formatsetrepr() from smartset
I'll add a matcher subclass wrapping a boolean function, which will use
buildrepr() to provide debugging information in a similar way to
smartset.filteredset.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 10 Jun 2018 17:19:31 +0900 |
parents | 152f4822d210 |
children | 76838305b9dd |
files | mercurial/smartset.py mercurial/utils/stringutil.py |
diffstat | 2 files changed, 28 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/smartset.py Sun Jun 10 17:07:29 2018 +0900 +++ b/mercurial/smartset.py Sun Jun 10 17:19:31 2018 +0900 @@ -13,29 +13,9 @@ pycompat, util, ) - -def _formatsetrepr(r): - """Format an optional printable representation of a set - - ======== ================================= - type(r) example - ======== ================================= - tuple ('<not %r>', other) - bytes '<branch closed>' - callable lambda: '<branch %r>' % sorted(b) - object other - ======== ================================= - """ - if r is None: - return '' - elif isinstance(r, tuple): - return r[0] % pycompat.rapply(pycompat.maybebytestr, r[1:]) - elif isinstance(r, bytes): - return r - elif callable(r): - return r() - else: - return pycompat.byterepr(r) +from .utils import ( + stringutil, +) def _typename(o): return pycompat.sysbytes(type(o).__name__).lstrip('_') @@ -392,7 +372,7 @@ @encoding.strmethod def __repr__(self): d = {None: '', False: '-', True: '+'}[self._ascending] - s = _formatsetrepr(self._datarepr) + s = stringutil.buildrepr(self._datarepr) if not s: l = self._list # if _list has been built from a set, it might have a different @@ -514,7 +494,7 @@ @encoding.strmethod def __repr__(self): xs = [pycompat.byterepr(self._subset)] - s = _formatsetrepr(self._condrepr) + s = stringutil.buildrepr(self._condrepr) if s: xs.append(s) return '<%s %s>' % (_typename(self), ', '.join(xs))
--- a/mercurial/utils/stringutil.py Sun Jun 10 17:07:29 2018 +0900 +++ b/mercurial/utils/stringutil.py Sun Jun 10 17:19:31 2018 +0900 @@ -90,6 +90,29 @@ p0, p1 = q0, q1 return '\n'.join(' ' * l + s for l, s in lines) +def buildrepr(r): + """Format an optional printable representation from unexpanded bits + + ======== ================================= + type(r) example + ======== ================================= + tuple ('<not %r>', other) + bytes '<branch closed>' + callable lambda: '<branch %r>' % sorted(b) + object other + ======== ================================= + """ + if r is None: + return '' + elif isinstance(r, tuple): + return r[0] % pycompat.rapply(pycompat.maybebytestr, r[1:]) + elif isinstance(r, bytes): + return r + elif callable(r): + return r() + else: + return pycompat.byterepr(r) + def binary(s): """return true if a string is binary data""" return bool(s and '\0' in s)