36 lines
682 B
JavaScript
36 lines
682 B
JavaScript
import { Enumerable } from '../../dist/index.esm.min.js'
|
|
|
|
export const createIterator = (arr = []) => {
|
|
let index = 0
|
|
return {
|
|
next() {
|
|
return index < arr.length ? {
|
|
value: arr[index++],
|
|
done: false
|
|
} : { done: true }
|
|
}
|
|
}
|
|
}
|
|
|
|
export const createIterable = arr => ({
|
|
[Symbol.iterator]() {
|
|
return createIterator(arr)
|
|
}
|
|
})
|
|
|
|
export const createEnumerator = (arr = []) => {
|
|
let index = -1
|
|
return {
|
|
get current() { return arr[index] },
|
|
moveNext() {
|
|
index += 1
|
|
return index < arr.length
|
|
},
|
|
reset() {
|
|
index = -1
|
|
}
|
|
}
|
|
}
|
|
|
|
export const createEnumerable = arr => new Enumerable(createEnumerator(arr))
|
|
|