1 jls.loader.provide('jls.io.cs.CharEncoder'); 2 3 jls.loader.require('jls.lang.ByteBuffer'); 4 5 jls.io.cs.CharEncoder = jls.lang.Class.create( /** @lends jls.io.cs.CharEncoder.prototype */ 6 { 7 /** 8 * Creates a character encoder. 9 * 10 * @constructs 11 * @param {jls.io.cs.Charset} charset The related charset. 12 * @class This class represents a character encoder. 13 */ 14 initialize : function(charset) { 15 this._charset = charset; 16 this._averBytes = 1.0; 17 this._replacement = '?'.charCodeAt(0); 18 }, 19 /** 20 * Encodes a string and returns a buffer. 21 * 22 * @param {jls.lang.CharBuffer} input The character buffer to encode. 23 * @returns {jls.lang.Buffer} The encoded buffer. 24 */ 25 encode : function(input, buffer) { 26 var length = Math.round(input.remaining() * this._averBytes); 27 var output = buffer || jls.lang.ByteBuffer.allocate(length + 1); 28 while (input.remaining() > 0) { 29 var c = input.getChar(); 30 if (c > 127) { 31 c = this._replacement; 32 } 33 output.putByte(c); 34 } 35 return output; 36 } 37 }); 38 39