UNPKG

@edsilv/exjs

Version:
36 lines (34 loc) 1.23 kB
/// <reference path="enumerable.ts" /> namespace exjs { function concatEnumerator<T>(prev: IEnumerable<T>, second: IEnumerable<T>): IEnumerator<T> { var t: IEnumerator<T>; var s = false; var e = { current: undefined, moveNext: function (): boolean { if (!t) t = prev.getEnumerator(); e.current = undefined; if (t.moveNext()) { e.current = t.current; return true; } if (s) return false; s = true; t = second.getEnumerator(); if (!t.moveNext()) return false; e.current = t.current; return true; } }; return e; } Enumerable.prototype.concat = function<T>(second: any): IEnumerableEx<T> { var en: IEnumerable<T> = second instanceof Array ? second.en() : second; var e = new Enumerable<T>(); e.getEnumerator = () => concatEnumerator<T>(<IEnumerable<T>>this, en); return e; }; if (List) List.prototype.concat = Enumerable.prototype.concat; }