Changeset 476

Show
Ignore:
Timestamp:
09/08/07 05:44:09 (13 months ago)
Author:
krobillard
Message:

Tweaked slice behavior.

Location:
trunk/thune
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • trunk/thune/doc/UserManual

    r468 r476  
    645645 
    646646    "Hello world" :s 
    647     s 2,6 slice .          ; "ello" 
     647    s 2,4 slice .          ; "ello" 
    648648    s -2 slice .           ; ""Hello wor" 
    649649 
  • trunk/thune/series.c

    r475 r476  
    419419 
    420420#define _sliceFromEnd(n,cell) \ 
    421     ((n < 1) ? ur_seriesEnd(cell) + n : cell->series.it + n - 1) 
     421    ((n < 0) ? ur_seriesEnd(cell) + n : cell->series.it + n) 
    422422 
    423423 
     
    456456        case UT_INT: 
    457457            end = _sliceFromEnd( ur_int(tos), res ); 
     458            if( end < res->series.it ) 
     459                end = res->series.it; 
    458460            break; 
    459461 
    460462        case UT_COORD: 
    461             // TODO: Handle negative and incorrect order. 
     463            res->series.it += tos->coord.elem[0] - 1; 
     464            if( res->series.it < 0 ) 
     465                res->series.it = 0; 
     466 
    462467            end = _sliceFromEnd( tos->coord.elem[1], res ); 
    463             res->series.it += tos->coord.elem[0] - 1; 
     468            if( end < res->series.it ) 
     469                end = res->series.it; 
    464470            break; 
    465471 
  • trunk/thune/tests/working/slice.good

    r458 r476  
    33"abc 123" 
    44true 
     5"abc" 
     6"" 
    57--- logic! slice --- 
    68"abc 123 XYZ" 
     
    1113"123" 
    1214true 
    13 "123 XYZ" 
    14 true 
     15"123" 
     16"" 
    1517--- series! slice --- 
    1618"abc 123" 
  • trunk/thune/tests/working/slice.t

    r458 r476  
    1010s -4 slice dup :x 
    1111x show 
     12s 3 slice . 
     13s 0 slice . 
    1214 
    1315 
     
    2123 
    2224s 5,-4 slice show 
    23 s 5, 0 slice show 
     25s 5, 3 slice . 
     26s 5, 0 slice . 
    2427 
    2528