// Generated by CoffeeScript 1.7.1 (function() { var DecodeStream, EncodeStream, iconv, stream, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; stream = require('stream'); DecodeStream = require('./DecodeStream'); try { iconv = require('iconv-lite'); } catch (_error) {} EncodeStream = (function(_super) { var key; __extends(EncodeStream, _super); function EncodeStream(bufferSize) { if (bufferSize == null) { bufferSize = 65536; } EncodeStream.__super__.constructor.apply(this, arguments); this.buffer = new Buffer(bufferSize); this.bufferOffset = 0; this.pos = 0; } for (key in Buffer.prototype) { if (key.slice(0, 5) === 'write') { (function(key) { var bytes; bytes = +DecodeStream.TYPES[key.replace(/write|[BL]E/g, '')]; return EncodeStream.prototype[key] = function(value) { this.ensure(bytes); this.buffer[key](value, this.bufferOffset); this.bufferOffset += bytes; return this.pos += bytes; }; })(key); } } EncodeStream.prototype._read = function() {}; EncodeStream.prototype.ensure = function(bytes) { if (this.bufferOffset + bytes > this.buffer.length) { return this.flush(); } }; EncodeStream.prototype.flush = function() { if (this.bufferOffset > 0) { this.push(new Buffer(this.buffer.slice(0, this.bufferOffset))); return this.bufferOffset = 0; } }; EncodeStream.prototype.writeBuffer = function(buffer) { this.flush(); this.push(buffer); return this.pos += buffer.length; }; EncodeStream.prototype.writeString = function(string, encoding) { var buf, byte, i, _i, _ref; if (encoding == null) { encoding = 'ascii'; } switch (encoding) { case 'utf16le': case 'ucs2': case 'utf8': case 'ascii': return this.writeBuffer(new Buffer(string, encoding)); case 'utf16be': buf = new Buffer(string, 'utf16le'); for (i = _i = 0, _ref = buf.length - 1; _i < _ref; i = _i += 2) { byte = buf[i]; buf[i] = buf[i + 1]; buf[i + 1] = byte; } return this.writeBuffer(buf); default: if (iconv) { return this.writeBuffer(iconv.encode(string, encoding)); } else { throw new Error('Install iconv-lite to enable additional string encodings.'); } } }; EncodeStream.prototype.writeUInt24BE = function(val) { this.ensure(3); this.buffer[this.bufferOffset++] = val >>> 16 & 0xff; this.buffer[this.bufferOffset++] = val >>> 8 & 0xff; this.buffer[this.bufferOffset++] = val & 0xff; return this.pos += 3; }; EncodeStream.prototype.writeUInt24LE = function(val) { this.ensure(3); this.buffer[this.bufferOffset++] = val & 0xff; this.buffer[this.bufferOffset++] = val >>> 8 & 0xff; this.buffer[this.bufferOffset++] = val >>> 16 & 0xff; return this.pos += 3; }; EncodeStream.prototype.writeInt24BE = function(val) { if (val >= 0) { return this.writeUInt24BE(val); } else { return this.writeUInt24BE(val + 0xffffff + 1); } }; EncodeStream.prototype.writeInt24LE = function(val) { if (val >= 0) { return this.writeUInt24LE(val); } else { return this.writeUInt24LE(val + 0xffffff + 1); } }; EncodeStream.prototype.fill = function(val, length) { var buf; if (length < this.buffer.length) { this.ensure(length); this.buffer.fill(val, this.bufferOffset, this.bufferOffset + length); this.bufferOffset += length; return this.pos += length; } else { buf = new Buffer(length); buf.fill(val); return this.writeBuffer(buf); } }; EncodeStream.prototype.end = function() { this.flush(); return this.push(null); }; return EncodeStream; })(stream.Readable); module.exports = EncodeStream; }).call(this);