From 96bca9a601ff688aae0cc9ead8d7dc7f99233456 Mon Sep 17 00:00:00 2001 From: tel0065 <77864718+tel0065@users.noreply.github.com> Date: Fri, 25 Mar 2022 09:08:07 -0500 Subject: [PATCH] js -> ts migration .js files ended up getting uploaded, beginnings of attempting to fix that mistake. Migrating changes made in .js file to .ts file --- src/commands/text.ts | 91 +++++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 44 deletions(-) diff --git a/src/commands/text.ts b/src/commands/text.ts index 23ce5b2..6bad4d8 100755 --- a/src/commands/text.ts +++ b/src/commands/text.ts @@ -1,5 +1,7 @@ "use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); +Object.defineProperty(exports, "__esModule", { + value: true +}); exports.textCommands = void 0; const vscode = require("vscode"); @@ -49,37 +51,34 @@ function getLineNumber() { if (editor) { let lineNum = fetchLineNumber(editor); vscode.window.showInformationMessage(`Line ${lineNum.toString()}`); - } - else { + } else { vscode.window.showErrorMessage('No document currently active'); } } function getIndent() { let editor = vscode.window.activeTextEditor; - + if (editor) { let lineNum = fetchLineNumber(editor); let textLine = fetchTextLine(editor); - + if (textLine.isEmptyOrWhitespace) { - vscode.window.showInformationMessage(`"Line ${lineNum.toString()} is Empty`); - } - else { + vscode.window.showInformationMessage(`Line ${lineNum.toString()} is Empty`); + } else { // Grab tab format from open document let tabFmt = { size: editor.options.tabSize, hard: !editor.options.insertSpaces }; let i = pl.Lexer.getIndent(textLine.text, tabFmt); - - // Ternary operator to change the tense of 'indent' to 'indents' for the output if i is greater than 1 - (i > 1) ? - vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${i.toString()} indents`) : + + /* Ternary operator to change the tense of 'indent' to 'indents' for the output if i is 0 or greater than 1 */ + (i !== 1) ? + vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${i.toString()} indents`): vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${i.toString()} indent`); } - } - else { + } else { vscode.window.showErrorMessage('No document currently active'); } } @@ -106,11 +105,10 @@ function getLeadingSpaces() { if (editor) { const lineNum = fetchLineNumber(editor); const textLine = fetchTextLine(editor); - + if (textLine.isEmptyOrWhitespace) { vscode.window.showInformationMessage(`Line ${lineNum.toString()} is empty`); - } - else { + } else { /* * set true to use method 1: find the number of leading spaces through arithmetic * set false to use method 2: find the index position of the first non-whitespace character in a 0-index @@ -121,21 +119,20 @@ function getLeadingSpaces() { const numSpaces = (calculateLeadingSpaces === true) ? pl.Lexer.getLeadingSpacesByArithmetic(textLine) : pl.Lexer.getLeadingSpacesByIndex(textLine); - - /* Ternary operator to change the tense of 'space' to 'spaces' for the output if numSpaces is greater than 1 */ - (numSpaces > 1) ? - vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${numSpaces.toString()} spaces`) : + + /* Ternary operator to change the tense of 'space' to 'spaces' for the output if numSpaces is 0 or greater than 1 */ + (numSpaces !== 1) ? + vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${numSpaces.toString()} spaces`): vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${numSpaces.toString()} space`); } - } - else { + } else { vscode.window.showErrorMessage('No document currently active'); } } function runLineContext() { let editor = vscode.window.activeTextEditor; - + if (editor) { // current text and line number let editorText = editor.document.getText(); @@ -144,15 +141,17 @@ function runLineContext() { let size = parseInt(editor.options.tabSize); let hard = !editor.options.insertSpaces; // initialize parser - let parser = new pl.Parser(editorText, { size, hard }); + let parser = new pl.Parser(editorText, { + size, + hard + }); parser.parse(); let context = parser.context(line); // build text let contentString = createContextString(context, line); - + vscode.window.showInformationMessage(contentString); - } - else { + } else { vscode.window.showErrorMessage('No document currently active'); } } @@ -161,22 +160,22 @@ function createContextString(context, line) { if (context.length < 1) { throw new Error('Cannot create context string for empty context'); } - + let contextString = 'Line ' + (line + 1); // 1 based - + if (context[0].token && context[0].token.attr) { contextString += ': ' + context[0].token.type.toString() + ' ' + context[0].token.attr.toString(); } for (let i = 1; i < context.length; i++) { let node = context[i]; - + if (node.label === 'root') { // root contextString += ' in the Document Root'; continue; } - + if (node.token.type !== pl.PylexSymbol.EMPTY && node.token.type !== pl.PylexSymbol.INDENT) { contextString += ' inside ' + node.token.type.toString(); @@ -192,12 +191,12 @@ function createContextString(context, line) { // the value of `#mindReader.reader.contextWindow` function runCursorContext() { let editor = vscode.window.activeTextEditor; - + if (!editor) { vscode.window.showErrorMessage('RunCursorContext: No Active Editor'); return; } - + const cursorPos = editor.selection.active; const text = editor.document.lineAt(cursorPos).text; const windowSize = vscode.workspace.getConfiguration('mindReader').get('reader.contextWindow'); @@ -208,24 +207,27 @@ function runCursorContext() { let maxPos = text.length; // clamp cursor start/end to new range let col = cursorPos.character; // effective column of the cursor position - + if (col < leadingWS) { // move effective start to first non-whitespace character in the line col = leadingWS; - } - else if (col > leadingWS + trimmedText.length - 1) { + } else if (col > leadingWS + trimmedText.length - 1) { // move effective end to last non-whitespace character in the line col = leadingWS + trimmedText.length - 1; } - + // generate list of space separate words with range data (start, end) // TODO: can find user position to be done in one pass let spaceWords = []; - + while (pos < maxPos && trimmedText.length > 0) { let word = trimmedText.replace(/ .*/, ''); - - spaceWords.push({ word, start: pos, end: pos + word.length }); + + spaceWords.push({ + word, + start: pos, + end: pos + word.length + }); // remove processed word from trimmed text const oldText = trimmedText; trimmedText = trimmedText.replace(/[^ ]+/, '').trimStart(); @@ -233,8 +235,9 @@ function runCursorContext() { pos += oldText.length - trimmedText.length; } // find word the user is in - let contextStart = -1, contextEnd = -1; - + let contextStart = -1, + contextEnd = -1; + for (let i = 0; i < spaceWords.length; i++) { if (col >= spaceWords[i].start && col <= spaceWords[i].end) { // found the word @@ -242,7 +245,7 @@ function runCursorContext() { contextEnd = Math.min(spaceWords.length, i + windowSize + 1); // clamp end index // construct cursor context string let contextString = ''; - + for (let i = contextStart; i < contextEnd; i++) { contextString += spaceWords[i].word + ' '; }