File tree Expand file tree Collapse file tree 2 files changed +32
-18
lines changed Expand file tree Collapse file tree 2 files changed +32
-18
lines changed Original file line number Diff line number Diff line change @@ -26,27 +26,11 @@ type Map interface {
26
26
Set (key string , val Value )
27
27
Get (key string ) (Value , bool )
28
28
Delete (key string )
29
+ Equals (other Map ) bool
29
30
Iterate (func (key string , value Value ) bool ) bool
30
31
Length () int
31
32
}
32
33
33
- // Equals compares two maps lexically.
34
- func MapEquals (lhs , rhs Map ) bool {
35
- if lhs .Length () != rhs .Length () {
36
- return false
37
- }
38
- return lhs .Iterate (func (k string , vl Value ) bool {
39
- vr , ok := rhs .Get (k )
40
- if ! ok {
41
- return false
42
- }
43
- if ! Equals (vl , vr ) {
44
- return false
45
- }
46
- return true
47
- })
48
- }
49
-
50
34
// Less compares two maps lexically.
51
35
func MapLess (lhs , rhs Map ) bool {
52
36
return Compare (lhs , rhs ) == - 1
@@ -150,6 +134,23 @@ func (m MapInterface) Length() int {
150
134
return len (m )
151
135
}
152
136
137
+ func (m MapInterface ) Equals (other Map ) bool {
138
+ for k , v := range m {
139
+ ks , ok := k .(string )
140
+ if ! ok {
141
+ return false
142
+ }
143
+ vo , ok := other .Get (ks )
144
+ if ! ok {
145
+ return false
146
+ }
147
+ if ! Equals (v , vo ) {
148
+ return false
149
+ }
150
+ }
151
+ return true
152
+ }
153
+
153
154
type MapString map [string ]interface {}
154
155
155
156
func (m MapString ) Set (key string , val Value ) {
@@ -180,3 +181,16 @@ func (m MapString) Iterate(fn func(key string, value Value) bool) bool {
180
181
func (m MapString ) Length () int {
181
182
return len (m )
182
183
}
184
+
185
+ func (m MapString ) Equals (other Map ) bool {
186
+ for k , v := range m {
187
+ vo , ok := other .Get (k )
188
+ if ! ok {
189
+ return false
190
+ }
191
+ if ! Equals (v , vo ) {
192
+ return false
193
+ }
194
+ }
195
+ return true
196
+ }
Original file line number Diff line number Diff line change @@ -99,7 +99,7 @@ func Equals(lhs, rhs Value) bool {
99
99
}
100
100
if IsMap (lhs ) {
101
101
if IsMap (rhs ) {
102
- return MapEquals ( ValueMap (lhs ), ValueMap (rhs ))
102
+ return ValueMap (lhs ). Equals ( ValueMap (rhs ))
103
103
}
104
104
return false
105
105
}
You can’t perform that action at this time.
0 commit comments