Repositorio del curso CCOM4030 el semestre B91 del proyecto Artesanías con el Instituto de Cultura

count.js 2.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. "use strict";
  2. var __extends = (this && this.__extends) || (function () {
  3. var extendStatics = function (d, b) {
  4. extendStatics = Object.setPrototypeOf ||
  5. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  6. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  7. return extendStatics(d, b);
  8. }
  9. return function (d, b) {
  10. extendStatics(d, b);
  11. function __() { this.constructor = d; }
  12. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  13. };
  14. })();
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. var Subscriber_1 = require("../Subscriber");
  17. function count(predicate) {
  18. return function (source) { return source.lift(new CountOperator(predicate, source)); };
  19. }
  20. exports.count = count;
  21. var CountOperator = (function () {
  22. function CountOperator(predicate, source) {
  23. this.predicate = predicate;
  24. this.source = source;
  25. }
  26. CountOperator.prototype.call = function (subscriber, source) {
  27. return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));
  28. };
  29. return CountOperator;
  30. }());
  31. var CountSubscriber = (function (_super) {
  32. __extends(CountSubscriber, _super);
  33. function CountSubscriber(destination, predicate, source) {
  34. var _this = _super.call(this, destination) || this;
  35. _this.predicate = predicate;
  36. _this.source = source;
  37. _this.count = 0;
  38. _this.index = 0;
  39. return _this;
  40. }
  41. CountSubscriber.prototype._next = function (value) {
  42. if (this.predicate) {
  43. this._tryPredicate(value);
  44. }
  45. else {
  46. this.count++;
  47. }
  48. };
  49. CountSubscriber.prototype._tryPredicate = function (value) {
  50. var result;
  51. try {
  52. result = this.predicate(value, this.index++, this.source);
  53. }
  54. catch (err) {
  55. this.destination.error(err);
  56. return;
  57. }
  58. if (result) {
  59. this.count++;
  60. }
  61. };
  62. CountSubscriber.prototype._complete = function () {
  63. this.destination.next(this.count);
  64. this.destination.complete();
  65. };
  66. return CountSubscriber;
  67. }(Subscriber_1.Subscriber));
  68. //# sourceMappingURL=count.js.map