1package gojsonld
2
3import (
4	"fmt"
5)
6
7type UniqueNamer struct {
8	prefix   string
9	counter  int
10	existing map[string]string
11}
12
13func NewUniqueNamer(prefix string) *UniqueNamer {
14	return &UniqueNamer{
15		prefix:   prefix,
16		existing: make(map[string]string),
17	}
18}
19
20//TODO: sync/atomic counter
21func (un *UniqueNamer) get(old string) string {
22	if len(old) > 0 {
23		if name := un.existing[old]; len(name) > 0 {
24			return name
25		}
26	}
27
28	name := fmt.Sprintf("%s%d", un.prefix, un.counter)
29	un.counter += 1
30	if len(old) > 0 {
31		un.existing[old] = name
32	}
33
34	return name
35}
36
37func (un *UniqueNamer) contains(key string) bool {
38	return len(un.existing[key]) > 0
39}
40