svelte-draft
Version:
Develop svelte app in typedraft
50 lines (49 loc) • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const typedraft_1 = require("typedraft");
const template_section_1 = require("./template-section");
function TranslateScript(body) {
const translated = [];
body.get("body").forEach(each => {
if (each.isVariableDeclaration() && each.node.declarations.length === 1) {
const [declarator] = each.get("declarations");
if (typedraft_1.ToString(declarator.node).startsWith("$")) {
return;
}
const init = declarator.get("init");
if (init.isIdentifier() && init.node.name === "props") {
const id = declarator.get("id");
if (id.isObjectPattern()) {
const raw_props = id.get("properties");
const props_info = raw_props.map((each) => {
const key = each.node.key.name;
let value = null;
const raw_value = each.get("value");
if (raw_value.isAssignmentPattern()) {
value = typedraft_1.ToString(raw_value.node.right);
}
return {
key,
value
};
});
const props_init = props_info.map(each => {
const value = each.value === null ? "" : ` = ${each.value}`;
return typedraft_1.ToAst(`export let ${each.key}${value};`);
});
translated.push(...props_init);
}
}
else {
translated.push(each.node);
}
}
else if (!template_section_1.IsTemplate(each)) {
translated.push(each.node);
}
});
return translated.map(each => `${typedraft_1.ToString(each, {
comments: false
})}`).join("\n");
}
exports.TranslateScript = TranslateScript;