Skip to content

Commit

Permalink
generator for creation
Browse files Browse the repository at this point in the history
  • Loading branch information
kbrsh committed Apr 28, 2018
1 parent e20a58b commit 4807076
Showing 1 changed file with 18 additions and 16 deletions.
34 changes: 18 additions & 16 deletions src/compiler/generator.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,31 @@
const generateCreateFragment = (element) => {
return `${element.children.map(generateCreate)} m[${element.index}] = []; `;
const generateCreateText = (element) => {
return `m[${element.index}] = document.createTextNode("");`;
};

const generateCreateText = (element) => {};

const generateCreateElement = (element) => {
return ` m[${element.index}] = document.createElement("${element.type}");`;
return `m[${element.index}] = document.createElement("${element.type}");`;
};

const generateCreate = (element) => {
switch (element.type) {
case "m-fragment":
return generateCreateFragment(element);
break;
case "m-text":
return generateCreateText(element);
break;
default:
return generateCreateElement(element);
if (Array.isArray(element)) {
return element.map(generateCreate);
} else {
switch (element.type) {
case "m-text":
return generateCreateText(element);
break;
default:
return element.children.map(generateCreate) + generateCreateElement(element);
}
}
};

const generateMount = () => {

};

const generateUpdate = () => {};

export const generate = (tree) => {
const prelude = `var data = instance.data; var m = instance.m;`;
return new Function(`return [function (instance) {${prelude}${generateCreate(tree)}}, function (instance) {${prelude}${generateUpdate(tree)}}]`)();
return new Function(`return [function () {var m = this.m;${generateCreate(tree)}}, function (root) {var m = this.m;${generateMount(tree)}}, function () {var m = this.m;${generateUpdate(tree)}}]`)();
};

0 comments on commit 4807076

Please sign in to comment.