@unisnips/atom
Version:
Utilities for converting Atom in unisnips project
64 lines • 2.4 kB
JavaScript
;
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