@unisnips/sublime
Version:
Utilities for converting sublime text in unisnips project
55 lines • 2.18 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('[sublime] variable is not supported');
variableOffset++;
var mockedIndex = variableOffset + maxIndex;
newDesc = "${" + mockedIndex + (description ? ":" + description : '') + "}";
}
else if (valueType === 'script') {
console.warn('[sublime] 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 results = [];
defs.forEach(function (def) {
var replacements = makeReplacements(def.placeholders);
var newBody = core_1.applyReplacements(def, replacements);
var sublimeSnippet = {
tabTrigger: def.trigger,
content: newBody,
description: def.description,
};
var str = "<snippet>\n\u00A0\u00A0<content><![CDATA[\n" + sublimeSnippet.content + "\n ]]></content>\n <tabTrigger>" + sublimeSnippet.tabTrigger + "</tabTrigger>\n <description>" + sublimeSnippet.description + "</description>\n</snippet>";
results.push(str);
});
return {
content: results.join('\n'),
};
};
//# sourceMappingURL=generate.js.map