...
1 package objx
2
3
4
5 func (m Map) Exclude(exclude []string) Map {
6 excluded := make(Map)
7 for k, v := range m {
8 if !contains(exclude, k) {
9 excluded[k] = v
10 }
11 }
12 return excluded
13 }
14
15
16 func (m Map) Copy() Map {
17 copied := Map{}
18 for k, v := range m {
19 copied[k] = v
20 }
21 return copied
22 }
23
24
25
26
27
28 func (m Map) Merge(merge Map) Map {
29 return m.Copy().MergeHere(merge)
30 }
31
32
33
34
35
36
37 func (m Map) MergeHere(merge Map) Map {
38 for k, v := range merge {
39 m[k] = v
40 }
41 return m
42 }
43
44
45
46
47 func (m Map) Transform(transformer func(key string, value interface{}) (string, interface{})) Map {
48 newMap := Map{}
49 for k, v := range m {
50 modifiedKey, modifiedVal := transformer(k, v)
51 newMap[modifiedKey] = modifiedVal
52 }
53 return newMap
54 }
55
56
57
58
59
60 func (m Map) TransformKeys(mapping map[string]string) Map {
61 return m.Transform(func(key string, value interface{}) (string, interface{}) {
62 if newKey, ok := mapping[key]; ok {
63 return newKey, value
64 }
65 return key, value
66 })
67 }
68
69
70 func contains(s []string, e string) bool {
71 for _, a := range s {
72 if a == e {
73 return true
74 }
75 }
76 return false
77 }
78
View as plain text