@tririga/tri-polymer-upgrade
Version:
A tool for converting TRIRIGA UX views from Polymer 1 to Polymer 3
34 lines (28 loc) • 1.19 kB
JavaScript
;
const utils = require("../util/utils");
const jsc = require("jscodeshift");
const Serializer = require("./serializer.js");
class ElementSerializer extends Serializer {
constructor(outputDir) {
super(outputDir);
}
async serialize(scannedElement) {
this._serializeTemplate(scannedElement);
const serializedElement = this._serializeJS(scannedElement);
await this._writeFile(scannedElement, serializedElement);
}
_serializeTemplate(scannedElement) {
if (!scannedElement.template) {
return;
}
// convert template to string, wrapped a template literal. (ex: `template as string`)
const serializedTemplate = utils.serializeTemplate(scannedElement);
// `template as string` to html`template as string`
const templateExpression = jsc.taggedTemplateExpression(jsc.identifier("html"), serializedTemplate);
// html`template as string` to _template: html`template as string`
const templateProperty = jsc.property("init", jsc.identifier("_template"), templateExpression);
const elementDefinition = utils.getPolymerElementDefinition(scannedElement.js);
elementDefinition.properties.unshift(templateProperty);
}
};
module.exports = ElementSerializer;