Mercurial > public > mercurial-scm > hg
diff mercurial/utils/stringutil.py @ 38576: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 | de275ab362cb |
children | e7aa113b14f7 |
line wrap: on
line diff
--- 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)