diff --git a/lib/modules/variable-parser.js b/lib/modules/variable-parser.js index e4764875..4375ce1b 100644 --- a/lib/modules/variable-parser.js +++ b/lib/modules/variable-parser.js @@ -3,7 +3,8 @@ var gonzales = require('gonzales-pe'), gonzo = require('gonzales-ast'), path = require('path'), - Q = require('q'); + Q = require('q'), + _ = require('lodash'); function astToSrc(ast, syntax) { return gonzales.astToSrc({ @@ -108,40 +109,23 @@ function findVariables(string, syntax) { return out; } -function byFileName(a, b) { - if (a.file < b.file) { - return -1; - } - if (a.file > b.file) { - return 1; - } - return 0; -} - function parseVariableDeclarationsFromFiles(files) { - var variables = [], - filePromises = []; - - Object.keys(files).forEach(function(filePath) { + var filePromises = Object.keys(files).map(function(filePath) { var contents = files[filePath], syntax = path.extname(filePath).substring(1); - filePromises.push(Q.promise(function(resolve) { + return Q.promise(function(resolve) { var fileVariables = parseVariableDeclarations(contents, syntax); - // Map correct file name to every variable fileVariables.forEach(function(variable) { variable.file = filePath; }); - - variables = variables.concat(fileVariables); - resolve(); - })); + resolve(fileVariables); + }); }); return Q.all(filePromises).then(function() { - variables.sort(byFileName); - return variables; + return _.chain(arguments).flatten().sortBy('file').value(); }); }