"use strict"; const {B, KiB, MiB, GiB, TiB, PiB, EiB} = require("../../units/bytes/iec"); let unitMap = { b: B, k: KiB, m: MiB, g: GiB, t: TiB, p: PiB, e: EiB }; function mapUnit(unitString) { if (unitString == null) { return B; } else { let normalizedUnitString = unitString.toLowerCase(); if (unitMap[normalizedUnitString] != null) { return unitMap[normalizedUnitString]; } else { throw new Error(`Unknown unit: ${unit}`); } } } module.exports = function parseIECBytes(sizeString) { if (sizeString == null) { return sizeString; } else { let match = /^([0-9]+(?:\.[0-9]+)?)([bkmgtpe])?$/i.exec(sizeString.trim()); if (match == null) { throw new Error(`Could not parse size string: ${sizeString}`); } let [_, number, unit] = match; let unitCreator = mapUnit(unit); return unitCreator(parseFloat(number)); } };