Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
distance-iterator.js41 linesDownload Raw Back to util
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.default = default_1;
4// Iterator that traverses in the range of [min, max], stepping
5// by distance from a given start position. I.e. for [0, 4], with
6// start of 2, this will iterate 2, 3, 1, 4, 0.
7function default_1(start, minLine, maxLine) {
8    var wantForward = true, backwardExhausted = false, forwardExhausted = false, localOffset = 1;
9    return function iterator() {
10        if (wantForward && !forwardExhausted) {
11            if (backwardExhausted) {
12                localOffset++;
13            }
14            else {
15                wantForward = false;
16            }
17            // Check if trying to fit beyond text length, and if not, check it fits
18            // after offset location (or desired location on first iteration)
19            if (start + localOffset <= maxLine) {
20                return start + localOffset;
21            }
22            forwardExhausted = true;
23        }
24        if (!backwardExhausted) {
25            if (!forwardExhausted) {
26                wantForward = true;
27            }
28            // Check if trying to fit before text beginning, and if not, check it fits
29            // before offset location
30            if (minLine <= start - localOffset) {
31                return start - localOffset++;
32            }
33            backwardExhausted = true;
34            return iterator();
35        }
36        // We tried to fit hunk before text beginning and beyond text length, then
37        // hunk can't fit on the text. Return undefined
38        return undefined;
39    };
40}
41 
codekingpro/portable-devtools · Team Ai