Skip to content

Commit

Permalink
generate create + mount for expressions and generate dependencies
Browse files Browse the repository at this point in the history
  • Loading branch information
kbrsh committed Apr 29, 2018
1 parent 9ab89e5 commit 6def4af
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/compiler/generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ const generateCreate = (element) => {
case "m-fragment":
return element.children.map(generateCreate).join("");
break;
case "m-expression":
return `m[${element.index}] = document.createTextNode("");`;
break;
case "m-text":
return `m[${element.index}] = document.createTextNode("${element.content}");`;
break;
Expand Down Expand Up @@ -32,7 +35,7 @@ const generateMount = (element, parent) => {
default:
const elementPath = `m[${element.index}]`;

if (element.type !== "m-text") {
if (element.type !== "m-text" && element.type !== "m-expression") {
generatedMount += element.children.map((child) => generateMount(child, elementPath)).join("");
}

Expand All @@ -45,5 +48,5 @@ const generateMount = (element, parent) => {
const generateUpdate = () => {};

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

0 comments on commit 6def4af

Please sign in to comment.