1
2 limit: func [
3 "Make sure val falls between lower and upper bounds, inclusive; uses length for series values."
4 val
5 lower [integer!]
6 upper [integer!]
7 /show "For series values, show extension/truncation (dot/none for extension, 3 dots for truncation)."
8 /local fill
9 ][
10 either not series? val [max min val upper lower] [
11 either all [
12 upper >= length? val
13 lower <= length? val
14 ] [val] [
15 ; If extending the series, use NONE as the fill value, so the
16 ; block can still be processed easily.
17 fill: either any-string? val ["."] [none]
18 head either lower >= length? val [
19 insert/only/dup tail val fill subtract lower length? val
20 ][
21 clear skip val upper
22 either show [change/dup skip tail val -3 '. 3] [val]
23 ]
24 ]
25 ]
26 ]