Update for humanReadableByteFormat, update edit.jq.js
edit.jq.js: remove deprecated function decodeHtmlEntities, use utils.js instead update for humanReadableByteFormat to return non numeric first and then proceed with the convert
This commit is contained in:
@@ -1602,6 +1602,7 @@ function createNavMenu(nav_menu, header_id = 'mainHeader') // eslint-disable-lin
|
|||||||
* HTML decode &something; entrie
|
* HTML decode &something; entrie
|
||||||
* @param {string} str
|
* @param {string} str
|
||||||
* @returns string
|
* @returns string
|
||||||
|
* @deprecated use utils.js
|
||||||
*/
|
*/
|
||||||
function decodeHtmlEntities(str) // eslint-disable-line no-unused-vars
|
function decodeHtmlEntities(str) // eslint-disable-line no-unused-vars
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -43,71 +43,70 @@ class Byte
|
|||||||
public static function humanReadableByteFormat(string|int|float $bytes, int $flags = 0): string
|
public static function humanReadableByteFormat(string|int|float $bytes, int $flags = 0): string
|
||||||
{
|
{
|
||||||
// if not numeric, return as is
|
// if not numeric, return as is
|
||||||
if (is_numeric($bytes)) {
|
if (!is_numeric($bytes)) {
|
||||||
// flags bit wise check
|
|
||||||
// remove space between number and suffix
|
|
||||||
if ($flags & self::BYTE_FORMAT_NOSPACE) {
|
|
||||||
$space = false;
|
|
||||||
} else {
|
|
||||||
$space = true;
|
|
||||||
}
|
|
||||||
// use sprintf instead of round
|
|
||||||
if ($flags & self::BYTE_FORMAT_ADJUST) {
|
|
||||||
$adjust = true;
|
|
||||||
} else {
|
|
||||||
$adjust = false;
|
|
||||||
}
|
|
||||||
// use SI 1000 mod and not 1024 mod
|
|
||||||
if ($flags & self::BYTE_FORMAT_SI) {
|
|
||||||
$si = true;
|
|
||||||
} else {
|
|
||||||
$si = false;
|
|
||||||
}
|
|
||||||
if ($flags > 7) {
|
|
||||||
throw new \InvalidArgumentException("Invalid flags parameter: $flags", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// si or normal
|
|
||||||
$unit = $si ? 1000 : 1024;
|
|
||||||
// always positive
|
|
||||||
$abs_bytes = $bytes == PHP_INT_MIN ? PHP_INT_MAX : abs((float)$bytes);
|
|
||||||
// smaller than unit is always B
|
|
||||||
if ($abs_bytes < $unit) {
|
|
||||||
return $bytes . 'B';
|
|
||||||
}
|
|
||||||
// labels in order of size [Y, Z]
|
|
||||||
$labels = ['', 'K', 'M', 'G', 'T', 'P', 'E'];
|
|
||||||
// exp position calculation
|
|
||||||
$exp = (int)floor(log($abs_bytes, $unit));
|
|
||||||
// avoid printing out anything larger than max labels
|
|
||||||
if ($exp >= count($labels)) {
|
|
||||||
$exp = count($labels) - 1;
|
|
||||||
}
|
|
||||||
// deviation calculation
|
|
||||||
$dev = pow($unit, $exp) * ($unit - 0.05);
|
|
||||||
// shift the exp +1 for on the border units
|
|
||||||
if (
|
|
||||||
$exp < 6 &&
|
|
||||||
$abs_bytes > ($dev - (((int)$dev & 0xfff) == 0xd00 ? 52 : 0))
|
|
||||||
) {
|
|
||||||
$exp++;
|
|
||||||
}
|
|
||||||
// label name, including leading space if flagged
|
|
||||||
$pre = ($space ? ' ' : '') . ($labels[$exp] ?? '>E') . ($si ? 'i' : '') . 'B';
|
|
||||||
$bytes_calc = $abs_bytes / pow($unit, $exp);
|
|
||||||
// if original is negative, reverse
|
|
||||||
if ($bytes < 0) {
|
|
||||||
$bytes_calc *= -1;
|
|
||||||
}
|
|
||||||
if ($adjust) {
|
|
||||||
return sprintf("%.2f%s", $bytes_calc, $pre);
|
|
||||||
} else {
|
|
||||||
return round($bytes_calc, 2) . $pre;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// if anything other return as string
|
// if anything other return as string
|
||||||
return (string)$bytes;
|
return (string)$bytes;
|
||||||
}
|
}
|
||||||
|
// flags bit wise check
|
||||||
|
// remove space between number and suffix
|
||||||
|
if ($flags & self::BYTE_FORMAT_NOSPACE) {
|
||||||
|
$space = false;
|
||||||
|
} else {
|
||||||
|
$space = true;
|
||||||
|
}
|
||||||
|
// use sprintf instead of round
|
||||||
|
if ($flags & self::BYTE_FORMAT_ADJUST) {
|
||||||
|
$adjust = true;
|
||||||
|
} else {
|
||||||
|
$adjust = false;
|
||||||
|
}
|
||||||
|
// use SI 1000 mod and not 1024 mod
|
||||||
|
if ($flags & self::BYTE_FORMAT_SI) {
|
||||||
|
$si = true;
|
||||||
|
} else {
|
||||||
|
$si = false;
|
||||||
|
}
|
||||||
|
if ($flags > 7) {
|
||||||
|
throw new \InvalidArgumentException("Invalid flags parameter: $flags", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// si or normal
|
||||||
|
$unit = $si ? 1000 : 1024;
|
||||||
|
// always positive
|
||||||
|
$abs_bytes = $bytes == PHP_INT_MIN ? PHP_INT_MAX : abs((float)$bytes);
|
||||||
|
// smaller than unit is always B
|
||||||
|
if ($abs_bytes < $unit) {
|
||||||
|
return $bytes . 'B';
|
||||||
|
}
|
||||||
|
// labels in order of size [Y, Z]
|
||||||
|
$labels = ['', 'K', 'M', 'G', 'T', 'P', 'E'];
|
||||||
|
// exp position calculation
|
||||||
|
$exp = (int)floor(log($abs_bytes, $unit));
|
||||||
|
// avoid printing out anything larger than max labels
|
||||||
|
if ($exp >= count($labels)) {
|
||||||
|
$exp = count($labels) - 1;
|
||||||
|
}
|
||||||
|
// deviation calculation
|
||||||
|
$dev = pow($unit, $exp) * ($unit - 0.05);
|
||||||
|
// shift the exp +1 for on the border units
|
||||||
|
if (
|
||||||
|
$exp < 6 &&
|
||||||
|
$abs_bytes > ($dev - (((int)$dev & 0xfff) == 0xd00 ? 52 : 0))
|
||||||
|
) {
|
||||||
|
$exp++;
|
||||||
|
}
|
||||||
|
// label name, including leading space if flagged
|
||||||
|
$pre = ($space ? ' ' : '') . ($labels[$exp] ?? '>E') . ($si ? 'i' : '') . 'B';
|
||||||
|
$bytes_calc = $abs_bytes / pow($unit, $exp);
|
||||||
|
// if original is negative, reverse
|
||||||
|
if ($bytes < 0) {
|
||||||
|
$bytes_calc *= -1;
|
||||||
|
}
|
||||||
|
if ($adjust) {
|
||||||
|
return sprintf("%.2f%s", $bytes_calc, $pre);
|
||||||
|
} else {
|
||||||
|
return round($bytes_calc, 2) . $pre;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user