1
0
mirror of /repos/Prototyper.git synced 2025-12-30 06:31:32 +01:00
Prototyper/helpers.js
2013-04-20 12:32:50 +02:00

59 lines
1.3 KiB
JavaScript

var when = require('when');
function replace(text, marker, getReplacement, once) {
var deferred = when.defer();
var regExp = new RegExp('<!--\\s*@@' + marker + '\\s*-->', 'gmi');
var matches = text.match(regExp);
if (matches) {
if (once) {
matches = [matches[0]];
}
var match_promises = [];
_.forEach(matches, function (result) {
var deferred2 = when.defer();
match_promises.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_promises,
function onSuccess(results) {
deferred.resolve(results);
},
function onFailure(err) {
deferred.reject(err);
}
);
} else {
deferred.resolve();
}
return deferred.promise;
}
function handTextManipulation(text, promises, handler, callback) {
when.all(
promises,
function onSuccess(all_results) {
_.forEach(all_results, function (results) {
_.forEach(results, function (result) {
text = handler( text, result);
});
});
return callback(null, text);
},
function onFailure(err) {
return callback(err);
}
)
}
module.exports = {
replace: replace,
handTextManipulation: handTextManipulation
};