UNPKG

calcium-lang

Version:
45 lines 1.2 kB
import { retrieveValue } from "../util"; import createIterator from "../factory/iterator"; import { createInt } from "../factory"; /** * built-in `range()` function * @param args start, stop, step * @param env * @returns a range object (i.e. iterator) */ const range = (args, env) => { let start, stop, step; if (args.length === 1) { start = 0; stop = retrieveValue(args[0], env); step = 1; } else if (args.length === 2) { start = retrieveValue(args[0], env); stop = retrieveValue(args[1], env); step = 1; } else { start = retrieveValue(args[0], env); stop = retrieveValue(args[1], env); step = retrieveValue(args[2], env); } let counter = null; const rangeObject = createIterator({ name: "range object", next: (index) => { if (counter === null) { counter = start; } else { counter += step; } if (counter >= stop) return null; return createInt(counter); }, }); return rangeObject; }; export default range; //# sourceMappingURL=range.js.map