UNPKG

tap

Version:

A Test-Anything-Protocol library for JavaScript

77 lines (62 loc) 1.97 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var Range = /*#__PURE__*/ function () { (0, _createClass2.default)(Range, null, [{ key: "copy", value: function copy(orig) { return new Range(orig.start, orig.end); } }]); function Range(start, end) { (0, _classCallCheck2.default)(this, Range); this.start = start; this.end = end || start; } (0, _createClass2.default)(Range, [{ key: "isEmpty", value: function isEmpty() { return typeof this.start !== 'number' || !this.end || this.end <= this.start; } /** * Set `origStart` and `origEnd` to point to the original source range for * this node, which may differ due to dropped CR characters. * * @param {number[]} cr - Positions of dropped CR characters * @param {number} offset - Starting index of `cr` from the last call * @returns {number} - The next offset, matching the one found for `origStart` */ }, { key: "setOrigRange", value: function setOrigRange(cr, offset) { var start = this.start, end = this.end; if (cr.length === 0 || end <= cr[0]) { this.origStart = start; this.origEnd = end; return offset; } var i = offset; while (i < cr.length) { if (cr[i] > start) break;else ++i; } this.origStart = start + i; var nextOffset = i; while (i < cr.length) { // if end was at \n, it should now be at \r if (cr[i] >= end) break;else ++i; } this.origEnd = end + i; return nextOffset; } }]); return Range; }(); exports.default = Range;