@iotize/tap
Version:
IoTize Device client for Javascript
52 lines • 3.73 kB
JavaScript
import { Buffer } from 'buffer';
export class StringConverter {
constructor(encoding = 'ascii', options = {
stripEndOfStringCharacter: true,
replaceEmptyStringWithEndOfLineChar: false,
addEndOfStringCharacter: false,
}) {
this.encoding = encoding;
this.options = options;
}
encode(value) {
if (typeof value === 'number') {
value = value.toString();
}
if (typeof value !== 'string') {
value = '';
}
if (this.options.addEndOfStringCharacter) {
value += '\0';
}
else if (!value && this.options.replaceEmptyStringWithEndOfLineChar) {
return Uint8Array.from([0]);
}
let buffer = Buffer.from(value, this.encoding);
return Uint8Array.from(buffer);
}
decode(value) {
let str = Buffer.from(value).toString(this.encoding);
if (this.options.stripEndOfStringCharacter) {
const indexOfEndOfString = str.indexOf('\0');
if (indexOfEndOfString >= 0) {
str = str.substring(0, indexOfEndOfString);
}
}
return str;
}
/**
* Get ascii instance
* @deprecated use constructor instead
*/
static ascii() {
if (!StringConverter._ascii) {
StringConverter._ascii = new StringConverter('ascii', {
replaceEmptyStringWithEndOfLineChar: true,
stripEndOfStringCharacter: true,
});
}
return StringConverter._ascii;
}
}
StringConverter._ascii = undefined;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2NsaWVudC9pbXBsL3NyYy9saWIvY29udmVydGVyL2JvZHkvc3RyaW5nLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFxQixNQUFNLFFBQVEsQ0FBQztBQUVuRCxNQUFNLE9BQU8sZUFBZTtJQUsxQixZQUNTLFdBQThCLE9BQU8sRUFDckMsVUFjSDtRQUNGLHlCQUF5QixFQUFFLElBQUk7UUFDL0IsbUNBQW1DLEVBQUUsS0FBSztRQUMxQyx1QkFBdUIsRUFBRSxLQUFLO0tBQy9CO1FBbkJNLGFBQVEsR0FBUixRQUFRLENBQTZCO1FBQ3JDLFlBQU8sR0FBUCxPQUFPLENBa0JiO0lBQ0EsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLEtBQUssR0FBSSxLQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsS0FBSyxHQUFHLEVBQUUsQ0FBQztTQUNaO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFO1lBQ3hDLEtBQUssSUFBSSxJQUFJLENBQUM7U0FDZjthQUFNLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsRUFBRTtZQUNyRSxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQWlCO1FBQ3RCLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUU7WUFDMUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLElBQUksa0JBQWtCLElBQUksQ0FBQyxFQUFFO2dCQUMzQixHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzthQUM1QztTQUNGO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEtBQUs7UUFDakIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUU7WUFDM0IsZUFBZSxDQUFDLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BELG1DQUFtQyxFQUFFLElBQUk7Z0JBQ3pDLHlCQUF5QixFQUFFLElBQUk7YUFDaEMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLGVBQWUsQ0FBQyxNQUFNLENBQUM7SUFDaEMsQ0FBQzs7QUFoRWMsc0JBQU0sR0FBcUIsU0FBUyxDQUFDIn0=