diff --git a/preview.js b/preview.js index c9d7e56..3190930 100644 --- a/preview.js +++ b/preview.js @@ -23,17 +23,17 @@ module.exports = function (config, mongodataInstance) { '\n'; var getPreviewHTML = function (options, content, callback) { - config.debug && console.log('getPreviewHTML',content); + config.debug && console.log('getPreviewHTML', content); var html = content; var promises = replaceMarkers(options, html); when.all( promises, - function onSucces (results) { - console.log('getPreviewHTML replaceMakers results',results); - _.forEach(results, function (result) { - if (result) { - html = html.replaceAll(result.regExp, result.replacement); - } + function onSucces(all_results) { + console.log('getPreviewHTML replaceMakers results', all_results); + _.forEach(all_results, function (results) { + _.forEach(results, function (result) { + html = html.replace(result.regExp, result.replacement); + }); }); return callback(null, html); }, @@ -50,110 +50,152 @@ module.exports = function (config, mongodataInstance) { function replace(marker, getReplacement) { var deferred = when.defer(); - var regExp = new RegExp(''); - var result = html.match(regExp); - if (result) { - getReplacement(result, function (err, replacement) { - if (err) { + var regExp = new RegExp('', 'gmi'); + var matches = html.match(regExp); + if (matches) { + var match_promisses = []; + _.forEach(matches, function (result) { + var deferred2 = when.defer(); + match_promisses.push(deferred2.promise); + getReplacement(result, function (err, replacement) { + if (err) { + deferred2.reject(err); + } else { + deferred2.resolve({regExp: replacement.regExp || regExp, replacement: replacement.value}) + } + }) + }); + when.all( + match_promisses, + function onSuccess(results) { + deferred.resolve(results); + }, + function onFailure(err) { deferred.reject(err); - } else { - deferred.resolve({regExp:regExp, replacement:replacement}) } - }) + ); } else { deferred.resolve(); } return deferred.promise; } - console.log('marker options',options); + console.log('marker options', options); var promises = []; /* markers: - [type]_[collection]_[name]_[attribute] + [type]_[collection]_[name]_[attribute] - script ->