UNPKG

@unisnips/atom

Version:

Utilities for converting Atom in unisnips project

64 lines 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var core_1 = require("@unisnips/core"); function makeReplacements(placeholders) { var replacements = []; var maxIndex = 0; placeholders.forEach(function (placeholder) { if (placeholder.valueType === 'tabstop') { maxIndex = Math.max(maxIndex, placeholder.index); } }); var variableOffset = 0; placeholders.forEach(function (placeholder) { var valueType = placeholder.valueType, description = placeholder.description, index = placeholder.index; var newDesc; if (valueType === 'tabstop') { newDesc = "${" + index + (description ? ":" + description : '') + "}"; } else if (valueType === 'variable') { console.warn('[atom] variable is not supported'); variableOffset++; var mockedIndex = variableOffset + maxIndex; newDesc = "${" + mockedIndex + (description ? ":" + description : '') + "}"; } else if (valueType === 'script') { console.warn('[atom] script placeholder is not supported'); } var replacement = { type: 'string', placeholder: placeholder, replaceContent: newDesc, }; replacements.push(replacement); }); return replacements; } exports.generateSnippets = function (defs, opts) { if (opts === void 0) { opts = {}; } var resultObj = {}; defs.forEach(function (def) { var replacements = makeReplacements(def.placeholders); var newBody = core_1.applyReplacements(def, replacements); var name = def.description || def.trigger; resultObj[name] = { prefix: def.trigger, body: newBody, }; }); // const generatedContent = CSON.stringify(resultObj, null, 2) var generatedContent = Object.keys(resultObj) .reduce(function (out, key) { var item = resultObj[key]; var content = "'" + key + "':\n prefix: '" + item.prefix + "'\n body: '''\n" + item.body + "\n '''"; out.push(content); return out; }, []) .join('\n'); // eslint-disable-next-line var content = ['# generated by unisnips', generatedContent, '# end unisnips'].join('\n'); return { content: content, }; }; //# sourceMappingURL=generate.js.map