Compare commits

...

3 Commits

Author SHA1 Message Date
Holly Stubbs 77d74ae657
1.5.0 2024-01-01 22:23:47 +00:00
Holly Stubbs 961df8cd72
Add functions for reading/writing strings without lengths 2024-01-01 22:23:16 +00:00
Holly Stubbs 4cacdbf113
Update depends 2024-01-01 22:22:12 +00:00
10 changed files with 113 additions and 2873 deletions

View File

@ -50,4 +50,25 @@ export class ReaderBase {
public readBool() {
return Boolean(this.readUByte());
}
public readShortString() {
const length = this.readUByte();
let text = "";
for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUByte());
}
return text;
}
public readBytesAsString(bytesToRead:number) {
let text = "";
for (let i = 0; i < bytesToRead; i++) {
text += String.fromCharCode(this.readUByte());
}
return text;
}
}

View File

@ -76,4 +76,19 @@ export class WriterBase {
return this;
}
public writeStringAsBytes(text:string) {
let buffer;
if (this.resizable) {
buffer = getBufferClass().alloc(text.length);
} else {
buffer = this.buffer;
}
for (let i = 0; i < text.length; i++) {
buffer.writeUInt8(text.charCodeAt(i), i);
}
return this;
}
}

2857
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "bufferstuff",
"version": "1.4.2",
"version": "1.5.0",
"description": "A set of utility classes for reading and writing binary data in NodeJS and the browser",
"main": "./lib/index.js",
"types": "./lib/index.d.ts",
@ -32,9 +32,8 @@
"devDependencies": {
"check-outdated": "^2.12.0",
"npm-run-all": "^4.1.5",
"terser": "^5.24.0",
"ts-loader": "^9.5.0",
"ts-node": "^10.9.1",
"typescript": "^5.2.2"
"terser": "^5.26.0",
"ts-node": "^10.9.2",
"typescript": "^5.3.3"
}
}

View File

@ -9,6 +9,8 @@ export interface IReader {
readByte(): number,
readUByte(): number,
readBool(): boolean,
readShortString(): string,
readBytesAsString(bytesToRead:number): string,
readShort(): number,
readUShort(): number,
readInt(): number,
@ -17,7 +19,7 @@ export interface IReader {
readULong(): bigint,
readFloat(): number,
readDouble(): number,
readShortString(): string,
readString(): string,
readShortsAsString(shortsToRead:number): string,
readString16(): string,
}

View File

@ -53,20 +53,9 @@ export class ReaderBE extends ReaderBase implements IReader {
return value;
}
public readShortString() {
const length = this.readUByte();
let text:string = "";
for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUByte());
}
return text;
}
public readString() {
const length = this.readUShort();
let text:string = "";
let text = "";
for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUByte());
@ -77,7 +66,7 @@ export class ReaderBE extends ReaderBase implements IReader {
public readString16() {
const length = this.readUShort();
let text:string = "";
let text = "";
for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUShort());
@ -85,4 +74,14 @@ export class ReaderBE extends ReaderBase implements IReader {
return text;
}
public readShortsAsString(shortsToRead:number) {
let text = "";
for (let i = 0; i < shortsToRead; i++) {
text += String.fromCharCode(this.readUShort());
}
return text;
}
}

View File

@ -53,17 +53,6 @@ export class ReaderLE extends ReaderBase implements IReader {
return value;
}
public readShortString() {
const length = this.readUByte();
let text:string = "";
for (let i = 0; i < length; i++) {
text += String.fromCharCode(this.readUByte());
}
return text;
}
public readString() {
const length = this.readUShort();
let text:string = "";
@ -85,4 +74,14 @@ export class ReaderLE extends ReaderBase implements IReader {
return text;
}
public readShortsAsString(shortsToRead:number) {
let text = "";
for (let i = 0; i < shortsToRead; i++) {
text += String.fromCharCode(this.readUShort());
}
return text;
}
}

View File

@ -11,15 +11,17 @@ export interface IWriter {
writeByte(value:number): IWriter,
writeUByte(value:number): IWriter,
writeBool(value:boolean|number): IWriter,
writeStringAsBytes(text:string): IWriter,
writeShort(value:number): IWriter,
writeUShort(value:number): IWriter,
writeInt(value:number): IWriter,
writeUInt(value:number): IWriter,
writeLong(value:number|bigint): IWriter,
writeULong(value:number): IWriter,
writeULong(value:number|bigint): IWriter,
writeFloat(value:number): IWriter,
writeDouble(value:number): IWriter,
writeShortString(text:string): IWriter,
writeString(text:string): IWriter,
writeString16(text:string): IWriter,
writeStringAsShorts(text:string): IWriter
}

View File

@ -147,4 +147,19 @@ export class WriterBE extends WriterBase implements IWriter {
return this;
}
public writeStringAsShorts(text:string) {
let buffer:Buffer;
if (this.resizable) {
buffer = getBufferClass().alloc(text.length * 2);
} else {
buffer = this.buffer;
}
for (let i = 0; i < text.length; i++) {
buffer.writeUint16BE(text.charCodeAt(i), i);
}
return this;
}
}

View File

@ -146,4 +146,19 @@ export class WriterLE extends WriterBase implements IWriter {
return this;
}
public writeStringAsShorts(text:string) {
let buffer:Buffer;
if (this.resizable) {
buffer = getBufferClass().alloc(text.length * 2);
} else {
buffer = this.buffer;
}
for (let i = 0; i < text.length; i++) {
buffer.writeUint16LE(text.charCodeAt(i), i);
}
return this;
}
}