diff options
| author | Eric Cheng <[email protected]> | 2022-08-10 03:31:53 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-08-10 07:31:53 +0000 |
| commit | 8cb6027087fbc3fd038c4063b78f283d9aa48959 (patch) | |
| tree | b4847e577e22f21ac7a92121028c6563b04a2101 /src/modules/datatype | |
| parent | d4cfe979193c283be17016d6a1b03e745bf1511a (diff) | |
| download | faker-8cb6027087fbc3fd038c4063b78f283d9aa48959.tar.xz faker-8cb6027087fbc3fd038c4063b78f283d9aa48959.zip | |
feat: `datatype.hexadecimal` signature change (#1238)
Co-authored-by: Shinigami <[email protected]>
Diffstat (limited to 'src/modules/datatype')
| -rw-r--r-- | src/modules/datatype/index.ts | 44 |
1 files changed, 39 insertions, 5 deletions
diff --git a/src/modules/datatype/index.ts b/src/modules/datatype/index.ts index 34701368..671e8c6c 100644 --- a/src/modules/datatype/index.ts +++ b/src/modules/datatype/index.ts @@ -1,5 +1,6 @@ import type { Faker } from '../..'; import { FakerError } from '../../errors/faker-error'; +import { deprecated } from '../../internal/deprecated'; /** * Module to generate various primitive values and data types. @@ -187,13 +188,40 @@ export class Datatype { /** * Returns a [hexadecimal](https://en.wikipedia.org/wiki/Hexadecimal) number. * - * @param length Length of the generated number. Defaults to `1`. + * @param options The optional options object. + * @param options.length Length of the generated number. Defaults to `1`. + * @param options.prefix Prefix for the generated number. Defaults to `''`. + * @param options.case Case of the generated number. Defaults to `'mixed'`. * * @example - * faker.datatype.hexadecimal() // '0xb' - * faker.datatype.hexadecimal(10) // '0xaE13F044fb' + * faker.datatype.hexadecimal() // 'B' + * faker.datatype.hexadecimal({ length: 10 }) // 'aE13d044cB' + * faker.datatype.hexadecimal({ prefix: '0x' }) // '0xE' + * faker.datatype.hexadecimal({ case: 'lower' }) // 'f' + * faker.datatype.hexadecimal({ length: 10, prefix: '0x' }) // '0xf12a974eB1' + * faker.datatype.hexadecimal({ length: 10, case: 'upper' }) // 'E3F38014FB' + * faker.datatype.hexadecimal({ prefix: '0x', case: 'lower' }) // '0xd' + * faker.datatype.hexadecimal({ length: 10, prefix: '0x', case: 'mixed' }) // '0xAdE330a4D1' */ - hexadecimal(length = 1): string { + hexadecimal( + options: + | { length?: number; prefix?: string; case?: 'lower' | 'upper' | 'mixed' } + | number = {} + ): string { + if (typeof options === 'number') { + deprecated({ + deprecated: 'faker.datatype.hexadecimal(length)', + proposed: 'faker.datatype.hexadecimal({ length })', + since: '7.5', + until: '8.0', + }); + options = { + length: options, + }; + } + + const { length = 1, prefix = '', case: letterCase = 'mixed' } = options; + let wholeString = ''; for (let i = 0; i < length; i++) { @@ -223,7 +251,13 @@ export class Datatype { ]); } - return `0x${wholeString}`; + if (letterCase === 'upper') { + wholeString = wholeString.toUpperCase(); + } else if (letterCase === 'lower') { + wholeString = wholeString.toLowerCase(); + } + + return `${prefix}${wholeString}`; } /** |
