diff options
author | Mario <mario@mariovavti.com> | 2024-03-14 11:02:31 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2024-03-14 11:02:31 +0000 |
commit | 6315757967245d82227d3886844b9a7567de2c2c (patch) | |
tree | 4ddb98819cdaffa0db7247a667eb02be2e7947a8 /vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php | |
parent | 9ddd84089754709c8f50b81ec50f701f39190e52 (diff) | |
download | volse-hubzilla-6315757967245d82227d3886844b9a7567de2c2c.tar.gz volse-hubzilla-6315757967245d82227d3886844b9a7567de2c2c.tar.bz2 volse-hubzilla-6315757967245d82227d3886844b9a7567de2c2c.zip |
Revert "use the streams php-jcs library until the floats issue will be fixed upstream. see here for reference https://codeberg.org/streams/streams/issues/151"
This reverts commit 81ce67df942d4bf378814677268fe03a29ecc028.
Diffstat (limited to 'vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php')
-rw-r--r-- | vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php b/vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php new file mode 100644 index 000000000..57079df3b --- /dev/null +++ b/vendor/mmccook/php-json-canonicalization-scheme/src/Utils.php @@ -0,0 +1,52 @@ +<?php + +namespace Mmccook\JsonCanonicalizator; + +class Utils +{ + /** + * @param array $array + * @return bool + */ + public static function isAssoc(array $array): bool + { + $keys = array_keys($array); + + return array_keys($keys) !== $keys; + } + + public static function asHex(string $data): string + { + return rtrim(chunk_split(bin2hex($data), 2, ' ')); + } + + public static function es6NumberFormat(float $number): string + { + + if (is_nan($number) || is_infinite($number)) { + throw new \RuntimeException("can't use Nan or Infinity in json"); + } + + if (0.0 === $number) { + return '0'; + } + + $sign = ''; + if ($number < 0) { + $sign = '-'; + $number = -$number; + } + + if ($number < 1e+21 && $number >= 1e-6) { + $formatted = number_format($number, 7, '.', ''); + $formatted = rtrim($formatted, '.0'); + } else { + $formatted = sprintf('%e', $number); + $parts = explode('e', $formatted); + $parts[0] = rtrim($parts[0], '.0'); + $formatted = implode('e', $parts); + } + + return $sign . $formatted; + } +} |