the reminder not showing content on the card at dashboard view and the quizes are hardcoded must move to the db make api's for it
122 lines
3.3 KiB
JavaScript
122 lines
3.3 KiB
JavaScript
"use strict";
|
|
|
|
var Buffer = require("buffer").Buffer,
|
|
Transform = require("stream").Transform;
|
|
|
|
|
|
// == Exports ==================================================================
|
|
module.exports = function(iconv) {
|
|
|
|
// Additional Public API.
|
|
iconv.encodeStream = function encodeStream(encoding, options) {
|
|
return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);
|
|
}
|
|
|
|
iconv.decodeStream = function decodeStream(encoding, options) {
|
|
return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);
|
|
}
|
|
|
|
iconv.supportsStreams = true;
|
|
|
|
|
|
// Not published yet.
|
|
iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;
|
|
iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;
|
|
iconv._collect = IconvLiteDecoderStream.prototype.collect;
|
|
};
|
|
|
|
|
|
// == Encoder stream =======================================================
|
|
function IconvLiteEncoderStream(conv, options) {
|
|
this.conv = conv;
|
|
options = options || {};
|
|
options.decodeStrings = false; // We accept only strings, so we don't need to decode them.
|
|
Transform.call(this, options);
|
|
}
|
|
|
|
IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
|
|
constructor: { value: IconvLiteEncoderStream }
|
|
});
|
|
|
|
IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
|
|
if (typeof chunk != 'string')
|
|
return done(new Error("Iconv encoding stream needs strings as its input."));
|
|
try {
|
|
var res = this.conv.write(chunk);
|
|
if (res && res.length) this.push(res);
|
|
done();
|
|
}
|
|
catch (e) {
|
|
done(e);
|
|
}
|
|
}
|
|
|
|
IconvLiteEncoderStream.prototype._flush = function(done) {
|
|
try {
|
|
var res = this.conv.end();
|
|
if (res && res.length) this.push(res);
|
|
done();
|
|
}
|
|
catch (e) {
|
|
done(e);
|
|
}
|
|
}
|
|
|
|
IconvLiteEncoderStream.prototype.collect = function(cb) {
|
|
var chunks = [];
|
|
this.on('error', cb);
|
|
this.on('data', function(chunk) { chunks.push(chunk); });
|
|
this.on('end', function() {
|
|
cb(null, Buffer.concat(chunks));
|
|
});
|
|
return this;
|
|
}
|
|
|
|
|
|
// == Decoder stream =======================================================
|
|
function IconvLiteDecoderStream(conv, options) {
|
|
this.conv = conv;
|
|
options = options || {};
|
|
options.encoding = this.encoding = 'utf8'; // We output strings.
|
|
Transform.call(this, options);
|
|
}
|
|
|
|
IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
|
|
constructor: { value: IconvLiteDecoderStream }
|
|
});
|
|
|
|
IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
|
|
if (!Buffer.isBuffer(chunk))
|
|
return done(new Error("Iconv decoding stream needs buffers as its input."));
|
|
try {
|
|
var res = this.conv.write(chunk);
|
|
if (res && res.length) this.push(res, this.encoding);
|
|
done();
|
|
}
|
|
catch (e) {
|
|
done(e);
|
|
}
|
|
}
|
|
|
|
IconvLiteDecoderStream.prototype._flush = function(done) {
|
|
try {
|
|
var res = this.conv.end();
|
|
if (res && res.length) this.push(res, this.encoding);
|
|
done();
|
|
}
|
|
catch (e) {
|
|
done(e);
|
|
}
|
|
}
|
|
|
|
IconvLiteDecoderStream.prototype.collect = function(cb) {
|
|
var res = '';
|
|
this.on('error', cb);
|
|
this.on('data', function(chunk) { res += chunk; });
|
|
this.on('end', function() {
|
|
cb(null, res);
|
|
});
|
|
return this;
|
|
}
|
|
|