filter.go 601 Bytes
Newer Older
Jeromy's avatar
Jeromy committed
1 2 3
package addrutil

import (
Jeromy's avatar
Jeromy committed
4
	ma "github.com/multiformats/go-multiaddr"
Jeromy's avatar
Jeromy committed
5 6
)

Jeromy's avatar
Jeromy committed
7
// SubtractFilter returns a filter func that filters all of the given addresses
Jeromy's avatar
Jeromy committed
8
func SubtractFilter(addrs ...ma.Multiaddr) func(ma.Multiaddr) bool {
9
	addrmap := make(map[string]bool, len(addrs))
Jeromy's avatar
Jeromy committed
10 11 12 13 14 15 16 17 18
	for _, a := range addrs {
		addrmap[string(a.Bytes())] = true
	}

	return func(a ma.Multiaddr) bool {
		return !addrmap[string(a.Bytes())]
	}
}

Jeromy's avatar
Jeromy committed
19
// FilterNeg returns a negated version of the passed in filter
Jeromy's avatar
Jeromy committed
20 21 22 23 24
func FilterNeg(f func(ma.Multiaddr) bool) func(ma.Multiaddr) bool {
	return func(a ma.Multiaddr) bool {
		return !f(a)
	}
}