Skip to content

Commit 6493eed

Browse files
committed
Finish documenting the OrderedMap
Signed-off-by: Dušan Mitrović <dmitrovic@nanointeractive.com>
1 parent e5a84c2 commit 6493eed

File tree

3 files changed

+42
-12
lines changed

3 files changed

+42
-12
lines changed

go.mod

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/nano-interactive/go-utils/v2
33
go 1.23
44

55
require (
6-
github.com/gocql/gocql v1.6.0
6+
github.com/gocql/gocql v1.7.0
77
github.com/gofiber/fiber/v2 v2.52.5
88
github.com/invopop/validation v0.3.0
99
github.com/jackc/pgx/v5 v5.6.0
@@ -14,9 +14,9 @@ require (
1414
github.com/spf13/viper v1.19.0
1515
github.com/stretchr/testify v1.9.0
1616
github.com/tanimutomo/sqlfile v1.0.0
17-
github.com/tinylib/msgp v1.2.0
17+
github.com/tinylib/msgp v1.2.5
1818
github.com/valyala/fasthttp v1.55.0
19-
go.mongodb.org/mongo-driver v1.16.0
19+
go.mongodb.org/mongo-driver v1.17.3
2020
google.golang.org/grpc v1.65.0
2121
)
2222

@@ -26,7 +26,7 @@ require (
2626
github.com/andybalholm/brotli v1.1.0 // indirect
2727
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
2828
github.com/fsnotify/fsnotify v1.7.0 // indirect
29-
github.com/golang/snappy v0.0.4 // indirect
29+
github.com/golang/snappy v1.0.0 // indirect
3030
github.com/google/uuid v1.6.0 // indirect
3131
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed // indirect
3232
github.com/hashicorp/hcl v1.0.0 // indirect
@@ -42,7 +42,7 @@ require (
4242
github.com/mitchellh/mapstructure v1.5.0 // indirect
4343
github.com/montanaflynn/stats v0.7.1 // indirect
4444
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
45-
github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986 // indirect
45+
github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect
4646
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
4747
github.com/rivo/uniseg v0.4.7 // indirect
4848
github.com/sagikazarmark/locafero v0.6.0 // indirect
@@ -60,11 +60,11 @@ require (
6060
github.com/xdg-go/stringprep v1.0.4 // indirect
6161
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
6262
go.uber.org/multierr v1.11.0 // indirect
63-
golang.org/x/crypto v0.25.0 // indirect
63+
golang.org/x/crypto v0.26.0 // indirect
6464
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
65-
golang.org/x/sync v0.7.0 // indirect
66-
golang.org/x/sys v0.22.0 // indirect
67-
golang.org/x/text v0.16.0 // indirect
65+
golang.org/x/sync v0.8.0 // indirect
66+
golang.org/x/sys v0.23.0 // indirect
67+
golang.org/x/text v0.17.0 // indirect
6868
google.golang.org/protobuf v1.34.2 // indirect
6969
gopkg.in/inf.v0 v0.9.1 // indirect
7070
gopkg.in/ini.v1 v1.67.0 // indirect

go.sum

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtg
2727
github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
2828
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
2929
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
30+
github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=
31+
github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
3032
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
3133
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
3234
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
@@ -75,6 +77,8 @@ github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6
7577
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
7678
github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986 h1:jYi87L8j62qkXzaYHAQAhEapgukhenIMZRBKTNRLHJ4=
7779
github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM=
80+
github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c h1:dAMKvw0MlJT1GshSTtih8C2gDs04w8dReiOGXrGLNoY=
81+
github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c/go.mod h1:RqIHx9QI14HlwKwm98g9Re5prTQ6LdeRQn+gXJFxsJM=
7882
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
7983
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
8084
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
@@ -132,6 +136,8 @@ github.com/tanimutomo/sqlfile v1.0.0 h1:8Nnkd1ra7vBDb7yrv4zvvEdto0vO5Yuegv87C6Tc
132136
github.com/tanimutomo/sqlfile v1.0.0/go.mod h1:vdHiTAUB+JJn9lSFzv4iLGm54ghBOo444TthhTSvP4E=
133137
github.com/tinylib/msgp v1.2.0 h1:0uKB/662twsVBpYUPbokj4sTSKhWFKB7LopO2kWK8lY=
134138
github.com/tinylib/msgp v1.2.0/go.mod h1:2vIGs3lcUo8izAATNobrCHevYZC/LMsJtw4JPiYPHro=
139+
github.com/tinylib/msgp v1.2.5 h1:WeQg1whrXRFiZusidTQqzETkRpGjFjcIhW6uqWH09po=
140+
github.com/tinylib/msgp v1.2.5/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0=
135141
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
136142
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
137143
github.com/valyala/fasthttp v1.55.0 h1:Zkefzgt6a7+bVKHnu/YaYSOPfNYNisSVBo/unVCf8k8=
@@ -150,13 +156,16 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1
150156
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
151157
go.mongodb.org/mongo-driver v1.16.0 h1:tpRsfBJMROVHKpdGyc1BBEzzjDUWjItxbVSZ8Ls4BQ4=
152158
go.mongodb.org/mongo-driver v1.16.0/go.mod h1:oB6AhJQvFQL4LEHyXi6aJzQJtBiTQHiAd83l0GdFaiw=
159+
go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ=
160+
go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ=
153161
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
154162
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
155163
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
156164
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
157165
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
158166
golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
159167
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
168+
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
160169
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
161170
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
162171
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -174,6 +183,7 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ
174183
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
175184
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
176185
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
186+
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
177187
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
178188
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
179189
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -187,6 +197,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
187197
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
188198
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
189199
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
200+
golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
201+
golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
190202
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
191203
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
192204
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -195,6 +207,7 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
195207
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
196208
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4=
197209
golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI=
210+
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
198211
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
199212
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
200213
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=

types/ordered_map.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type (
1414

1515
// NewOrderedMap
1616
//
17-
// Initializes a new instance of the OrderedMap
17+
// Initializes a new instance of the OrderedMap.
1818
func NewOrderedMap[T comparable, V any](length int) OrderedMap[T, V] {
1919
return OrderedMap[T, V]{
2020
insertionOrder: make([]T, 0, length),
@@ -23,6 +23,10 @@ func NewOrderedMap[T comparable, V any](length int) OrderedMap[T, V] {
2323
}
2424
}
2525

26+
// NewOrderedMapWithCompareFunc
27+
//
28+
// Initializes a new instance of the OrderedMap with custom ordering
29+
// dictated by the cmpFunc comparison function.
2630
func NewOrderedMapWithCompareFunc[T comparable, V any](
2731
length int,
2832
cmpFunc func(a, b T) int,
@@ -43,17 +47,23 @@ func (om *OrderedMap[T, V]) SetCompareFunc(cmpFunc func(a, b T) int) {
4347

4448
// UnsetCompareFunc
4549
//
46-
// Unsets the comparison function
50+
// Unsets the comparison function.
4751
func (om *OrderedMap[T, V]) UnsetCompareFunc() {
4852
om.cmpFunc = nil
4953
}
5054

55+
// Get
56+
//
57+
// Gets the value associated with a key.
58+
// If the key doesn't exist in the map the zero value
59+
// for the type is returned and the boolean is set to false.
5160
func (om OrderedMap[T, V]) Get(key T) (V, bool) {
5261
v, ok := om.values[key]
5362

5463
return v, ok
5564
}
5665

66+
// Inserts a new value into the map while tracking the order.
5767
func (om *OrderedMap[T, V]) Set(key T, value V) {
5868
_, exists := om.values[key]
5969
if !exists {
@@ -63,6 +73,9 @@ func (om *OrderedMap[T, V]) Set(key T, value V) {
6373
om.values[key] = value
6474
}
6575

76+
// Unset
77+
//
78+
// Deletes the key from the map.
6679
func (om *OrderedMap[T, V]) Unset(key T) {
6780
newInsertionOrder := make([]T, 0, len(om.insertionOrder)-1)
6881
for _, k := range om.insertionOrder {
@@ -76,6 +89,9 @@ func (om *OrderedMap[T, V]) Unset(key T) {
7689
delete(om.values, key)
7790
}
7891

92+
// Reset
93+
//
94+
// Resets all state including the comparison function.
7995
func (om *OrderedMap[T, V]) Reset() {
8096
om.insertionOrder = make([]T, 0)
8197
om.values = make(map[T]V, 0)
@@ -86,7 +102,8 @@ func (om *OrderedMap[T, V]) Reset() {
86102
// If the CompareFunc is unset, it iterates in insertion order.
87103
// Otherewise, it iterates in the order dictated by CompareFunc.
88104
//
89-
// Call SetCompareFunc to set the comparison function.
105+
// Either use NewOrderedMapWithCompareFunc or
106+
// call SetCompareFunc to set the comparison function.
90107
func (om OrderedMap[T, V]) Iter(yield func(key T, value V) bool) {
91108
order := om.insertionOrder
92109
if om.cmpFunc != nil {

0 commit comments

Comments
 (0)