def readFoldedLine()

in src/pycalendar/utils.py [0:0]


def readFoldedLine(ins, lines):

    # If line2 already has data, transfer that into line1
    if lines[1] is not None:
        lines[0] = lines[1]
    else:
        # Fill first line
        try:
            myline = ins.readline()
            if len(myline) == 0:
                raise ValueError("Folding: empty first line")
            if myline[-1] == "\n":
                if myline[-2] == "\r":
                    lines[0] = myline[:-2]
                else:
                    lines[0] = myline[:-1]
            elif myline[-1] == "\r":
                lines[0] = myline[:-1]
            else:
                lines[0] = myline
        except IndexError:
            lines[0] = ""
        except:
            lines[0] = None
            return False

    # Now loop looking ahead at the next line to see if it is folded
    while True:
        # Get next line
        try:
            myline = ins.readline()
            if len(myline) == 0:
                raise ValueError("Folding: empty next line")
            if myline[-1] == "\n":
                if myline[-2] == "\r":
                    lines[1] = myline[:-2]
                else:
                    lines[1] = myline[:-1]
            elif myline[-1] == "\r":
                lines[1] = myline[:-1]
            else:
                lines[1] = myline
        except IndexError:
            lines[1] = ""
        except:
            lines[1] = None
            return True

        if not lines[1]:
            return True

        # Does it start with a space => folded
        if lines[1][0].isspace():
            # Copy folded line (without space) to current line and cycle
            # for more
            lines[0] = lines[0] + lines[1][1:]
        else:
            # Not folded - just exit loop
            break

    return True