37 lines
1.0 KiB
JavaScript
37 lines
1.0 KiB
JavaScript
//thanks DTrejo for help using async
|
|
var Utils = require("../rtf-utils"),
|
|
Element = require('./element'),
|
|
async = require('async');
|
|
|
|
module.exports = GroupElement = function(name, format) {
|
|
Element.apply(this, [format]);
|
|
this.elements = [];
|
|
this.name = name;
|
|
};
|
|
|
|
GroupElement.subclass(Element);
|
|
|
|
GroupElement.prototype.addElement = function(element){
|
|
this.elements.push(element);
|
|
};
|
|
|
|
GroupElement.prototype.getRTFCode = function(colorTable, fontTable, callback){
|
|
var tasks = [];
|
|
var rtf = "";
|
|
this.elements.forEach(function(el, i) {
|
|
if (el instanceof Element){
|
|
tasks.push(function(cb) { el.getRTFCode(colorTable, fontTable, cb); });
|
|
} else {
|
|
tasks.push(function(cb) { cb(null, Utils.getRTFSafeText(el)); });
|
|
}
|
|
});
|
|
|
|
return async.parallel(tasks, function(err, results) {
|
|
results.forEach(function(result) {
|
|
rtf += result;
|
|
});
|
|
//formats the whole group
|
|
rtf = format.formatText(rtf, colorTable, fontTable, false);
|
|
return callback(null, rtf);
|
|
});
|
|
}; |