def getTreeView(nestedList, level=0, levelPadding=''): """ Returns a string representation of the given (optionally nested) list. The parameters 'level' and 'levelPadding' are only internally used for recursion and should not be set by the user. """ Any.requireIsList(nestedList) result = '' if level > 20: # loop guard raise ValueError for i, entry in enumerate(nestedList): if Any.isText(entry): entryPadding = levelPadding + '%c---' % _getTreeChar(nestedList, i) result += "%s%s\n" % (entryPadding, entry) elif Any.isList(entry): entryPadding = levelPadding + '%c ' % _getTreeChar(nestedList, i) result += getTreeView(entry, level + 1, entryPadding) else: raise TypeError return result
def formatValue(self, value): if Any.isTuple( value ) or Any.isList( value ) or \ Any.isDict( value ): return self.formatIterable(value) else: return repr(value)
def formatIterable(self, value): Any.requireMsg( Any.isList(value) or Any.isTuple(value) or Any.isDict(value), 'unexpected datatype, value: %s' % str(value)) # use pprint module for formatting, however we do some further rework # on its output to achieve desired result self._pprintOut.seek(0) self._pprintOut.truncate() self._pprinter.pprint(value) tmp = self._pprintOut.getvalue().strip() firstChar = tmp[0] lastChar = tmp[-1] centerPart = tmp[1:-1].strip() if not value: result = '%s%s' % (firstChar, lastChar) else: result = '%s %s %s' % (firstChar, centerPart, lastChar) result = result.replace('\n', '\n' + self._indentationIter * ' ') return result