phrase-engine
Version:
Language files on steroids for conversational UIs that aren't boring.
27 lines (21 loc) • 523 B
text/typescript
export interface IteratorState {
data: {
i: number;
}[];
}
export function* range(stop: number, depth: number, state: IteratorState): Iterable<number> {
if (depth >= state.data.length) {
state.data.push({
i: 0
});
}
const stop_actual = stop - 1;
let i = state.data[depth].i;
while (i < stop_actual) {
yield i;
i++;
state.data[depth].i = i;
}
yield stop_actual;
state.data[depth].i = 0;
}