UNPKG

svelte-draft

Version:
38 lines (37 loc) 1.39 kB
"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;