mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
var jsdom = require("jsdom").jsdom;
|
|
var fs = require("fs");
|
|
var path = require("path");
|
|
|
|
function generateCode(name, htmlFile, rootNode, html) {
|
|
var generator = require("./codegen-" + name);
|
|
|
|
var code = generator(rootNode, html);
|
|
var wrappedCode = `window.createBenchmarks[${JSON.stringify(
|
|
htmlFile + "-" + name
|
|
)}]=function() {\n${code}\n}`;
|
|
|
|
var generateInitCode = generator.generateInitCode;
|
|
|
|
if (generateInitCode) {
|
|
wrappedCode = `
|
|
(function() {
|
|
${generateInitCode(rootNode, html)}
|
|
${wrappedCode}
|
|
}())`;
|
|
}
|
|
fs.writeFileSync(
|
|
path.join(__dirname, `benchmark-${htmlFile}-${name}.js`),
|
|
wrappedCode,
|
|
{ encoding: "utf8" }
|
|
);
|
|
}
|
|
|
|
var methods = ["dom", "dom-innerHTML", "marko-vdom", "react"];
|
|
|
|
var htmlFiles = fs.readdirSync(__dirname).filter(function(name) {
|
|
return name.startsWith("html-");
|
|
});
|
|
|
|
htmlFiles.forEach(function(htmlFile) {
|
|
var name = htmlFile.substring("html-".length).slice(0, 0 - ".html".length);
|
|
var html = fs.readFileSync(path.join(__dirname, htmlFile), {
|
|
encoding: "utf8"
|
|
});
|
|
|
|
var doc = jsdom(html);
|
|
|
|
var rootNode = doc.body.firstChild;
|
|
|
|
methods.forEach(function(methodName) {
|
|
generateCode(methodName, name, rootNode, html);
|
|
});
|
|
});
|