codess
Version:
vscode代码片段管理器,通过 本地包(本地某个文件夹) 或官网的 远程包(代码片段集合) 生成本地项目的 vscode 代码片段配置。
65 lines (64 loc) • 2.31 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.byJsonGenSnippts = byJsonGenSnippts;
const fs_1 = __importDefault(require("fs"));
const is_1 = require("../yayaluoya-tool/is");
const path_1 = __importDefault(require("path"));
const web_i_1 = require("../web_i");
const reservedName_1 = require("../utils/reservedName");
function byJsonGenSnippts(filePaths) {
let snippets = [];
for (let filePath of filePaths) {
let fileName = path_1.default.parse(filePath).name;
let item = JSON.parse(fs_1.default.readFileSync(filePath).toString());
for (let i in item) {
let scope = item[i].scope || '';
let prefix = item[i].prefix;
let body = item[i].body;
let description = item[i].description;
snippets.push({
type: 'snippet',
scope: [
(0, web_i_1.languageIds)()
.filter((_) => !['snippets'].includes(_))
.find((_) => _ == fileName),
...scope.slice(','),
].filter(Boolean),
name: i,
body: (0, is_1.isArray)(body) ? body.join('\n') : body,
prefix,
description,
});
}
}
let contents = [];
snippets.forEach((_) => {
var _a;
let prefix = (0, reservedName_1.reservedName)(_.prefix) ? (0, reservedName_1.resetReservedName)(_.prefix) : _.prefix;
let item = contents.find((__) => __.name == prefix);
if (!item) {
item = {
name: prefix,
content: '',
};
contents.push(item);
}
item.content += [
`## ${_.prefix}`,
`#### ${_.name || ''}`,
`${_.description || ''}`,
`\`\`\`${((_a = _.scope) === null || _a === void 0 ? void 0 : _a.join(',')) || ''}`,
`${(_.body || '').trim()}`,
`\`\`\``,
'',
'',
].join('\n');
});
return contents.map((_) => {
_.content = _.content.trim();
return _;
});
}