Changeset 476
- Timestamp:
- 09/08/07 05:44:09 (13 months ago)
- Location:
- trunk/thune
- Files:
-
- 4 modified
-
doc/UserManual (modified) (1 diff)
-
series.c (modified) (2 diffs)
-
tests/working/slice.good (modified) (2 diffs)
-
tests/working/slice.t (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/thune/doc/UserManual
r468 r476 645 645 646 646 "Hello world" :s 647 s 2, 6slice . ; "ello"647 s 2,4 slice . ; "ello" 648 648 s -2 slice . ; ""Hello wor" 649 649 -
trunk/thune/series.c
r475 r476 419 419 420 420 #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) 422 422 423 423 … … 456 456 case UT_INT: 457 457 end = _sliceFromEnd( ur_int(tos), res ); 458 if( end < res->series.it ) 459 end = res->series.it; 458 460 break; 459 461 460 462 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 462 467 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; 464 470 break; 465 471 -
trunk/thune/tests/working/slice.good
r458 r476 3 3 "abc 123" 4 4 true 5 "abc" 6 "" 5 7 --- logic! slice --- 6 8 "abc 123 XYZ" … … 11 13 "123" 12 14 true 13 "123 XYZ"14 true 15 "123" 16 "" 15 17 --- series! slice --- 16 18 "abc 123" -
trunk/thune/tests/working/slice.t
r458 r476 10 10 s -4 slice dup :x 11 11 x show 12 s 3 slice . 13 s 0 slice . 12 14 13 15 … … 21 23 22 24 s 5,-4 slice show 23 s 5, 0 slice show 25 s 5, 3 slice . 26 s 5, 0 slice . 24 27 25 28
