mirror of
https://github.com/janet-lang/janet
synced 2025-06-23 08:54:12 +00:00
slight refactoring
This commit is contained in:
parent
d8b45ecd61
commit
8a70fb95b5
@ -433,24 +433,21 @@ JANET_CORE_FN(janet_core_range,
|
|||||||
"a range [start, end). With three, returns a range with optional step size.") {
|
"a range [start, end). With three, returns a range with optional step size.") {
|
||||||
janet_arity(argc, 1, 3);
|
janet_arity(argc, 1, 3);
|
||||||
int32_t start = 0, stop = 0, step = 1, count = 0;
|
int32_t start = 0, stop = 0, step = 1, count = 0;
|
||||||
switch (argc) {
|
if (argc == 3) {
|
||||||
case 1:
|
start = janet_getinteger(argv, 0);
|
||||||
stop = janet_getinteger(argv, 0);
|
stop = janet_getinteger(argv, 1);
|
||||||
count = stop;
|
step = janet_getinteger(argv, 2);
|
||||||
break;
|
count = (step > 0) ? (stop - start - 1) / step + 1 :
|
||||||
case 2:
|
((step < 0) ? (stop - start + 1) / step + 1 : 0);
|
||||||
start = janet_getinteger(argv, 0);
|
} else if (argc == 2) {
|
||||||
stop = janet_getinteger(argv, 1);
|
start = janet_getinteger(argv, 0);
|
||||||
count = stop - start;
|
stop = janet_getinteger(argv, 1);
|
||||||
break;
|
count = stop - start;
|
||||||
case 3:
|
} else {
|
||||||
start = janet_getinteger(argv, 0);
|
stop = janet_getinteger(argv, 0);
|
||||||
stop = janet_getinteger(argv, 1);
|
count = stop;
|
||||||
step = janet_getinteger(argv, 2);
|
|
||||||
count = (step > 0) ? (stop - start - 1) / step + 1 :
|
|
||||||
((step < 0) ? (stop - start + 1) / step + 1 : 0);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
count = (count > 0) ? count : 0;
|
||||||
JanetArray *array = janet_array(count);
|
JanetArray *array = janet_array(count);
|
||||||
for (int32_t i = 0; i < count; i++) {
|
for (int32_t i = 0; i < count; i++) {
|
||||||
array->data[i] = janet_wrap_number(start + i * step);
|
array->data[i] = janet_wrap_number(start + i * step);
|
||||||
|
@ -169,6 +169,7 @@
|
|||||||
(assert (deep= (range 17 0 -4) @[17 13 9 5 1]) "(range 17 0 -4)")
|
(assert (deep= (range 17 0 -4) @[17 13 9 5 1]) "(range 17 0 -4)")
|
||||||
|
|
||||||
(assert (= (length (range 10)) 10) "(range 10)")
|
(assert (= (length (range 10)) 10) "(range 10)")
|
||||||
|
(assert (= (length (range -10)) 0) "(range -10)")
|
||||||
(assert (= (length (range 1 10)) 9) "(range 1 10)")
|
(assert (= (length (range 1 10)) 9) "(range 1 10)")
|
||||||
|
|
||||||
(end-suite)
|
(end-suite)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user