| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.range = exports.balanced = void 0;
- const balanced = (a, b, str) => {
- const ma = a instanceof RegExp ? maybeMatch(a, str) : a;
- const mb = b instanceof RegExp ? maybeMatch(b, str) : b;
- const r = ma !== null && mb != null && (0, exports.range)(ma, mb, str);
- return (r && {
- start: r[0],
- end: r[1],
- pre: str.slice(0, r[0]),
- body: str.slice(r[0] + ma.length, r[1]),
- post: str.slice(r[1] + mb.length),
- });
- };
- exports.balanced = balanced;
- const maybeMatch = (reg, str) => {
- const m = str.match(reg);
- return m ? m[0] : null;
- };
- const range = (a, b, str) => {
- let begs, beg, left, right = undefined, result;
- let ai = str.indexOf(a);
- let bi = str.indexOf(b, ai + 1);
- let i = ai;
- if (ai >= 0 && bi > 0) {
- if (a === b) {
- return [ai, bi];
- }
- begs = [];
- left = str.length;
- while (i >= 0 && !result) {
- if (i === ai) {
- begs.push(i);
- ai = str.indexOf(a, i + 1);
- }
- else if (begs.length === 1) {
- const r = begs.pop();
- if (r !== undefined)
- result = [r, bi];
- }
- else {
- beg = begs.pop();
- if (beg !== undefined && beg < left) {
- left = beg;
- right = bi;
- }
- bi = str.indexOf(b, i + 1);
- }
- i = ai < bi && ai >= 0 ? ai : bi;
- }
- if (begs.length && right !== undefined) {
- result = [left, right];
- }
- }
- return result;
- };
- exports.range = range;
- //# sourceMappingURL=index.js.map
|