@zimatech/named-replacer-args
v1.0.2
Published
Turns the arguments of a replacer function in `String.replace` and `String.replaceAll` into an object with useful names.
Maintainers
Readme
| Item | Description
|---|---|
| function nameReplacerArgs | Turns the arguments of a replacer function in String.replace and String.replaceAll into an object with useful names.|
| interface NamedReplacerArgs | Return type of nameReplacerArgs. |
| match | The matched substring. |
| ps | The strings found by capture groups. |
| offset | The offset of the matched substring within the whole string being examined. |
| string | The whole string being examined. |
| groups | An object whose keys are the used group names, and whose values are the matched portions. |
| type GroupsType | Type of NamedReplacerArgs.groups, basically Record<string, string \| undefined> \| undefined. |
function nameReplacerArgs
export function nameReplacerArgs<GroupNames extends string | unknown = unknown>(
args: unknown[],
): NamedReplacerArgs<GroupNames> Turns the arguments of a replacer function in String.replace and
String.replaceAll into an object with useful names.
The replacer functions' parameters are defined as:
parameters = match "," p1 {"," pn} "," offset "," string ["," groups];[!NOTE]
The number of parameters depends on the number of capturing groups as well as the presence of named capturing groups.
- @param
args— The arguments passed to the replacer function inString.replaceandString.replaceAll. - @typeParam
GroupNames- (optional) Names of named groups. Pass multiple as union (e.g.'firstName' | 'lastName') - @returns — An object with keys corresponding the replacer functions arguments' meaning.
- @example
'hello'.replace(/^(?<initial>.)(?<rest>.*)/, (...args) => {
const namedArgs = nameReplacerArgs<'initial' | 'rest'>(args)
return `~${namedArgs.groups.initial}~${namedArgs.groups.rest}`
})- @see
NamedReplacerArgs
interface NamedReplacerArgs
export interface NamedReplacerArgs<
GroupNames extends string | unknown = unknown,
>Return type of nameReplacerArgs.
- @typeParam
GroupNames- Names of named groups.
match
match: stringThe matched substring.
ps
ps: string[]The strings found by capture groups.
offset
offset: numberThe offset of the matched substring within the whole string being examined.
string
string: stringThe whole string being examined.
groups
groups: GroupsType<GroupNames>An object whose keys are the used group names, and whose values are the matched portions.
- @see
GroupsType
type GroupsType
type GroupsType<GroupNames>Type of NamedReplacerArgs.groups, basically
Record<string, string | undefined> | undefined.
- @typeParam
GroupNames- Names of named groups as keys orunknown. If keys are defined, thegroupsproperty type can be narrowed toRecord<GroupNames, string | undefined>.
