Ohm-Management - Projektarbeit B-ME
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.

skipLast.js 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. var ArgumentOutOfRangeError_1 = require("../util/ArgumentOutOfRangeError");
  18. function skipLast(count) {
  19. return function (source) { return source.lift(new SkipLastOperator(count)); };
  20. }
  21. exports.skipLast = skipLast;
  22. var SkipLastOperator = (function () {
  23. function SkipLastOperator(_skipCount) {
  24. this._skipCount = _skipCount;
  25. if (this._skipCount < 0) {
  26. throw new ArgumentOutOfRangeError_1.ArgumentOutOfRangeError;
  27. }
  28. }
  29. SkipLastOperator.prototype.call = function (subscriber, source) {
  30. if (this._skipCount === 0) {
  31. return source.subscribe(new Subscriber_1.Subscriber(subscriber));
  32. }
  33. else {
  34. return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));
  35. }
  36. };
  37. return SkipLastOperator;
  38. }());
  39. var SkipLastSubscriber = (function (_super) {
  40. __extends(SkipLastSubscriber, _super);
  41. function SkipLastSubscriber(destination, _skipCount) {
  42. var _this = _super.call(this, destination) || this;
  43. _this._skipCount = _skipCount;
  44. _this._count = 0;
  45. _this._ring = new Array(_skipCount);
  46. return _this;
  47. }
  48. SkipLastSubscriber.prototype._next = function (value) {
  49. var skipCount = this._skipCount;
  50. var count = this._count++;
  51. if (count < skipCount) {
  52. this._ring[count] = value;
  53. }
  54. else {
  55. var currentIndex = count % skipCount;
  56. var ring = this._ring;
  57. var oldValue = ring[currentIndex];
  58. ring[currentIndex] = value;
  59. this.destination.next(oldValue);
  60. }
  61. };
  62. return SkipLastSubscriber;
  63. }(Subscriber_1.Subscriber));
  64. //# sourceMappingURL=skipLast.js.map