diff --git a/nostrdb/NdbTagIterator.swift b/nostrdb/NdbTagIterator.swift index 795c698a..41f8ca9b 100644 --- a/nostrdb/NdbTagIterator.swift +++ b/nostrdb/NdbTagIterator.swift @@ -40,6 +40,14 @@ struct TagIterator: IteratorProtocol { return el } + subscript(index: Int) -> NdbTagElem? { + if index >= tag.pointee.count { + return nil + } + + return NdbTagElem(note: note, tag: tag, index: Int32(index)) + } + var index: Int32 let note: NdbNote var tag: UnsafeMutablePointer diff --git a/nostrdb/NdbTagsIterator.swift b/nostrdb/NdbTagsIterator.swift index 00ada3a6..4191deb4 100644 --- a/nostrdb/NdbTagsIterator.swift +++ b/nostrdb/NdbTagsIterator.swift @@ -40,6 +40,21 @@ struct TagsIterator: IteratorProtocol { struct TagsSequence: Sequence { let note: NdbNote + var count: UInt16 { + note.note.pointee.tags.count + } + + subscript(index: Int) -> Iterator.Element? { + var i = 0 + for element in self { + if i == index { + return element + } + i += 1 + } + return nil + } + func makeIterator() -> TagsIterator { return .init(note: note) }