From 93b3083bbf5127de40777a3b4cb8e29c8cbbe244 Mon Sep 17 00:00:00 2001 From: Josh Johnson Date: Fri, 23 Jun 2017 21:06:53 -0400 Subject: [PATCH] Switch to Double Quotes Closes #108 --- gulpfile.js | 10 +++---- src/Commands.ts | 32 ++++++++++----------- src/Extension.ts | 32 ++++++++++----------- src/providers/Completion.ts | 18 ++++++------ src/providers/Execution.ts | 50 ++++++++++++++++----------------- src/providers/Formatting.ts | 10 +++---- src/providers/Linting.ts | 6 ++-- src/providers/XPath.ts | 28 +++++++++--------- src/services/ChildProcess.ts | 12 ++++---- src/services/XPathEvaluator.ts | 8 +++--- src/services/XQueryCompleter.ts | 2 +- src/services/XQueryLinter.ts | 2 +- src/services/XmlFormatter.ts | 46 +++++++++++++++--------------- src/utils/RangeUtil.ts | 2 +- 14 files changed, 129 insertions(+), 129 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index b57dcf2..e71a309 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,9 +1,9 @@ -var gulp = require('gulp'); +var gulp = require("gulp"); -var shell = require('gulp-shell'); +var shell = require("gulp-shell"); -gulp.task('compile-typescript', function () { - gulp.src('package.json').pipe(shell('tsc')); +gulp.task("compile-typescript", function () { + gulp.src("package.json").pipe(shell("tsc")); }); -gulp.task('build', ['compile-typescript']); \ No newline at end of file +gulp.task("build", ["compile-typescript"]); \ No newline at end of file diff --git a/src/Commands.ts b/src/Commands.ts index 57731fe..f09705f 100644 --- a/src/Commands.ts +++ b/src/Commands.ts @@ -1,14 +1,14 @@ -import * as vsc from 'vscode'; -import * as ext from './Extension'; -import * as xpath from 'xpath'; -import { RangeUtil } from './utils/RangeUtil'; -import { XmlFormatter } from './services/XmlFormatter'; -import { XPathFeatureProvider } from './providers/XPath'; -import { XQueryExecutionProvider } from './providers/Execution'; -import { XmlFormattingEditProvider } from './providers/Formatting'; +import * as vsc from "vscode"; +import * as ext from "./Extension"; +import * as xpath from "xpath"; +import { RangeUtil } from "./utils/RangeUtil"; +import { XmlFormatter } from "./services/XmlFormatter"; +import { XPathFeatureProvider } from "./providers/XPath"; +import { XQueryExecutionProvider } from "./providers/Execution"; +import { XmlFormattingEditProvider } from "./providers/Formatting"; -const CFG_SECTION: string = 'xmlTools'; -const CFG_REMOVE_COMMENTS: string = 'removeCommentsOnMinify'; +const CFG_SECTION: string = "xmlTools"; +const CFG_REMOVE_COMMENTS: string = "removeCommentsOnMinify"; export class TextEditorCommands { static minifyXml(editor: vsc.TextEditor, edit: vsc.TextEditorEdit): void { @@ -54,13 +54,13 @@ export class TextEditorCommands { editBuilder.replace(edits[i].range, edits[i].newText); // wiggle the cursor to deselect the formatted XML (is there a non-hacky way to go about this?) - await vsc.commands.executeCommand('cursorMove', { - to: 'left', - by: 'character' + await vsc.commands.executeCommand("cursorMove", { + to: "left", + by: "character" }); - await vsc.commands.executeCommand('cursorMove', { - to: 'right', - by: 'character' + await vsc.commands.executeCommand("cursorMove", { + to: "right", + by: "character" }); }); } diff --git a/src/Extension.ts b/src/Extension.ts index 74b4742..2e600a9 100644 --- a/src/Extension.ts +++ b/src/Extension.ts @@ -1,30 +1,30 @@ -import * as vsc from 'vscode'; -import { TextEditorCommands } from './Commands'; -import { XmlFormattingEditProvider } from './providers/Formatting'; -import { XQueryLintingFeatureProvider } from './providers/Linting'; -import { XQueryCompletionItemProvider } from './providers/Completion'; +import * as vsc from "vscode"; +import { TextEditorCommands } from "./Commands"; +import { XmlFormattingEditProvider } from "./providers/Formatting"; +import { XQueryLintingFeatureProvider } from "./providers/Linting"; +import { XQueryCompletionItemProvider } from "./providers/Completion"; import { XmlTreeViewDataProvider } from "./providers/XmlTreeView"; export var GlobalState: vsc.Memento; export var WorkspaceState: vsc.Memento; -const LANG_XML: string = 'xml'; -const LANG_XSL: string = 'xsl'; -const LANG_XQUERY: string = 'xquery;' -const MEM_QUERY_HISTORY: string = 'xpathQueryHistory'; +const LANG_XML: string = "xml"; +const LANG_XSL: string = "xsl"; +const LANG_XQUERY: string = "xquery;" +const MEM_QUERY_HISTORY: string = "xpathQueryHistory"; export function activate(ctx: vsc.ExtensionContext) { - console.log('activate extension'); + console.log("activate extension"); // expose global and workspace state to the entire extension GlobalState = ctx.globalState; WorkspaceState = ctx.workspaceState; // register palette commands ctx.subscriptions.push( - vsc.commands.registerTextEditorCommand('xmlTools.minifyXml', TextEditorCommands.minifyXml), - vsc.commands.registerTextEditorCommand('xmlTools.evaluateXPath', TextEditorCommands.evaluateXPath), - vsc.commands.registerTextEditorCommand('xmlTools.executeXQuery', TextEditorCommands.executeXQuery), - vsc.commands.registerTextEditorCommand('xmlTools.formatAsXml', TextEditorCommands.formatAsXml) + vsc.commands.registerTextEditorCommand("xmlTools.minifyXml", TextEditorCommands.minifyXml), + vsc.commands.registerTextEditorCommand("xmlTools.evaluateXPath", TextEditorCommands.evaluateXPath), + vsc.commands.registerTextEditorCommand("xmlTools.executeXQuery", TextEditorCommands.executeXQuery), + vsc.commands.registerTextEditorCommand("xmlTools.formatAsXml", TextEditorCommands.formatAsXml) ); // register language feature providers @@ -32,7 +32,7 @@ export function activate(ctx: vsc.ExtensionContext) { vsc.languages.registerDocumentFormattingEditProvider([LANG_XML, LANG_XSL], new XmlFormattingEditProvider()), vsc.languages.registerDocumentRangeFormattingEditProvider([LANG_XML, LANG_XSL], new XmlFormattingEditProvider()), - vsc.languages.registerCompletionItemProvider(LANG_XQUERY, new XQueryCompletionItemProvider(), ':', '$') + vsc.languages.registerCompletionItemProvider(LANG_XQUERY, new XQueryCompletionItemProvider(), ":", "$") ); // listen to editor events (for linting) @@ -61,7 +61,7 @@ function _handleContextChange(editor: vsc.TextEditor): void { } switch (editor.document.languageId) { - case 'xquery': + case "xquery": XQueryLintingFeatureProvider.provideXQueryDiagnostics(editor); break; } diff --git a/src/providers/Completion.ts b/src/providers/Completion.ts index dad38d5..fcbad7c 100644 --- a/src/providers/Completion.ts +++ b/src/providers/Completion.ts @@ -1,5 +1,5 @@ -import * as vsc from 'vscode'; -import { XQueryCompleter, XQueryCompletionItem } from '../services/XQueryCompleter'; +import * as vsc from "vscode"; +import { XQueryCompleter, XQueryCompletionItem } from "../services/XQueryCompleter"; export class XQueryCompletionItemProvider implements vsc.CompletionItemProvider { provideCompletionItems(document: vsc.TextDocument, position: vsc.Position): vsc.CompletionItem[] { @@ -14,20 +14,20 @@ export class XQueryCompletionItemProvider implements vsc.CompletionItemProvider switch (completion.meta) { // functions (always qualified with a colon) - case 'function': + case "function": item.kind = vsc.CompletionItemKind.Function; - let funcStart = (completion.value.indexOf(':') + 1); - let funcEnd = completion.value.indexOf('('); + let funcStart = (completion.value.indexOf(":") + 1); + let funcEnd = completion.value.indexOf("("); item.insertText = completion.value.substring(funcStart, funcEnd); break; // variables and parameters (always qualified with a dollar sign) - case 'Let binding': - case 'Local variable': - case 'Window variable': - case 'Function parameter': + case "Let binding": + case "Local variable": + case "Window variable": + case "Function parameter": item.kind = vsc.CompletionItemKind.Variable; item.insertText = completion.value.substring(1); break; diff --git a/src/providers/Execution.ts b/src/providers/Execution.ts index 559dea1..1ac3dee 100644 --- a/src/providers/Execution.ts +++ b/src/providers/Execution.ts @@ -1,41 +1,41 @@ -import * as vsc from 'vscode'; -import { ChildProcess } from '../services/ChildProcess'; +import * as vsc from "vscode"; +import { ChildProcess } from "../services/ChildProcess"; -const CFG_SECTION: string = 'xmlTools'; -const CFG_XQEXEC: string = 'xqueryExecutionEngine'; -const CFG_XQARGS: string = 'xqueryExecutionArguments'; +const CFG_SECTION: string = "xmlTools"; +const CFG_XQEXEC: string = "xqueryExecutionEngine"; +const CFG_XQARGS: string = "xqueryExecutionArguments"; export class XQueryExecutionProvider { static async executeXQueryAsync(editor: vsc.TextEditor): Promise { // this disposable will be used for creating status bar messages let disposable: vsc.Disposable; - if (editor.document.languageId !== 'xquery') { - vsc.window.showErrorMessage('This action can only be performed on an XQuery file.'); + if (editor.document.languageId !== "xquery") { + vsc.window.showErrorMessage("This action can only be performed on an XQuery file."); return; } let executable = vsc.workspace.getConfiguration(CFG_SECTION).get(CFG_XQEXEC, null); let args = vsc.workspace.getConfiguration(CFG_SECTION).get(CFG_XQARGS, []); - if (!executable || executable == '') { - let action = await vsc.window.showWarningMessage('An XQuery execution engine has not been defined.', 'Define Now'); + if (!executable || executable == "") { + let action = await vsc.window.showWarningMessage("An XQuery execution engine has not been defined.", "Define Now"); - if (action == 'Define Now') { - vsc.commands.executeCommand('workbench.action.openGlobalSettings'); + if (action == "Define Now") { + vsc.commands.executeCommand("workbench.action.openGlobalSettings"); } return; } let inputFile: vsc.Uri; - disposable = vsc.window.setStatusBarMessage('Searching for XML files in folder...'); - let files: vsc.Uri[] = await vsc.workspace.findFiles('**/*.xml', '', 100); + disposable = vsc.window.setStatusBarMessage("Searching for XML files in folder..."); + let files: vsc.Uri[] = await vsc.workspace.findFiles("**/*.xml", "", 100); disposable.dispose(); // user does not have a folder open - prompt for file name - if (typeof files === 'undefined') { - vsc.window.showErrorMessage('You must have a folder opened in VS Code to use this feature.'); + if (typeof files === "undefined") { + vsc.window.showErrorMessage("You must have a folder opened in VS Code to use this feature."); return; } @@ -45,16 +45,16 @@ export class XQueryExecutionProvider { let qpItems: any[] = new Array(); files.forEach((file) => { - let filename: string = file.fsPath.replace('\\', '/'); + let filename: string = file.fsPath.replace("\\", "/"); qpItems.push({ // must implement vscode.QuickPickItem - label: filename.substring(filename.lastIndexOf('/') + 1), + label: filename.substring(filename.lastIndexOf("/") + 1), description: file.fsPath, file: file }); }); - let selection = await vsc.window.showQuickPick(qpItems, { placeHolder: 'Please select an input file.' }); + let selection = await vsc.window.showQuickPick(qpItems, { placeHolder: "Please select an input file." }); if (!selection) { return; @@ -82,8 +82,8 @@ export class XQueryExecutionProvider { if (outputPath) { outputPath = await vsc.window.showInputBox({ - placeHolder: 'ex. C:\\TEMP\XQueryOutput\\MyOutputFile.xml', - prompt: 'Please specify the output file path. Existing file behavior is determined by the execution engine you have specified.', + placeHolder: "ex. C:\\TEMP\XQueryOutput\\MyOutputFile.xml", + prompt: "Please specify the output file path. Existing file behavior is determined by the execution engine you have specified.", value: outputPath }); @@ -91,12 +91,12 @@ export class XQueryExecutionProvider { } // call out to the execution engine - disposable = vsc.window.setStatusBarMessage('Executing XQuery Script...'); + disposable = vsc.window.setStatusBarMessage("Executing XQuery Script..."); args = args.map((value: string) => { return value - .replace('$(script)', editor.document.uri.fsPath) - .replace('$(input)', inputFile.fsPath) - .replace('$(project)', vsc.workspace.rootPath); + .replace("$(script)", editor.document.uri.fsPath) + .replace("$(input)", inputFile.fsPath) + .replace("$(project)", vsc.workspace.rootPath); }); try { @@ -106,7 +106,7 @@ export class XQueryExecutionProvider { catch (error) { if (error.message.search(/[Ll]ine:?\s*\d+/gm) > -1) { let match: RegExpExecArray = /[Ll]ine:?\s*\d+/gm.exec(error.message); - let line: number = (Number.parseInt(match[0].replace(/([Ll]ine:?\s*)|\s/, '')) - 1); + let line: number = (Number.parseInt(match[0].replace(/([Ll]ine:?\s*)|\s/, "")) - 1); let selection: string = await vsc.window.showErrorMessage(error.message, `Go to Line ${line}`); diff --git a/src/providers/Formatting.ts b/src/providers/Formatting.ts index bd3a900..5bc3faf 100644 --- a/src/providers/Formatting.ts +++ b/src/providers/Formatting.ts @@ -1,9 +1,9 @@ -import * as vsc from 'vscode'; -import { RangeUtil } from '../utils/RangeUtil'; -import { XmlFormatter, IXmlFormatterOptions } from '../services/XmlFormatter'; +import * as vsc from "vscode"; +import { RangeUtil } from "../utils/RangeUtil"; +import { XmlFormatter, IXmlFormatterOptions } from "../services/XmlFormatter"; -const CFG_SECTION: string = 'xmlTools'; -const CFG_SPLIT_NAMESPACES: string = 'splitXmlnsOnFormat'; +const CFG_SECTION: string = "xmlTools"; +const CFG_SPLIT_NAMESPACES: string = "splitXmlnsOnFormat"; export class XmlFormattingEditProvider implements vsc.DocumentFormattingEditProvider, vsc.DocumentRangeFormattingEditProvider { provideDocumentFormattingEdits(document: vsc.TextDocument, options: vsc.FormattingOptions): vsc.TextEdit[] { diff --git a/src/providers/Linting.ts b/src/providers/Linting.ts index 3f8992a..2658554 100644 --- a/src/providers/Linting.ts +++ b/src/providers/Linting.ts @@ -1,12 +1,12 @@ -import * as vsc from 'vscode'; -import { XQueryLinter, XQueryDiagnostic } from '../services/XQueryLinter'; +import * as vsc from "vscode"; +import { XQueryLinter, XQueryDiagnostic } from "../services/XQueryLinter"; export class XQueryLintingFeatureProvider { private static _coreDiagnostics: vsc.DiagnosticCollection; static get coreDiagnostics(): vsc.DiagnosticCollection { if (!XQueryLintingFeatureProvider._coreDiagnostics) { - XQueryLintingFeatureProvider._coreDiagnostics = vsc.languages.createDiagnosticCollection('XQueryDiagnostics'); + XQueryLintingFeatureProvider._coreDiagnostics = vsc.languages.createDiagnosticCollection("XQueryDiagnostics"); } return XQueryLintingFeatureProvider._coreDiagnostics; diff --git a/src/providers/XPath.ts b/src/providers/XPath.ts index adca124..b5ddd5e 100644 --- a/src/providers/XPath.ts +++ b/src/providers/XPath.ts @@ -1,13 +1,13 @@ -import * as vsc from 'vscode'; -import * as ext from '../Extension'; -import { XPathEvaluator, EvaluatorResult, EvaluatorResultType } from '../services/XPathEvaluator'; +import * as vsc from "vscode"; +import * as ext from "../Extension"; +import { XPathEvaluator, EvaluatorResult, EvaluatorResultType } from "../services/XPathEvaluator"; -const CFG_SECTION: string = 'xmlTools'; -const CFG_PERSIST_QUERY: string = 'persistXPathQuery'; -const CFG_IGNORE_DEFAULT_XMLNS: string = 'ignoreDefaultNamespace'; -const MEM_QUERY_HISTORY: string = 'xpathQueryHistory'; -const MEM_QUERY_LAST: string = 'xPathQueryLast'; -const OUTPUT_CHANNEL: string = 'XPath Results'; +const CFG_SECTION: string = "xmlTools"; +const CFG_PERSIST_QUERY: string = "persistXPathQuery"; +const CFG_IGNORE_DEFAULT_XMLNS: string = "ignoreDefaultNamespace"; +const MEM_QUERY_HISTORY: string = "xpathQueryHistory"; +const MEM_QUERY_LAST: string = "xPathQueryLast"; +const OUTPUT_CHANNEL: string = "XPath Results"; export class XPathFeatureProvider { static async evaluateXPathAsync(editor: vsc.TextEditor, edit: vsc.TextEditorEdit): Promise { @@ -21,7 +21,7 @@ export class XPathFeatureProvider { // if not, try pulling the last query ran, regardless of document // NOTE: if the user has focus on the output channel when opening the xquery prompt, the channel is the "active" document let history: HistoricQuery[] = memento.get(MEM_QUERY_HISTORY, new Array()); - let globalLastQuery: string = memento.get(MEM_QUERY_LAST, ''); + let globalLastQuery: string = memento.get(MEM_QUERY_LAST, ""); let lastQuery: HistoricQuery = history.find((item: HistoricQuery) => { if (item.uri == editor.document.uri.toString()) { @@ -32,7 +32,7 @@ export class XPathFeatureProvider { }); // set the inital display value and prompt the user - let query: string = ''; + let query: string = ""; if (persistQueries) { if (lastQuery) { @@ -45,8 +45,8 @@ export class XPathFeatureProvider { } query = await vsc.window.showInputBox({ - placeHolder: 'XPath Query', - prompt: 'Please enter an XPath query to evaluate.', + placeHolder: "XPath Query", + prompt: "Please enter an XPath query to evaluate.", value: query }); @@ -73,7 +73,7 @@ export class XPathFeatureProvider { outputChannel.clear(); outputChannel.appendLine(`XPath Query: ${query}`); - outputChannel.append('\n'); + outputChannel.append("\n"); if (evalResult.type === EvaluatorResultType.NODE_COLLECTION) { (evalResult.result as Node[]).forEach((node: XmlNode) => { diff --git a/src/services/ChildProcess.ts b/src/services/ChildProcess.ts index 5af998e..53257eb 100644 --- a/src/services/ChildProcess.ts +++ b/src/services/ChildProcess.ts @@ -1,22 +1,22 @@ -let child_process = require('child_process'); +let child_process = require("child_process"); export class ChildProcess { static async spawnAsync(executable: string, args: string[]): Promise { return new Promise((resolve, reject) => { - let output: string = ''; + let output: string = ""; let handle = child_process.spawn(executable, args); - handle.stdout.on('data', (data: string) => { + handle.stdout.on("data", (data: string) => { output += data; }); - handle.stderr.on('data', (data: string) => { + handle.stderr.on("data", (data: string) => { output += data; }); - handle.on('close', (code: string) => { - if (code == '0') { + handle.on("close", (code: string) => { + if (code == "0") { resolve(); } diff --git a/src/services/XPathEvaluator.ts b/src/services/XPathEvaluator.ts index b7a1a54..c67ee58 100644 --- a/src/services/XPathEvaluator.ts +++ b/src/services/XPathEvaluator.ts @@ -1,6 +1,6 @@ -import * as xpath from 'xpath'; +import * as xpath from "xpath"; -let DOMParser = require('xmldom').DOMParser; +let DOMParser = require("xmldom").DOMParser; export class EvaluatorResult { type: EvaluatorResultType; @@ -16,13 +16,13 @@ export class XPathEvaluator { static evaluate(query: string, xml: string, ignoreDefaultNamespace: boolean): EvaluatorResult { if (ignoreDefaultNamespace) { xml = xml.replace(/xmlns=".+"/g, (match: string) => { - return match.replace(/xmlns/g, 'xmlns:default'); + return match.replace(/xmlns/g, "xmlns:default"); }); } let nodes: Node[] = new Array(); - let xdoc: Document = new DOMParser().parseFromString(xml, 'text/xml'); + let xdoc: Document = new DOMParser().parseFromString(xml, "text/xml"); let resolver: xpath.XPathNSResolver = xpath.createNSResolver(xdoc); let result: xpath.XPathResult = xpath.evaluate( diff --git a/src/services/XQueryCompleter.ts b/src/services/XQueryCompleter.ts index 8bc4467..463f864 100644 --- a/src/services/XQueryCompleter.ts +++ b/src/services/XQueryCompleter.ts @@ -1,4 +1,4 @@ -let XQLint = require('xqlint').XQLint; +let XQLint = require("xqlint").XQLint; export class XQueryCompleter { constructor(script: string) { diff --git a/src/services/XQueryLinter.ts b/src/services/XQueryLinter.ts index 30e5c8a..b893a0e 100644 --- a/src/services/XQueryLinter.ts +++ b/src/services/XQueryLinter.ts @@ -1,4 +1,4 @@ -let XQLint = require('xqlint').XQLint; +let XQLint = require("xqlint").XQLint; export class XQueryLinter { static SEVERITY_WARNING: number = 1; diff --git a/src/services/XmlFormatter.ts b/src/services/XmlFormatter.ts index 6cf6e72..f92692c 100644 --- a/src/services/XmlFormatter.ts +++ b/src/services/XmlFormatter.ts @@ -3,19 +3,19 @@ export class XmlFormatter { constructor(options?: IXmlFormatterOptions) { options = options || {}; - if (typeof options.preferSpaces === 'undefined') { + if (typeof options.preferSpaces === "undefined") { options.preferSpaces = false; } - if (typeof options.splitNamespaces === 'undefined') { + if (typeof options.splitNamespaces === "undefined") { options.splitNamespaces = true; } options.tabSize = options.tabSize || 4; - options.newLine = options.newLine || '\n'; + options.newLine = options.newLine || "\n"; - this.newLine = options.newLine || '\n'; - this.indentPattern = (options.preferSpaces) ? ' '.repeat(options.tabSize) : '\t'; + this.newLine = options.newLine || "\n"; + this.indentPattern = (options.preferSpaces) ? " ".repeat(options.tabSize) : "\t"; this.splitNamespaces = options.splitNamespaces; } @@ -25,19 +25,19 @@ export class XmlFormatter { format(xml: string): string { xml = this.minify(xml, false); - xml = xml.replace(/ else if (/^<(\w|:)/.test(parts[i - 1]) && /^<\/(\w|:)/.test(parts[i]) - && /^<[\w:\-\.\,\/]+/.exec(parts[i - 1])[0] == /^<\/[\w:\-\.\,]+/.exec(parts[i])[0].replace('/', '')) { + && /^<[\w:\-\.\,\/]+/.exec(parts[i - 1])[0] == /^<\/[\w:\-\.\,]+/.exec(parts[i])[0].replace("/", "")) { output += parts[i]; if (!inComment) level--; @@ -118,31 +118,31 @@ export class XmlFormatter { } minify(xml: string, removeComments?: boolean): string { - if (typeof removeComments === 'undefined') { + if (typeof removeComments === "undefined") { removeComments = false; } xml = this._stripLineBreaks(xml); // all line breaks outside of CDATA elements - xml = (removeComments) ? xml.replace(/\/g, '') : xml; - xml = xml.replace(/>\s{0,}<'); // insignificant whitespace between tags - xml = xml.replace(/"\s+(?=[^\s]+=)/g, '" '); // spaces between attributes - xml = xml.replace(/"\s+(?=>)/g, '"'); // spaces between the last attribute and tag close (>) - xml = xml.replace(/"\s+(?=\/>)/g, '" '); // spaces between the last attribute and tag close (/>) + xml = (removeComments) ? xml.replace(/\/g, "") : xml; + xml = xml.replace(/>\s{0,}<"); // insignificant whitespace between tags + xml = xml.replace(/"\s+(?=[^\s]+=)/g, "\" "); // spaces between attributes + xml = xml.replace(/"\s+(?=>)/g, "\""); // spaces between the last attribute and tag close (>) + xml = xml.replace(/"\s+(?=\/>)/g, "\" "); // spaces between the last attribute and tag close (/>) xml = xml.replace(/[^ <>="]\s+[^ <>="]+=/g, (match: string) => { // spaces between the node name and the first attribute - return match.replace(/\s+/g, ' '); + return match.replace(/\s+/g, " "); }); return xml; } private _getIndent(level: number, trailingValue?: string): string { - trailingValue = trailingValue || ''; + trailingValue = trailingValue || ""; return `${this.newLine}${this.indentPattern.repeat(level)}${trailingValue}`; } private _stripLineBreaks(xml: string): string { - let output: string = ''; + let output: string = ""; let inTag: boolean = false; let inTagName: boolean = false; let inCdata: boolean = false; @@ -153,15 +153,15 @@ export class XmlFormatter { let prev: string = xml.charAt(i - 1); let next: string = xml.charAt(i + 1); - if (char == '!' && (xml.substr(i, 8) == '![CDATA[' || xml.substr(i, 3) == '!--')) { + if (char == "!" && (xml.substr(i, 8) == "![CDATA[" || xml.substr(i, 3) == "!--")) { inCdata = true; } - else if (char == ']' && (xml.substr(i, 3) == ']]>')) { + else if (char == "]" && (xml.substr(i, 3) == "]]>")) { inCdata = false; } - else if (char == '-' && (xml.substr(i, 3) == '-->')) { + else if (char == "-" && (xml.substr(i, 3) == "-->")) { inCdata = false; } diff --git a/src/utils/RangeUtil.ts b/src/utils/RangeUtil.ts index ebb3dc6..b51b412 100644 --- a/src/utils/RangeUtil.ts +++ b/src/utils/RangeUtil.ts @@ -1,4 +1,4 @@ -import * as vsc from 'vscode'; +import * as vsc from "vscode"; export class RangeUtil { static getRangeForDocument(document: vsc.TextDocument): vsc.Range {