/** * TODO license * Outputter. */ /** * Outputter class. * Abstract (not exported). */ function Outputter() { // // ATTRIBUTES // /** * Output stream. */ this.out = null; }; Outputter.prototype = { // // FUNCTIONS // /** * Add header to request. * Available before calling outputTo(). */ addHeader: function (name, value) {}, /** * Init before outputing. */ init: function () {}, /** * Listen action 'data' event. * Receive resource instance to output. */ output: function (resource) { }, /** * Listen action 'end' event. * End of action data transmission. */ end: function() { logger.debug('Action ended'); this.out.end(); }, /** * Set target stream and start outputting. */ outputTo: function(stream) { this.out = stream; } }; /** * Outputter in json format. */ var JSONOutputter = function() { Outputter.call(this); logger.debug('JSON'); }; // inherits Outputter JSONOutputter.prototype = Object.create(Outputter.prototype, { output: { value: function(resource) { this.out.write(JSON.stringify(resource)); }, enumerable: true, configurable: true, writable: true }, init: { value: function() { this.addHeader('Content-Type', 'application/json'); }, enumerable: true, configurable: true, writable: true } }); /** * Outputter in html. */ var HtmlOutputter = function() { Outputter.call(this); }; // inherits Outputter HtmlOutputter.prototype = Object.create(Outputter.prototype, { }); /** * Outputter in text. */ var TextOutputter = function() { Outputter.call(this); }; // inherits Outputter TextOutputter.prototype = Object.create(Outputter.prototype, { }); //module.exports.JSONOutputter = JSONOutputter; module.exports = { JSONOutputter: JSONOutputter, TextOutputter: TextOutputter, HtmlOutputter: HtmlOutputter };