From 45c07a5f451a2f14facba5fbfa22dbd5cbe4677f Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sat, 22 Apr 2023 19:22:06 -0500 Subject: [PATCH] nip27: make `matchAll` a generator function --- nip27.test.js | 2 +- nip27.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/nip27.test.js b/nip27.test.js index 2946722..24c63ac 100644 --- a/nip27.test.js +++ b/nip27.test.js @@ -6,7 +6,7 @@ test('matchAll', () => { 'Hello nostr:npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6!\n\nnostr:note1gmtnz6q2m55epmlpe3semjdcq987av3jvx4emmjsa8g3s9x7tg4sclreky' ) - expect(result).toEqual([ + expect([...result]).toEqual([ { uri: 'nostr:npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6', value: 'npub108pv4cg5ag52nq082kd5leu9ffrn2gdg6g4xdwatn73y36uzplmq9uyev6', diff --git a/nip27.ts b/nip27.ts index 00bcad4..7fa5be8 100644 --- a/nip27.ts +++ b/nip27.ts @@ -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 { 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 } - }) + } } /**