Skip to content

Commit 69d36e3

Browse files
sdnuncaaduth
andauthored
Fix unnamed placeholders extraction (#25)
* Fix unnamed placeholders extraction * Rearrange test examples into positional group --------- Co-authored-by: Andrew Duthie <andrew@andrewduthie.com>
1 parent b854759 commit 69d36e3

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

packages/sprintf/__tests__/sprintf.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ sprintf('%1$f, %2$f', [1.2, 1.4]);
3636
sprintf('%2$f, %1$f', 1.2, 1.4);
3737
sprintf('%2$f, %1$f', [1.2, 1.4]);
3838
sprintf('Hello %2$d, Number %1$d, Float %3$f', 1, 1, 1.2);
39+
sprintf('Test %s with $ after', 'placeholder');
40+
sprintf('Test $ before %s', 'placeholder');
3941

4042
// / InCorrect
4143
// @ts-expect-error - argument mismatch, string expected

packages/sprintf/types/index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ type ExtractPositionalPlaceholders<T extends string> =
156156
// Extracts unnamed placeholders like %s, %.2f, %.*d (ignores positional/named)
157157
type ExtractUnnamedPlaceholders<T extends string> =
158158
StripEscapedPercents<T> extends `${infer _}%${infer AfterPercent}`
159-
? AfterPercent extends `${infer _Num}$${infer AfterPositional}`
159+
? AfterPercent extends `${infer _Num extends `${number}`}$${infer AfterPositional}`
160160
? ExtractUnnamedPlaceholders<AfterPositional> // Skip positional
161161
: ParsePrecisionAndSpec<AfterPercent> extends [
162162
infer Precision extends string,

0 commit comments

Comments
 (0)