svelte-draft
Version:
Develop svelte app in typedraft
38 lines (37 loc) • 1.39 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const opening_element_visitor_1 = require("./opening-element-visitor");
const closing_element_visitor_1 = require("./closing-element-visitor");
const jsx_expression_container_visitor_1 = require("./jsx-expression-container-visitor");
class TagGenerator {
constructor(tag) {
this.m_Tag = tag;
this.m_Fragments = [];
}
Generate() {
this.TraverseTag(this.m_Tag);
return this.m_Fragments.join("");
}
TraverseTag(tag) {
new opening_element_visitor_1.OpeningElementVisitor().Visit(tag.get("openingElement"), this);
tag.get("children").forEach(each => {
if (each.isJSXElement()) {
this.TraverseTag(each);
}
else if (each.isJSXText()) {
this.TraverseText(each);
}
else if (each.isJSXExpressionContainer()) {
new jsx_expression_container_visitor_1.JSXExpressionContainerVisitor().Visit(each, this);
}
});
new closing_element_visitor_1.ClosingElementVisitor().Visit(tag.get("closingElement"), this);
}
Append(fragment) {
this.m_Fragments.push(fragment);
}
TraverseText(text) {
this.Append(text.node.value);
}
}
exports.TagGenerator = TagGenerator;