You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

715 lines
15 KiB

4 years ago
  1. // Generated by LiveScript 1.6.0
  2. var each, map, compact, filter, reject, remove, partition, find, head, first, tail, last, initial, empty, reverse, unique, uniqueBy, fold, foldl, fold1, foldl1, foldr, foldr1, unfoldr, concat, concatMap, flatten, difference, intersection, union, countBy, groupBy, andList, orList, any, all, sort, sortWith, sortBy, sum, product, mean, average, maximum, minimum, maximumBy, minimumBy, scan, scanl, scan1, scanl1, scanr, scanr1, slice, take, drop, splitAt, takeWhile, dropWhile, span, breakList, zip, zipWith, zipAll, zipAllWith, at, elemIndex, elemIndices, findIndex, findIndices, toString$ = {}.toString;
  3. each = curry$(function(f, xs){
  4. var i$, len$, x;
  5. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  6. x = xs[i$];
  7. f(x);
  8. }
  9. return xs;
  10. });
  11. map = curry$(function(f, xs){
  12. var i$, len$, x, results$ = [];
  13. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  14. x = xs[i$];
  15. results$.push(f(x));
  16. }
  17. return results$;
  18. });
  19. compact = function(xs){
  20. var i$, len$, x, results$ = [];
  21. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  22. x = xs[i$];
  23. if (x) {
  24. results$.push(x);
  25. }
  26. }
  27. return results$;
  28. };
  29. filter = curry$(function(f, xs){
  30. var i$, len$, x, results$ = [];
  31. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  32. x = xs[i$];
  33. if (f(x)) {
  34. results$.push(x);
  35. }
  36. }
  37. return results$;
  38. });
  39. reject = curry$(function(f, xs){
  40. var i$, len$, x, results$ = [];
  41. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  42. x = xs[i$];
  43. if (!f(x)) {
  44. results$.push(x);
  45. }
  46. }
  47. return results$;
  48. });
  49. remove = curry$(function(el, xs){
  50. var i, x$;
  51. i = elemIndex(el, xs);
  52. x$ = xs.slice();
  53. if (i != null) {
  54. x$.splice(i, 1);
  55. }
  56. return x$;
  57. });
  58. partition = curry$(function(f, xs){
  59. var passed, failed, i$, len$, x;
  60. passed = [];
  61. failed = [];
  62. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  63. x = xs[i$];
  64. (f(x) ? passed : failed).push(x);
  65. }
  66. return [passed, failed];
  67. });
  68. find = curry$(function(f, xs){
  69. var i$, len$, x;
  70. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  71. x = xs[i$];
  72. if (f(x)) {
  73. return x;
  74. }
  75. }
  76. });
  77. head = first = function(xs){
  78. return xs[0];
  79. };
  80. tail = function(xs){
  81. if (!xs.length) {
  82. return;
  83. }
  84. return xs.slice(1);
  85. };
  86. last = function(xs){
  87. return xs[xs.length - 1];
  88. };
  89. initial = function(xs){
  90. if (!xs.length) {
  91. return;
  92. }
  93. return xs.slice(0, -1);
  94. };
  95. empty = function(xs){
  96. return !xs.length;
  97. };
  98. reverse = function(xs){
  99. return xs.concat().reverse();
  100. };
  101. unique = function(xs){
  102. var result, i$, len$, x;
  103. result = [];
  104. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  105. x = xs[i$];
  106. if (!in$(x, result)) {
  107. result.push(x);
  108. }
  109. }
  110. return result;
  111. };
  112. uniqueBy = curry$(function(f, xs){
  113. var seen, i$, len$, x, val, results$ = [];
  114. seen = [];
  115. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  116. x = xs[i$];
  117. val = f(x);
  118. if (in$(val, seen)) {
  119. continue;
  120. }
  121. seen.push(val);
  122. results$.push(x);
  123. }
  124. return results$;
  125. });
  126. fold = foldl = curry$(function(f, memo, xs){
  127. var i$, len$, x;
  128. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  129. x = xs[i$];
  130. memo = f(memo, x);
  131. }
  132. return memo;
  133. });
  134. fold1 = foldl1 = curry$(function(f, xs){
  135. return fold(f, xs[0], xs.slice(1));
  136. });
  137. foldr = curry$(function(f, memo, xs){
  138. var i$, x;
  139. for (i$ = xs.length - 1; i$ >= 0; --i$) {
  140. x = xs[i$];
  141. memo = f(x, memo);
  142. }
  143. return memo;
  144. });
  145. foldr1 = curry$(function(f, xs){
  146. return foldr(f, xs[xs.length - 1], xs.slice(0, -1));
  147. });
  148. unfoldr = curry$(function(f, b){
  149. var result, x, that;
  150. result = [];
  151. x = b;
  152. while ((that = f(x)) != null) {
  153. result.push(that[0]);
  154. x = that[1];
  155. }
  156. return result;
  157. });
  158. concat = function(xss){
  159. return [].concat.apply([], xss);
  160. };
  161. concatMap = curry$(function(f, xs){
  162. var x;
  163. return [].concat.apply([], (function(){
  164. var i$, ref$, len$, results$ = [];
  165. for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {
  166. x = ref$[i$];
  167. results$.push(f(x));
  168. }
  169. return results$;
  170. }()));
  171. });
  172. flatten = function(xs){
  173. var x;
  174. return [].concat.apply([], (function(){
  175. var i$, ref$, len$, results$ = [];
  176. for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {
  177. x = ref$[i$];
  178. if (toString$.call(x).slice(8, -1) === 'Array') {
  179. results$.push(flatten(x));
  180. } else {
  181. results$.push(x);
  182. }
  183. }
  184. return results$;
  185. }()));
  186. };
  187. difference = function(xs){
  188. var yss, res$, i$, to$, results, len$, x, j$, len1$, ys;
  189. res$ = [];
  190. for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) {
  191. res$.push(arguments[i$]);
  192. }
  193. yss = res$;
  194. results = [];
  195. outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  196. x = xs[i$];
  197. for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) {
  198. ys = yss[j$];
  199. if (in$(x, ys)) {
  200. continue outer;
  201. }
  202. }
  203. results.push(x);
  204. }
  205. return results;
  206. };
  207. intersection = function(xs){
  208. var yss, res$, i$, to$, results, len$, x, j$, len1$, ys;
  209. res$ = [];
  210. for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) {
  211. res$.push(arguments[i$]);
  212. }
  213. yss = res$;
  214. results = [];
  215. outer: for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  216. x = xs[i$];
  217. for (j$ = 0, len1$ = yss.length; j$ < len1$; ++j$) {
  218. ys = yss[j$];
  219. if (!in$(x, ys)) {
  220. continue outer;
  221. }
  222. }
  223. results.push(x);
  224. }
  225. return results;
  226. };
  227. union = function(){
  228. var xss, res$, i$, to$, results, len$, xs, j$, len1$, x;
  229. res$ = [];
  230. for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) {
  231. res$.push(arguments[i$]);
  232. }
  233. xss = res$;
  234. results = [];
  235. for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {
  236. xs = xss[i$];
  237. for (j$ = 0, len1$ = xs.length; j$ < len1$; ++j$) {
  238. x = xs[j$];
  239. if (!in$(x, results)) {
  240. results.push(x);
  241. }
  242. }
  243. }
  244. return results;
  245. };
  246. countBy = curry$(function(f, xs){
  247. var results, i$, len$, x, key;
  248. results = {};
  249. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  250. x = xs[i$];
  251. key = f(x);
  252. if (key in results) {
  253. results[key] += 1;
  254. } else {
  255. results[key] = 1;
  256. }
  257. }
  258. return results;
  259. });
  260. groupBy = curry$(function(f, xs){
  261. var results, i$, len$, x, key;
  262. results = {};
  263. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  264. x = xs[i$];
  265. key = f(x);
  266. if (key in results) {
  267. results[key].push(x);
  268. } else {
  269. results[key] = [x];
  270. }
  271. }
  272. return results;
  273. });
  274. andList = function(xs){
  275. var i$, len$, x;
  276. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  277. x = xs[i$];
  278. if (!x) {
  279. return false;
  280. }
  281. }
  282. return true;
  283. };
  284. orList = function(xs){
  285. var i$, len$, x;
  286. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  287. x = xs[i$];
  288. if (x) {
  289. return true;
  290. }
  291. }
  292. return false;
  293. };
  294. any = curry$(function(f, xs){
  295. var i$, len$, x;
  296. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  297. x = xs[i$];
  298. if (f(x)) {
  299. return true;
  300. }
  301. }
  302. return false;
  303. });
  304. all = curry$(function(f, xs){
  305. var i$, len$, x;
  306. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  307. x = xs[i$];
  308. if (!f(x)) {
  309. return false;
  310. }
  311. }
  312. return true;
  313. });
  314. sort = function(xs){
  315. return xs.concat().sort(function(x, y){
  316. if (x > y) {
  317. return 1;
  318. } else if (x < y) {
  319. return -1;
  320. } else {
  321. return 0;
  322. }
  323. });
  324. };
  325. sortWith = curry$(function(f, xs){
  326. return xs.concat().sort(f);
  327. });
  328. sortBy = curry$(function(f, xs){
  329. return xs.concat().sort(function(x, y){
  330. if (f(x) > f(y)) {
  331. return 1;
  332. } else if (f(x) < f(y)) {
  333. return -1;
  334. } else {
  335. return 0;
  336. }
  337. });
  338. });
  339. sum = function(xs){
  340. var result, i$, len$, x;
  341. result = 0;
  342. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  343. x = xs[i$];
  344. result += x;
  345. }
  346. return result;
  347. };
  348. product = function(xs){
  349. var result, i$, len$, x;
  350. result = 1;
  351. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  352. x = xs[i$];
  353. result *= x;
  354. }
  355. return result;
  356. };
  357. mean = average = function(xs){
  358. var sum, i$, len$, x;
  359. sum = 0;
  360. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  361. x = xs[i$];
  362. sum += x;
  363. }
  364. return sum / xs.length;
  365. };
  366. maximum = function(xs){
  367. var max, i$, ref$, len$, x;
  368. max = xs[0];
  369. for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
  370. x = ref$[i$];
  371. if (x > max) {
  372. max = x;
  373. }
  374. }
  375. return max;
  376. };
  377. minimum = function(xs){
  378. var min, i$, ref$, len$, x;
  379. min = xs[0];
  380. for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
  381. x = ref$[i$];
  382. if (x < min) {
  383. min = x;
  384. }
  385. }
  386. return min;
  387. };
  388. maximumBy = curry$(function(f, xs){
  389. var max, i$, ref$, len$, x;
  390. max = xs[0];
  391. for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
  392. x = ref$[i$];
  393. if (f(x) > f(max)) {
  394. max = x;
  395. }
  396. }
  397. return max;
  398. });
  399. minimumBy = curry$(function(f, xs){
  400. var min, i$, ref$, len$, x;
  401. min = xs[0];
  402. for (i$ = 0, len$ = (ref$ = xs.slice(1)).length; i$ < len$; ++i$) {
  403. x = ref$[i$];
  404. if (f(x) < f(min)) {
  405. min = x;
  406. }
  407. }
  408. return min;
  409. });
  410. scan = scanl = curry$(function(f, memo, xs){
  411. var last, x;
  412. last = memo;
  413. return [memo].concat((function(){
  414. var i$, ref$, len$, results$ = [];
  415. for (i$ = 0, len$ = (ref$ = xs).length; i$ < len$; ++i$) {
  416. x = ref$[i$];
  417. results$.push(last = f(last, x));
  418. }
  419. return results$;
  420. }()));
  421. });
  422. scan1 = scanl1 = curry$(function(f, xs){
  423. if (!xs.length) {
  424. return;
  425. }
  426. return scan(f, xs[0], xs.slice(1));
  427. });
  428. scanr = curry$(function(f, memo, xs){
  429. xs = xs.concat().reverse();
  430. return scan(f, memo, xs).reverse();
  431. });
  432. scanr1 = curry$(function(f, xs){
  433. if (!xs.length) {
  434. return;
  435. }
  436. xs = xs.concat().reverse();
  437. return scan(f, xs[0], xs.slice(1)).reverse();
  438. });
  439. slice = curry$(function(x, y, xs){
  440. return xs.slice(x, y);
  441. });
  442. take = curry$(function(n, xs){
  443. if (n <= 0) {
  444. return xs.slice(0, 0);
  445. } else {
  446. return xs.slice(0, n);
  447. }
  448. });
  449. drop = curry$(function(n, xs){
  450. if (n <= 0) {
  451. return xs;
  452. } else {
  453. return xs.slice(n);
  454. }
  455. });
  456. splitAt = curry$(function(n, xs){
  457. return [take(n, xs), drop(n, xs)];
  458. });
  459. takeWhile = curry$(function(p, xs){
  460. var len, i;
  461. len = xs.length;
  462. if (!len) {
  463. return xs;
  464. }
  465. i = 0;
  466. while (i < len && p(xs[i])) {
  467. i += 1;
  468. }
  469. return xs.slice(0, i);
  470. });
  471. dropWhile = curry$(function(p, xs){
  472. var len, i;
  473. len = xs.length;
  474. if (!len) {
  475. return xs;
  476. }
  477. i = 0;
  478. while (i < len && p(xs[i])) {
  479. i += 1;
  480. }
  481. return xs.slice(i);
  482. });
  483. span = curry$(function(p, xs){
  484. return [takeWhile(p, xs), dropWhile(p, xs)];
  485. });
  486. breakList = curry$(function(p, xs){
  487. return span(compose$(p, not$), xs);
  488. });
  489. zip = curry$(function(xs, ys){
  490. var result, len, i$, len$, i, x;
  491. result = [];
  492. len = ys.length;
  493. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  494. i = i$;
  495. x = xs[i$];
  496. if (i === len) {
  497. break;
  498. }
  499. result.push([x, ys[i]]);
  500. }
  501. return result;
  502. });
  503. zipWith = curry$(function(f, xs, ys){
  504. var result, len, i$, len$, i, x;
  505. result = [];
  506. len = ys.length;
  507. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  508. i = i$;
  509. x = xs[i$];
  510. if (i === len) {
  511. break;
  512. }
  513. result.push(f(x, ys[i]));
  514. }
  515. return result;
  516. });
  517. zipAll = function(){
  518. var xss, res$, i$, to$, minLength, len$, xs, ref$, i, lresult$, j$, results$ = [];
  519. res$ = [];
  520. for (i$ = 0, to$ = arguments.length; i$ < to$; ++i$) {
  521. res$.push(arguments[i$]);
  522. }
  523. xss = res$;
  524. minLength = undefined;
  525. for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {
  526. xs = xss[i$];
  527. minLength <= (ref$ = xs.length) || (minLength = ref$);
  528. }
  529. for (i$ = 0; i$ < minLength; ++i$) {
  530. i = i$;
  531. lresult$ = [];
  532. for (j$ = 0, len$ = xss.length; j$ < len$; ++j$) {
  533. xs = xss[j$];
  534. lresult$.push(xs[i]);
  535. }
  536. results$.push(lresult$);
  537. }
  538. return results$;
  539. };
  540. zipAllWith = function(f){
  541. var xss, res$, i$, to$, minLength, len$, xs, ref$, i, results$ = [];
  542. res$ = [];
  543. for (i$ = 1, to$ = arguments.length; i$ < to$; ++i$) {
  544. res$.push(arguments[i$]);
  545. }
  546. xss = res$;
  547. minLength = undefined;
  548. for (i$ = 0, len$ = xss.length; i$ < len$; ++i$) {
  549. xs = xss[i$];
  550. minLength <= (ref$ = xs.length) || (minLength = ref$);
  551. }
  552. for (i$ = 0; i$ < minLength; ++i$) {
  553. i = i$;
  554. results$.push(f.apply(null, (fn$())));
  555. }
  556. return results$;
  557. function fn$(){
  558. var i$, ref$, len$, results$ = [];
  559. for (i$ = 0, len$ = (ref$ = xss).length; i$ < len$; ++i$) {
  560. xs = ref$[i$];
  561. results$.push(xs[i]);
  562. }
  563. return results$;
  564. }
  565. };
  566. at = curry$(function(n, xs){
  567. if (n < 0) {
  568. return xs[xs.length + n];
  569. } else {
  570. return xs[n];
  571. }
  572. });
  573. elemIndex = curry$(function(el, xs){
  574. var i$, len$, i, x;
  575. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  576. i = i$;
  577. x = xs[i$];
  578. if (x === el) {
  579. return i;
  580. }
  581. }
  582. });
  583. elemIndices = curry$(function(el, xs){
  584. var i$, len$, i, x, results$ = [];
  585. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  586. i = i$;
  587. x = xs[i$];
  588. if (x === el) {
  589. results$.push(i);
  590. }
  591. }
  592. return results$;
  593. });
  594. findIndex = curry$(function(f, xs){
  595. var i$, len$, i, x;
  596. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  597. i = i$;
  598. x = xs[i$];
  599. if (f(x)) {
  600. return i;
  601. }
  602. }
  603. });
  604. findIndices = curry$(function(f, xs){
  605. var i$, len$, i, x, results$ = [];
  606. for (i$ = 0, len$ = xs.length; i$ < len$; ++i$) {
  607. i = i$;
  608. x = xs[i$];
  609. if (f(x)) {
  610. results$.push(i);
  611. }
  612. }
  613. return results$;
  614. });
  615. module.exports = {
  616. each: each,
  617. map: map,
  618. filter: filter,
  619. compact: compact,
  620. reject: reject,
  621. remove: remove,
  622. partition: partition,
  623. find: find,
  624. head: head,
  625. first: first,
  626. tail: tail,
  627. last: last,
  628. initial: initial,
  629. empty: empty,
  630. reverse: reverse,
  631. difference: difference,
  632. intersection: intersection,
  633. union: union,
  634. countBy: countBy,
  635. groupBy: groupBy,
  636. fold: fold,
  637. fold1: fold1,
  638. foldl: foldl,
  639. foldl1: foldl1,
  640. foldr: foldr,
  641. foldr1: foldr1,
  642. unfoldr: unfoldr,
  643. andList: andList,
  644. orList: orList,
  645. any: any,
  646. all: all,
  647. unique: unique,
  648. uniqueBy: uniqueBy,
  649. sort: sort,
  650. sortWith: sortWith,
  651. sortBy: sortBy,
  652. sum: sum,
  653. product: product,
  654. mean: mean,
  655. average: average,
  656. concat: concat,
  657. concatMap: concatMap,
  658. flatten: flatten,
  659. maximum: maximum,
  660. minimum: minimum,
  661. maximumBy: maximumBy,
  662. minimumBy: minimumBy,
  663. scan: scan,
  664. scan1: scan1,
  665. scanl: scanl,
  666. scanl1: scanl1,
  667. scanr: scanr,
  668. scanr1: scanr1,
  669. slice: slice,
  670. take: take,
  671. drop: drop,
  672. splitAt: splitAt,
  673. takeWhile: takeWhile,
  674. dropWhile: dropWhile,
  675. span: span,
  676. breakList: breakList,
  677. zip: zip,
  678. zipWith: zipWith,
  679. zipAll: zipAll,
  680. zipAllWith: zipAllWith,
  681. at: at,
  682. elemIndex: elemIndex,
  683. elemIndices: elemIndices,
  684. findIndex: findIndex,
  685. findIndices: findIndices
  686. };
  687. function curry$(f, bound){
  688. var context,
  689. _curry = function(args) {
  690. return f.length > 1 ? function(){
  691. var params = args ? args.concat() : [];
  692. context = bound ? context || this : this;
  693. return params.push.apply(params, arguments) <
  694. f.length && arguments.length ?
  695. _curry.call(context, params) : f.apply(context, params);
  696. } : f;
  697. };
  698. return _curry();
  699. }
  700. function in$(x, xs){
  701. var i = -1, l = xs.length >>> 0;
  702. while (++i < l) if (x === xs[i]) return true;
  703. return false;
  704. }
  705. function compose$() {
  706. var functions = arguments;
  707. return function() {
  708. var i, result;
  709. result = functions[0].apply(this, arguments);
  710. for (i = 1; i < functions.length; ++i) {
  711. result = functions[i](result);
  712. }
  713. return result;
  714. };
  715. }
  716. function not$(x){ return !x; }