dotfiles/vscode/.vscode/extensions/njpwerner.autodocstring-0.6.1/out/parse/docstring_is_closed.js
Errol Sancaktar ff17c17e23 vscode
2024-06-14 09:31:58 -06:00

59 lines
2.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.docstringIsClosed = void 0;
const utilities_1 = require("./utilities");
function docstringIsClosed(document, linePosition, charPosition, quoteStyle) {
const lines = document.split("\n");
if (quotesCloseExistingDocstring(lines, linePosition, charPosition, quoteStyle)) {
return true;
}
if (quotesOpenExistingDocstring(lines, linePosition, charPosition, quoteStyle)) {
return true;
}
return false;
}
exports.docstringIsClosed = docstringIsClosed;
function quotesCloseExistingDocstring(lines, linePosition, charPosition, quoteStyle) {
const linesBeforePosition = sliceUpToPosition(lines, linePosition, charPosition);
let numberOfTripleQuotes = 0;
for (const line of linesBeforePosition.reverse()) {
if (line.includes("def ") || line.includes("class ")) {
break;
}
numberOfTripleQuotes += occurrences(line, quoteStyle);
}
return numberOfTripleQuotes % 2 === 0;
}
function quotesOpenExistingDocstring(lines, linePosition, charPosition, quoteStyle) {
const linesAfterPosition = sliceFromPosition(lines, linePosition, charPosition);
const originalIndentation = (0, utilities_1.indentationOf)(lines[linePosition]);
// Need to check first line separately because indentation was sliced off
if (linesAfterPosition[0].includes(quoteStyle)) {
return true;
}
for (const line of linesAfterPosition.slice(1)) {
if (line.includes(quoteStyle)) {
return true;
}
if ((!(0, utilities_1.blankLine)(line) && (0, utilities_1.indentationOf)(line) < originalIndentation) ||
line.includes("def ") ||
line.includes("class ")) {
return false;
}
}
return false;
}
function sliceUpToPosition(lines, linePosition, charPosition) {
const slicedDocument = lines.slice(0, linePosition);
slicedDocument.push(lines[linePosition].slice(0, charPosition));
return slicedDocument;
}
function sliceFromPosition(lines, linePosition, charPosition) {
let slicedDocument = [lines[linePosition].slice(charPosition)];
slicedDocument = slicedDocument.concat(lines.slice(linePosition + 1));
return slicedDocument;
}
function occurrences(str, word) {
return str.split(word).length - 1;
}
//# sourceMappingURL=docstring_is_closed.js.map