コード例 #1
0
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
コード例 #2
0
    def formatValue(self, value):

        if Any.isTuple( value ) or Any.isList( value ) or \
             Any.isDict( value ):
            return self.formatIterable(value)

        else:
            return repr(value)
コード例 #3
0
    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