Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Enumerable
- {
- var _table;
- function Enumerable(tbl) {
- this._table = tbl;
- }
- function Where(f) {
- var tbl = { };
- foreach (var v in this._table) {
- if (f(v))
- tbl[#tbl + 1] = v;
- }
- return Enumerable(tbl);
- }
- function Select(f) {
- var tbl = { };
- foreach (var v in this._table) {
- tbl[#tbl + 1] = f(v);
- }
- return Enumerable(tbl);
- }
- function First(f) {
- foreach (var v in this._table) {
- if (f(v))
- return v;
- }
- }
- function Any(f) {
- foreach (var v in this._table) {
- if (f(v))
- return true;
- }
- return false;
- }
- function Skip(n) {
- var tbl = { };
- var c = 0;
- foreach (var v in this._table) {
- if (c < n) {
- c = c + 1; // c++;
- continue;
- }
- tbl[#tbl + 1] = v;
- }
- return Enumerable(tbl);
- }
- function SkipWhile(f) {
- var tbl = { };
- var b = false;
- foreach (var v in this._table) {
- if (!f(v))
- b = true;
- if (b)
- tbl[#tbl + 1] = v;
- }
- return Enumerable(tbl);
- }
- function Reverse() {
- var tbl = { };
- foreach (var v in this._table) {
- table.insert(tbl, 1, v);
- }
- return Enumerable(tbl);
- }
- function Inherit(tbl) {
- var c = 1;
- foreach (var v in tbl) {
- if (!this._table[c]) {
- this._table[c] = v;
- }
- c = c + 1; // c++;
- }
- return Enumerable(tbl);
- }
- function Merge(tbl) {
- var c = 1;
- foreach (var v in tbl) {
- if (v is table && this._table[c] is table) {
- Enumerable(this._table[c]).Merge(v);
- } else {
- this._table[c] = v;
- }
- c = c + 1; // c++;
- }
- return Enumerable(this._table);
- }
- function Add(tbl) {
- foreach (var v in tbl) {
- this._table[#this._table + 1] = v;
- }
- return Enumerable(this._table);
- }
- function AddWhile(f) {
- var tbl = { };
- foreach (var v in this._table) {
- if (!f(v)) {
- break;
- }
- tbl[#tbl + 1] = v;
- }
- return Enumerable(tbl);
- }
- function Count()
- {
- return #this._table;
- }
- function ToTable()
- {
- return this._table;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement