def pens_updown_to_papr(lst):
    '''Converts all PU((x1, y1, x2, y2) and PD(x1, y1, x2, y2) found in `lst`
    into (PU( ), PA(x1, y1, x2, y2)) pair sequences.
    The function removes the coordinates from PU and PD and places them in
    PR or PA, whatever was last found in lst prior to a PU or PD.'''

    if not isinstance(lst, (list, tuple)):
        raise TypeError('`lst` argument must be a list or tuple.')

    result = [ ]
    last_penplot = None
    for e in lst:
        if isinstance(e, (PU, PD)):
            if len(e.xy) > 0:
                if last_penplot is None:
                    msg = "*** WARNING: %s with coordinates found without prior PA or PR. PA assumed." % e
                    print(msg)
                    last_penplot = PA( )
                last_penplot.xy = e.xy
                ec = copy.copy(e)
                ec.xy = None
                result.append(ec)
                result.append(copy.copy(last_penplot))
            else:
                result.append(e)
        else:
            if isinstance(e, PR):
                last_penplot = PR( )
            elif isinstance(e, PA):
                last_penplot = PA( )
            result.append(e)

    return result
def pens_updown_to_papr(lst):
    """Converts all PU((x1, y1, x2, y2) and PD(x1, y1, x2, y2) found in `lst`
    into (PU( ), PA(x1, y1, x2, y2)) pair sequences.
    The function removes the coordinates from PU and PD and places them in
    PR or PA, whatever was last found in lst prior to a PU or PD."""

    if not isinstance(lst, (list, tuple)):
        raise TypeError("`lst` argument must be a list or tuple.")

    result = []
    last_penplot = None
    for e in lst:
        if isinstance(e, (PU, PD)):
            if len(e.xy) > 0:
                if last_penplot is None:
                    msg = (
                        "*** WARNING: %s with coordinates found without prior PA or PR. PA assumed."
                        % e)
                    print(msg)
                    last_penplot = PA()
                last_penplot.xy = e.xy
                ec = copy.copy(e)
                ec.xy = None
                result.append(ec)
                result.append(copy.copy(last_penplot))
            else:
                result.append(e)
        else:
            if isinstance(e, PR):
                last_penplot = PR()
            elif isinstance(e, PA):
                last_penplot = PA()
            result.append(e)

    return result
Exemple #3
0
def pens_updown_to_papr(lst):
    '''Converts all PU((x1, y1, x2, y2) and PD(x1, y1, x2, y2) found in `lst`
    into (PU( ), PA(x1, y1, x2, y2)) pair sequences.
    The function removes the coordinates from PU and PD and places them in
    PR or PA, whatever was last found in lst prior to a PU or PD.'''

    if not isinstance(lst, (list, tuple)):
        raise TypeError('`lst` argument must be a list or tuple.')

    result = []
    last_move = None

    pen_down = False
    pen_up = True

    for e in lst:
        if isinstance(e, (PU, PD)):

            if len(e.xy) > 0:
                if last_move is None:
                    msg = "*** WARNING: %s with coordinates found without prior PA or PR. PA assumed." % e
                    print(msg)
                    last_move = PA()

                new_move = None

                if isinstance(last_move, PA):
                    new_move = PA()
                elif isinstance(last_move, PR):
                    new_move = PR()

                new_move.xy = e.xy

                up_down_command = None

                if isinstance(e, PU):
                    if pen_down:
                        up_down_command = PU()
                        result.append(up_down_command)
                        pen_up = True
                        pen_down = False

                elif isinstance(e, PD):
                    if pen_up:
                        up_down_command = PD()
                        result.append(up_down_command)
                        pen_down = True
                        pen_up = False

                result.append(new_move)

                last_move = new_move
            else:
                if isinstance(e, PU):
                    if pen_down:
                        result.append(e)
                        pen_up = True
                elif isinstance(e, PD):
                    if pen_up:
                        result.append(e)
                        pen_down = True
        else:
            if isinstance(e, PR):
                last_move = PR()
            elif isinstance(e, PA):
                last_move = PA()
            result.append(e)

    return result
def pens_updown_to_papr(lst):
    '''Converts all PU((x1, y1, x2, y2) and PD(x1, y1, x2, y2) found in `lst`
    into (PU( ), PA(x1, y1, x2, y2)) pair sequences.
    The function removes the coordinates from PU and PD and places them in
    PR or PA, whatever was last found in lst prior to a PU or PD.'''

    if not isinstance(lst, (list, tuple)):
        raise TypeError('`lst` argument must be a list or tuple.')

    result = [ ]
    last_move = None
    
    pen_down = False
    pen_up = True
    
    for e in lst:
        if isinstance(e, (PU, PD)):
                
            if len(e.xy) > 0:
                if last_move is None:
                    msg = "*** WARNING: %s with coordinates found without prior PA or PR. PA assumed." % e
                    print(msg)
                    last_move = PA( )

                new_move = None
                
                if isinstance(last_move, PA):
                    new_move = PA()
                elif isinstance(last_move, PR):
                    new_move = PR()
                    
                new_move.xy = e.xy
                
                up_down_command = None
                
                if isinstance(e, PU):
                    if pen_down:
                        up_down_command = PU( )
                        result.append(up_down_command)
                        pen_up = True
                        pen_down = False
                        
                elif isinstance(e, PD):
                    if pen_up:
                        up_down_command = PD( )
                        result.append(up_down_command)
                        pen_down = True
                        pen_up = False

                    
                result.append(new_move)
                
                last_move = new_move
            else:
                if isinstance(e, PU):
                    if pen_down:
                        result.append(e)
                        pen_up = True
                elif isinstance(e, PD):
                    if pen_up:
                        result.append(e)
                        pen_down = True
        else:
            if isinstance(e, PR):
                last_move = PR( )
            elif isinstance(e, PA):
                last_move = PA( )
            result.append(e)

    return result