mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-03-17 13:22:56 +01:00
I had forgotten to implement Tags.FindAll()
This commit is contained in:
parent
459273216c
commit
d430b8c9ed
@ -1,6 +1,7 @@
|
|||||||
package nostr
|
package nostr
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"slices"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@ -18,7 +19,7 @@ func TestTagHelpers(t *testing.T) {
|
|||||||
assert.Nil(t, tags.Find("x"), "Find shouldn't have returned a tag with a single item")
|
assert.Nil(t, tags.Find("x"), "Find shouldn't have returned a tag with a single item")
|
||||||
assert.NotNil(t, tags.FindWithValue("p", "abcdef"), "failed to get with existing prefix")
|
assert.NotNil(t, tags.FindWithValue("p", "abcdef"), "failed to get with existing prefix")
|
||||||
assert.Equal(t, "ffffff", tags.FindLast("e")[1], "failed to get last")
|
assert.Equal(t, "ffffff", tags.FindLast("e")[1], "failed to get last")
|
||||||
assert.Equal(t, 2, len(tags.GetAll([]string{"e", ""})), "failed to get all")
|
assert.Equal(t, 2, len(slices.Collect(tags.FindAll("e"))), "failed to get all")
|
||||||
c := make(Tags, 0, 2)
|
c := make(Tags, 0, 2)
|
||||||
for _, tag := range tags.All([]string{"e", ""}) {
|
for _, tag := range tags.All([]string{"e", ""}) {
|
||||||
c = append(c, tag)
|
c = append(c, tag)
|
||||||
|
13
tags.go
13
tags.go
@ -156,6 +156,19 @@ func (tags Tags) Find(key string) Tag {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindAll yields all the tags the given key/tagName that also have one value (i.e. at least 2 items)
|
||||||
|
func (tags Tags) FindAll(key string) iter.Seq[Tag] {
|
||||||
|
return func(yield func(Tag) bool) {
|
||||||
|
for _, v := range tags {
|
||||||
|
if len(v) >= 2 && v[0] == key {
|
||||||
|
if !yield(v) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// FindWithValue is like Find, but also checks if the value (the second item) matches
|
// FindWithValue is like Find, but also checks if the value (the second item) matches
|
||||||
func (tags Tags) FindWithValue(key, value string) Tag {
|
func (tags Tags) FindWithValue(key, value string) Tag {
|
||||||
for _, v := range tags {
|
for _, v := range tags {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user