1.0.0 • Published 5 years ago

@kingjs/reflect.implement-i-enumerable v1.0.0

Weekly downloads
1
License
MIT
Repository
-
Last release
5 years ago

@kingjs/reflect.implement-i-enumerable

Implements IEnumerable given a factory that, given the container, returns a moveNext function.

Usage

var assert = require('assert');
var IEnumerable = require('@kingjs/i-enumerable');
var IEnumerator = require('@kingjs/i-enumerator');
var implementIEnumerable = require('@kingjs/reflect.implement-i-enumerable');

var target = implementIEnumerable(
  [ 0 ], 
  function moveNextFactory(instance) {
    var i = -1;

    return function moveNext() {
      if (i + 1 == instance.length)
        return false;
      this.current_ = instance[++i]
      return true;
    }
  }
)

var enumerator = target[IEnumerable.getEnumerator]();
assert(enumerator[IEnumerator.moveNext]());
assert(enumerator[IEnumerator.current] == 0);
assert(!enumerator[IEnumerator.moveNext]());

API

implementIEnumerable(target, createMoveNext(this, instance))

Parameters

  • target: The instance on which to implement IEnumerable.
  • createMoveNext: A factory that, given the container, returns a moveNext function. moveNext should return true if more elements remain; otherwise false.
    • this: The enumerator. When a new value is generate it should be stored in this.current_.
    • instance: The instance to enumerate.

Returns

target

Install

With npm installed, run

$ npm install @kingjs/reflect.implement-i-enumerable

Dependencies

PackageVersion
@kingjs/i-enumerable^1.0.6
@kingjs/i-enumerator^1.0.7
@kingjs/reflect.implement-interface^1.0.1

Source

https://repository.kingjs.net/reflect/implement-i-enumerable

License

MIT

Analytics