UNPKG

@tomjs/vscode-utils

Version:

Some utilities to simplify the development of VSCode Extensions

2 lines (1 loc) 2.97 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _ctx;function setExtensionContext(ctx){_ctx=ctx}function getExtensionContext(){return _ctx}function getCtx(){return _ctx}var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs);var _path = require('path'); var _path2 = _interopRequireDefault(_path);var _node = require('@tomjs/node');var _vscode = require('vscode');var DEFAULT_LANGUAGE="en";var DEFAULT_NLS="package.nls.json";var messages={};function loadI18n(){const ctx=getCtx();const language=_vscode.env.language.toLocaleLowerCase();let name=language===DEFAULT_LANGUAGE?DEFAULT_NLS:`package.nls.${language}.json`;const nlsPath=_path2.default.join(ctx.extensionPath,name);if(!_fs2.default.existsSync(nlsPath)){name=DEFAULT_NLS}messages=Object.assign({},_node.readJsonSync.call(void 0, _path2.default.join(ctx.extensionPath,DEFAULT_NLS)),_node.readJsonSync.call(void 0, nlsPath))}var I18n=class{t(...params){if(params.length===0){return""}const key=params[0];const values=_nullishCoalesce(params[1], () => ({}));const text=messages[key]||"";if(Object.keys(values).length===0){return text}return text.replace(/{([^}]+)}/g,(match,group)=>_nullishCoalesce(values[group], () => (match)))}};var i18n=new I18n;function getActiveWorkspaceFolder(){let activeWorkspace;const editor=_vscode.window.activeTextEditor;if(editor){activeWorkspace=_vscode.workspace.getWorkspaceFolder(editor.document.uri)}else{if(_vscode.workspace.workspaceFolders&&_vscode.workspace.workspaceFolders.length>0){activeWorkspace=_vscode.workspace.workspaceFolders[0]}}return activeWorkspace}function getActiveWorkspaceFolderUri(){var _a;return(_a=getActiveWorkspaceFolder())==null?void 0:_a.uri}function getActiveWorkspaceFolderPath(){var _a;return(_a=getActiveWorkspaceFolder())==null?void 0:_a.uri.fsPath}function getAllWorkspaceFolders(){const folders=[];if(_vscode.workspace.workspaceFolders){folders.push(..._vscode.workspace.workspaceFolders.map(s=>({...s,current:false})))}if(folders.length===0){return[]}const activePath=getActiveWorkspaceFolderPath();const current=folders.find(s=>s.uri.fsPath===activePath);if(current){current.active=true}return folders}function initExtension(ctx){setExtensionContext(ctx);loadI18n()}var src_default={init:initExtension};exports.default = src_default; exports.getActiveWorkspaceFolder = getActiveWorkspaceFolder; exports.getActiveWorkspaceFolderPath = getActiveWorkspaceFolderPath; exports.getActiveWorkspaceFolderUri = getActiveWorkspaceFolderUri; exports.getAllWorkspaceFolders = getAllWorkspaceFolders; exports.getCtx = getCtx; exports.getExtensionContext = getExtensionContext; exports.i18n = i18n; exports.initExtension = initExtension; exports.loadI18n = loadI18n; exports.setExtensionContext = setExtensionContext;