CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
sbcs-codec.js76 linesDownload Raw Back to encodings
1"use strict"2var Buffer = require("safer-buffer").Buffer3 4// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that5// correspond to encoded bytes (if 128 - then lower half is ASCII).6 7exports._sbcs = SBCSCodec8function SBCSCodec (codecOptions, iconv) {9  if (!codecOptions) {10    throw new Error("SBCS codec is called without the data.")11  }12 13  // Prepare char buffer for decoding.14  if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) {15    throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)")16  }17 18  if (codecOptions.chars.length === 128) {19    var asciiString = ""20    for (var i = 0; i < 128; i++) {21      asciiString += String.fromCharCode(i)22    }23    codecOptions.chars = asciiString + codecOptions.chars24  }25 26  this.decodeBuf = Buffer.from(codecOptions.chars, "ucs2")27 28  // Encoding buffer.29  var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0))30 31  for (var i = 0; i < codecOptions.chars.length; i++) {32    encodeBuf[codecOptions.chars.charCodeAt(i)] = i33  }34 35  this.encodeBuf = encodeBuf36}37 38SBCSCodec.prototype.encoder = SBCSEncoder39SBCSCodec.prototype.decoder = SBCSDecoder40 41function SBCSEncoder (options, codec) {42  this.encodeBuf = codec.encodeBuf43}44 45SBCSEncoder.prototype.write = function (str) {46  var buf = Buffer.alloc(str.length)47  for (var i = 0; i < str.length; i++) {48    buf[i] = this.encodeBuf[str.charCodeAt(i)]49  }50 51  return buf52}53 54SBCSEncoder.prototype.end = function () {55}56 57function SBCSDecoder (options, codec) {58  this.decodeBuf = codec.decodeBuf59}60 61SBCSDecoder.prototype.write = function (buf) {62  // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.63  var decodeBuf = this.decodeBuf64  var newBuf = Buffer.alloc(buf.length * 2)65  var idx1 = 0; var idx2 = 066  for (var i = 0; i < buf.length; i++) {67    idx1 = buf[i] * 2; idx2 = i * 268    newBuf[idx2] = decodeBuf[idx1]69    newBuf[idx2 + 1] = decodeBuf[idx1 + 1]70  }71  return newBuf.toString("ucs2")72}73 74SBCSDecoder.prototype.end = function () {75}76