@kayahr/text-encoding
Version:
Text encoder and decoder
32 lines • 983 B
JavaScript
/*
* Copyright (C) 2021 Klaus Reimer <k@ailis.de>
* See LICENSE.md for licensing information.
*/
import euckr from "../../../data/euc-kr.cp.js";
import { AbstractEncoder } from "../AbstractEncoder.js";
import { END_OF_BUFFER } from "../ByteBuffer.js";
import { FINISHED } from "../constants.js";
import { indexOf, isASCII } from "../util.js";
/**
* Encoder for euc-kr encoding.
*/
export class EUCKREncoder extends AbstractEncoder {
/** @inheritDoc */
encode(buffer) {
const codePoint = buffer.read();
if (codePoint === END_OF_BUFFER) {
return FINISHED;
}
if (isASCII(codePoint)) {
return codePoint;
}
const index = indexOf(euckr, codePoint);
if (index == null) {
return this.fail(codePoint);
}
const lead = Math.floor(index / 190) + 0x81;
const trail = (index % 190) + 0x41;
return [lead, trail];
}
}
//# sourceMappingURL=EUCKREncoder.js.map