2016-11-02 20:23:42 -06:00

48 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);
});
});