Advertisement
szymski

Untitled

Dec 16th, 2015
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. class Enumerable
  2. {
  3. var _table;
  4.  
  5. function Enumerable(tbl) {
  6. this._table = tbl;
  7. }
  8.  
  9. function Where(f) {
  10. var tbl = { };
  11.  
  12. foreach (var v in this._table) {
  13. if (f(v))
  14. tbl[#tbl + 1] = v;
  15. }
  16.  
  17. return Enumerable(tbl);
  18. }
  19.  
  20. function Select(f) {
  21. var tbl = { };
  22.  
  23. foreach (var v in this._table) {
  24. tbl[#tbl + 1] = f(v);
  25. }
  26.  
  27. return Enumerable(tbl);
  28. }
  29.  
  30. function First(f) {
  31. foreach (var v in this._table) {
  32. if (f(v))
  33. return v;
  34. }
  35. }
  36.  
  37. function Any(f) {
  38. foreach (var v in this._table) {
  39. if (f(v))
  40. return true;
  41. }
  42. return false;
  43. }
  44.  
  45. function Skip(n) {
  46. var tbl = { };
  47. var c = 0;
  48.  
  49. foreach (var v in this._table) {
  50. if (c < n) {
  51. c = c + 1; // c++;
  52. continue;
  53. }
  54. tbl[#tbl + 1] = v;
  55. }
  56.  
  57. return Enumerable(tbl);
  58. }
  59.  
  60. function SkipWhile(f) {
  61. var tbl = { };
  62. var b = false;
  63.  
  64. foreach (var v in this._table) {
  65. if (!f(v))
  66. b = true;
  67. if (b)
  68. tbl[#tbl + 1] = v;
  69. }
  70.  
  71. return Enumerable(tbl);
  72. }
  73.  
  74. function Reverse() {
  75. var tbl = { };
  76.  
  77. foreach (var v in this._table) {
  78. table.insert(tbl, 1, v);
  79. }
  80.  
  81. return Enumerable(tbl);
  82. }
  83.  
  84. function Inherit(tbl) {
  85. var c = 1;
  86.  
  87. foreach (var v in tbl) {
  88. if (!this._table[c]) {
  89. this._table[c] = v;
  90. }
  91. c = c + 1; // c++;
  92. }
  93.  
  94. return Enumerable(tbl);
  95. }
  96.  
  97. function Merge(tbl) {
  98. var c = 1;
  99.  
  100. foreach (var v in tbl) {
  101. if (v is table && this._table[c] is table) {
  102. Enumerable(this._table[c]).Merge(v);
  103. } else {
  104. this._table[c] = v;
  105. }
  106. c = c + 1; // c++;
  107. }
  108.  
  109. return Enumerable(this._table);
  110. }
  111.  
  112. function Add(tbl) {
  113. foreach (var v in tbl) {
  114. this._table[#this._table + 1] = v;
  115. }
  116.  
  117. return Enumerable(this._table);
  118. }
  119.  
  120. function AddWhile(f) {
  121. var tbl = { };
  122.  
  123. foreach (var v in this._table) {
  124. if (!f(v)) {
  125. break;
  126. }
  127. tbl[#tbl + 1] = v;
  128. }
  129.  
  130. return Enumerable(tbl);
  131. }
  132.  
  133. function Count()
  134. {
  135. return #this._table;
  136. }
  137.  
  138. function ToTable()
  139. {
  140. return this._table;
  141. }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement