mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 20:25:48 +00:00
ripple-binary-codec refactor (#88)
Refactored all components in ripple-binary-codec /src
This commit is contained in:
@@ -1,23 +1,37 @@
|
||||
const Decimal = require("decimal.js");
|
||||
import { bytesToHex, slice, parseBytes } from "./utils/bytes-utils";
|
||||
import { coreTypes } from "./types";
|
||||
import { Decimal } from "decimal.js";
|
||||
|
||||
module.exports = {
|
||||
encode(arg) {
|
||||
const quality = arg instanceof Decimal ? arg : new Decimal(arg);
|
||||
const exponent = quality.e - 15;
|
||||
const qualityString = quality
|
||||
.times("1e" + -exponent)
|
||||
.abs()
|
||||
.toString();
|
||||
/**
|
||||
* class for encoding and decoding quality
|
||||
*/
|
||||
class quality {
|
||||
/**
|
||||
* Encode quality amount
|
||||
*
|
||||
* @param arg string representation of an amount
|
||||
* @returns Serialized quality
|
||||
*/
|
||||
static encode(quality: string): Buffer {
|
||||
const decimal = new Decimal(quality);
|
||||
const exponent = decimal.e - 15;
|
||||
const qualityString = decimal.times(`1e${-exponent}`).abs().toString();
|
||||
const bytes = coreTypes.UInt64.from(BigInt(qualityString)).toBytes();
|
||||
bytes[0] = exponent + 100;
|
||||
return bytes;
|
||||
},
|
||||
decode(arg) {
|
||||
const bytes = slice(parseBytes(arg), -8);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode quality amount
|
||||
*
|
||||
* @param arg hex-string denoting serialized quality
|
||||
* @returns deserialized quality
|
||||
*/
|
||||
static decode(quality: string): Decimal {
|
||||
const bytes = Buffer.from(quality, "hex").slice(-8);
|
||||
const exponent = bytes[0] - 100;
|
||||
const mantissa = new Decimal("0x" + bytesToHex(slice(bytes, 1)));
|
||||
return mantissa.times("1e" + exponent);
|
||||
},
|
||||
};
|
||||
const mantissa = new Decimal(`0x${bytes.slice(1).toString("hex")}`);
|
||||
return mantissa.times(`1e${exponent}`);
|
||||
}
|
||||
}
|
||||
|
||||
export { quality };
|
||||
|
||||
Reference in New Issue
Block a user