Transform all defines

This commit is contained in:
Tim Schaub
2016-12-26 10:47:26 -07:00
parent b73ab8914a
commit b2a4b69d13
6 changed files with 54 additions and 19 deletions
+31
View File
@@ -0,0 +1,31 @@
var fs = require('fs');
var path = require('path');
var esprima = require('esprima');
var mainPath = path.join(__dirname, '..', 'src', 'ol', 'index.js');
var mainSource = fs.readFileSync(mainPath, 'utf8');
var definesPath = path.join(__dirname, '..', 'build', 'defines.json');
function isDefineLikeStatement(statement) {
return statement.type === 'ExpressionStatement' &&
statement.expression && statement.expression.type === 'AssignmentExpression' &&
statement.expression.left.type === 'MemberExpression' &&
statement.expression.right.type === 'Literal' &&
statement.leadingComments;
}
var ast = esprima.parse(mainSource, {attachComment: true});
var defines = {};
ast.body.forEach(function(statement) {
if (isDefineLikeStatement(statement)) {
var comment = statement.leadingComments[statement.leadingComments.length - 1].value;
if (comment.indexOf('* @define {') >= 0) {
var expression = statement.expression;
var name = expression.left.object.name + '.' + expression.left.property.name;
var value = expression.right.value;
defines[name] = value;
}
}
});
fs.writeFileSync(definesPath, JSON.stringify(defines, null, 2));