MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / MergeMeta

Function MergeMeta

pkg/waveobj/wtypemeta.go:184–224  ·  view source on GitHub ↗

returns a clean copy of meta with mergeMeta merged in if mergeSpecial is false, then special keys will not be merged (like display:*)

(meta MetaMapType, metaUpdate MetaMapType, mergeSpecial bool)

Source from the content-addressed store, hash-verified

182// returns a clean copy of meta with mergeMeta merged in
183// if mergeSpecial is false, then special keys will not be merged (like display:*)
184func MergeMeta(meta MetaMapType, metaUpdate MetaMapType, mergeSpecial bool) MetaMapType {
185 rtn := make(MetaMapType)
186 for k, v := range meta {
187 rtn[k] = v
188 }
189 // deal with "section:*" keys
190 for k := range metaUpdate {
191 if !strings.HasSuffix(k, ":*") {
192 continue
193 }
194 if !metaUpdate.GetBool(k, false) {
195 continue
196 }
197 prefix := strings.TrimSuffix(k, ":*")
198 if prefix == "" {
199 continue
200 }
201 // delete "[prefix]" and all keys that start with "[prefix]:"
202 prefixColon := prefix + ":"
203 for k2 := range rtn {
204 if k2 == prefix || strings.HasPrefix(k2, prefixColon) {
205 delete(rtn, k2)
206 }
207 }
208 }
209 // now deal with regular keys
210 for k, v := range metaUpdate {
211 if !mergeSpecial && strings.HasPrefix(k, "display:") {
212 continue
213 }
214 if strings.HasSuffix(k, ":*") {
215 continue
216 }
217 if v == nil {
218 delete(rtn, k)
219 continue
220 }
221 rtn[k] = v
222 }
223 return rtn
224}

Callers 2

mergeMetaMapFunction · 0.92
UpdateObjectMetaFunction · 0.92

Calls 1

GetBoolMethod · 0.80

Tested by

no test coverage detected