def upwardsRecursiveDescription()

in fbchisellldbviewhelpers.py [0:0]


def upwardsRecursiveDescription(view, maxDepth=0):
    if not fb.evaluateBooleanExpression(
        "[(id)%s isKindOfClass:(Class)[UIView class]]" % view
    ) and not fb.evaluateBooleanExpression(
        "[(id)%s isKindOfClass:(Class)[NSView class]]" % view
    ):
        return None

    currentView = view
    recursiveDescription = []
    depth = 0

    while currentView and (maxDepth <= 0 or depth <= maxDepth):
        depth += 1

        viewDescription = fb.evaluateExpressionValue(
            "(id)[%s debugDescription]" % (currentView)
        ).GetObjectDescription()
        currentView = fb.evaluateExpression("(void*)[%s superview]" % (currentView))
        try:
            if int(currentView, 0) == 0:
                currentView = None
        except Exception:
            currentView = None

        if viewDescription:
            recursiveDescription.insert(0, viewDescription)

    if not len(viewDescription):
        return None

    currentPrefix = ""
    builder = ""
    for viewDescription in recursiveDescription:
        builder += currentPrefix + viewDescription + "\n"
        currentPrefix += "   | "

    return builder