reslop 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -6
- package/README.md +11 -9
- package/bin/reslop.js +2 -2
- package/lib/ansi.js +0 -1
- package/lib/cli.js +44 -43
- package/lib/clipboard.js +1 -1
- package/lib/deps.js +1440 -0
- package/lib/detect.js +4 -4
- package/lib/diff.js +31 -55
- package/lib/editor.js +1 -1
- package/lib/files.js +22 -3
- package/lib/git.js +360 -36
- package/lib/github.js +28 -34
- package/lib/highlight.js +126 -140
- package/lib/keys.js +29 -39
- package/lib/render.js +172 -129
- package/lib/review.js +22 -42
- package/lib/select.js +16 -18
- package/lib/session.js +97 -208
- package/lib/source.js +7 -3
- package/package.json +1 -1
package/lib/select.js
CHANGED
|
@@ -20,12 +20,12 @@ const isRange = (sel) => {
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
const ordered = (sel) => {
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
26
|
-
if (
|
|
27
|
-
if (
|
|
28
|
-
return
|
|
23
|
+
const start = sel.start;
|
|
24
|
+
const end = sel.end;
|
|
25
|
+
if (start.y < end.y) return { first: start, last: end };
|
|
26
|
+
if (start.y > end.y) return { first: end, last: start };
|
|
27
|
+
if (start.x <= end.x) return { first: start, last: end };
|
|
28
|
+
return { first: end, last: start };
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
const slicePlain = (plain, fromCol, toCol) => {
|
|
@@ -43,25 +43,25 @@ const slicePlain = (plain, fromCol, toCol) => {
|
|
|
43
43
|
};
|
|
44
44
|
|
|
45
45
|
const lineRange = (rowIndex, sel) => {
|
|
46
|
-
const
|
|
46
|
+
const { first, last } = ordered(sel);
|
|
47
47
|
const y = rowIndex + 1;
|
|
48
|
-
if (y <
|
|
48
|
+
if (y < first.y || y > last.y) return null;
|
|
49
49
|
let from = 0;
|
|
50
|
-
let to =
|
|
51
|
-
if (y ===
|
|
52
|
-
if (y ===
|
|
50
|
+
let to = Infinity;
|
|
51
|
+
if (y === first.y) from = first.x - 1;
|
|
52
|
+
if (y === last.y) to = last.x;
|
|
53
53
|
if (to <= from) return null;
|
|
54
54
|
return { from, to };
|
|
55
55
|
};
|
|
56
56
|
|
|
57
57
|
const extractText = (rows, sel) => {
|
|
58
58
|
if (!isRange(sel) || !rows || !rows.length) return '';
|
|
59
|
-
const
|
|
59
|
+
const { first, last } = ordered(sel);
|
|
60
60
|
const lines = [];
|
|
61
|
-
for (let
|
|
62
|
-
const range = lineRange(
|
|
61
|
+
for (let row = first.y - 1; row <= last.y - 1; row++) {
|
|
62
|
+
const range = lineRange(row, sel);
|
|
63
63
|
if (!range) continue;
|
|
64
|
-
const plain = stripAnsi(rows[
|
|
64
|
+
const plain = stripAnsi(rows[row] ?? '');
|
|
65
65
|
const chunk = slicePlain(plain, range.from, range.to);
|
|
66
66
|
lines.push(chunk.replace(/\s+$/g, ''));
|
|
67
67
|
}
|
|
@@ -202,9 +202,7 @@ const overlayRows = (rows, sel) => {
|
|
|
202
202
|
|
|
203
203
|
module.exports = {
|
|
204
204
|
isRange,
|
|
205
|
-
ordered,
|
|
206
205
|
extractText,
|
|
207
|
-
overlayRows,
|
|
208
206
|
overlayRange,
|
|
209
|
-
|
|
207
|
+
overlayRows,
|
|
210
208
|
};
|