Skip to content

Commit

Permalink
build
Browse files Browse the repository at this point in the history
  • Loading branch information
kbrsh committed Apr 26, 2018
1 parent 69fdd42 commit 462b86e
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 3 deletions.
54 changes: 52 additions & 2 deletions dist/moon.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
}
};

var parseIndex;

var pushChild = function (child, stack) {
stack[stack.length - 1].children.push(child);
};
Expand All @@ -35,6 +37,7 @@

if (char === ">") {
var element = {
index: parseIndex++,
type: type,
children: []
};
Expand All @@ -46,6 +49,7 @@
break;
} else if (char === "/" && input[index + 1] === ">") {
pushChild({
index: parseIndex++,
type: type,
children: []
}, stack);
Expand Down Expand Up @@ -96,6 +100,7 @@
}

pushChild({
index: parseIndex++,
type: "m-text",
content: content
}, stack);
Expand All @@ -105,8 +110,10 @@

var parse = function (input) {
var length = input.length;
parseIndex = 0;

var root = {
index: parseIndex++,
type: "m-fragment",
children: []
};
Expand All @@ -132,16 +139,59 @@
return root;
};

var generate = function (tree) {};
var generateCreateFragment = function (element) {
return ((element.children.map(generateCreate)) + " m[" + (element.index) + "] = []; ");
};

var generateCreateText = function (element) {};

var generateCreateElement = function (element) {
return (" m[" + (element.index) + "] = document.createElement(\"" + (element.type) + "\");");
};

var generateCreate = function (element) {
switch (element.type) {
case "m-fragment":
return generateCreateFragment(element);
break;
case "m-text":
return generateCreateText(element);
break;
default:
return generateCreateElement(element);
}
};

var generateUpdate = function () {};

var generate = function (tree) {
var prelude = "var data = instance.data; var m = instance.m;";
return new Function(("return [function (instance) {" + prelude + (generateCreate(tree)) + "}, function (instance) {" + prelude + (generateUpdate(tree)) + "}]"))();
};

var compile = function (input) {
return generate(parse(input));
};

function Moon() {
function Moon(element, view) {
if (typeof element === "string") {
element = document.querySelector(element);
}

if (typeof view === "string") {
view = compile(view);
}

view[0]();
view[1]();
}

Moon.extend = function (name, view, data) {
if (typeof view === "string") {
view = compile(view);
}
};

Moon.compile = compile;
Moon.config = config;

Expand Down
2 changes: 1 addition & 1 deletion dist/moon.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 462b86e

Please sign in to comment.