mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
48 lines
1.2 KiB
JavaScript
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);
|
|
});
|
|
});
|