mirror of
https://github.com/pezkuwichain/pezkuwi-common.git
synced 2026-10-24 12:35:03 +00:00
The header rule takes the current year as the end of the range, as upstream's does; 581 sources still ended at 2025, which failed lint. Lint never ran to completion here, so this went unseen. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
37 lines
988 B
TypeScript
37 lines
988 B
TypeScript
// Copyright 2017-2026 @pezkuwi/util authors & contributors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import type { HexString } from '../types.js';
|
|
|
|
export const REGEX_HEX_PREFIXED = /^0x[\da-fA-F]+$/;
|
|
|
|
export const REGEX_HEX_NOPREFIX = /^[\da-fA-F]+$/;
|
|
|
|
/**
|
|
* @name isHex
|
|
* @summary Tests for a hex string.
|
|
* @description
|
|
* Checks to see if the input value is a `0x` prefixed hex string. Optionally (`bitLength` !== -1) checks to see if the bitLength is correct.
|
|
* @example
|
|
* <BR>
|
|
*
|
|
* ```javascript
|
|
* import { isHex } from '@pezkuwi/util';
|
|
*
|
|
* isHex('0x1234'); // => true
|
|
* isHex('0x1234', 8); // => false
|
|
* ```
|
|
*/
|
|
export function isHex (value: unknown, bitLength = -1, ignoreLength?: boolean): value is HexString {
|
|
return (
|
|
typeof value === 'string' && (
|
|
value === '0x' ||
|
|
REGEX_HEX_PREFIXED.test(value)
|
|
)
|
|
) && (
|
|
bitLength === -1
|
|
? (ignoreLength || (value.length % 2 === 0))
|
|
: (value.length === (2 + Math.ceil(bitLength / 4)))
|
|
);
|
|
}
|