nip27: make `matchAll` a generator function

This commit is contained in:
Alex Gleason 2023-04-22 19:22:06 -05:00
parent 6a037d1658
commit 45c07a5f45
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
2 changed files with 5 additions and 5 deletions

View File

@ -6,7 +6,7 @@ test('matchAll', () => {
'Hello nostr:npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6!\n\nnostr:note1gmtnz6q2m55epmlpe3semjdcq987av3jvx4emmjsa8g3s9x7tg4sclreky'
)
expect(result).toEqual([
expect([...result]).toEqual([
{
uri: 'nostr:npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6',
value: 'npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6',

View File

@ -14,20 +14,20 @@ export interface NostrURIMatch extends nip21.NostrURI {
}
/** Find and decode all NIP-21 URIs. */
export function matchAll(content: string): NostrURIMatch[] {
export function * matchAll(content: string): Iterable<NostrURIMatch> {
const matches = content.matchAll(regex())
return [...matches].map(match => {
for (const match of matches) {
const [uri, value] = match
return {
yield {
uri: uri as `nostr:${string}`,
value,
decoded: nip19.decode(value),
start: match.index!,
end: match.index! + uri.length
}
})
}
}
/**