UNPKG

dockerfile-language-service

Version:

A language service for Dockerfiles to enable the creation of feature-rich Dockerfile editors.

61 lines (60 loc) 2.86 kB
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "vscode-languageserver-types", "dockerfile-ast"], factory); } })(function (require, exports) { /* -------------------------------------------------------------------------------------------- * Copyright (c) Remy Suen. 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 }); exports.DockerSymbols = void 0; var vscode_languageserver_types_1 = require("vscode-languageserver-types"); var dockerfile_ast_1 = require("dockerfile-ast"); var DockerSymbols = /** @class */ (function () { function DockerSymbols() { } DockerSymbols.prototype.createSymbolInformation = function (name, textDocumentURI, range, kind, deprecated) { if (deprecated) { return { name: name, location: { uri: textDocumentURI, range: range }, kind: kind, deprecated: true }; } return { name: name, location: { uri: textDocumentURI, range: range }, kind: kind }; }; DockerSymbols.prototype.parseSymbolInformation = function (textDocument, content) { var dockerfile = dockerfile_ast_1.DockerfileParser.parse(content); var symbols = []; for (var _i = 0, _a = dockerfile.getDirectives(); _i < _a.length; _i++) { var directive = _a[_i]; symbols.push(this.createSymbolInformation(directive.getName(), textDocument.uri, directive.getNameRange(), vscode_languageserver_types_1.SymbolKind.Property, false)); } for (var _b = 0, _c = dockerfile.getInstructions(); _b < _c.length; _b++) { var instruction = _c[_b]; var keyword = instruction.getKeyword(); symbols.push(this.createSymbolInformation(instruction.getInstruction(), textDocument.uri, instruction.getInstructionRange(), vscode_languageserver_types_1.SymbolKind.Function, keyword === dockerfile_ast_1.Keyword.MAINTAINER)); } return symbols; }; return DockerSymbols; }()); exports.DockerSymbols = DockerSymbols; });