MCPcopy Create free account
hub / github.com/segmentio/encoding / parseRewriteTemplateMap

Function parseRewriteTemplateMap

proto/rewrite.go:342–391  ·  view source on GitHub ↗
(t Type, f FieldNumber, j json.RawMessage)

Source from the content-addressed store, hash-verified

340}
341
342func parseRewriteTemplateMap(t Type, f FieldNumber, j json.RawMessage) (Rewriter, error) {
343 st := &structType{
344 name: t.Name(),
345 fields: []Field{
346 {Index: 0, Number: 1, Name: "key", Type: t.Key()},
347 {Index: 1, Number: 2, Name: "value", Type: t.Elem()},
348 },
349 fieldsByName: make(map[string]int),
350 fieldsByNumber: make(map[FieldNumber]int),
351 }
352
353 for _, f := range st.fields {
354 st.fieldsByName[f.Name] = f.Index
355 st.fieldsByNumber[f.Number] = f.Index
356 }
357
358 template := map[string]json.RawMessage{}
359
360 if err := json.Unmarshal(j, &template); err != nil {
361 return nil, err
362 }
363
364 maplist := make([]json.RawMessage, 0, len(template))
365
366 for key, value := range template {
367 b, err := json.Marshal(struct {
368 Key string `json:"key"`
369 Value json.RawMessage `json:"value"`
370 }{
371 Key: key,
372 Value: value,
373 })
374 if err != nil {
375 return nil, err
376 }
377 maplist = append(maplist, b)
378 }
379
380 rewriters := make([]Rewriter, len(maplist))
381
382 for i, b := range maplist {
383 r, err := parseRewriteTemplateStruct(st, f, b)
384 if err != nil {
385 return nil, err
386 }
387 rewriters[i] = r
388 }
389
390 return MultiRewriter(rewriters...), nil
391}
392
393func parseRewriteTemplateStruct(t Type, f FieldNumber, j json.RawMessage, rules ...RewriterRules) (Rewriter, error) {
394 template := map[string]json.RawMessage{}

Callers 1

parseRewriteTemplateFunction · 0.85

Calls 7

UnmarshalFunction · 0.92
MarshalFunction · 0.92
MultiRewriterFunction · 0.85
NameMethod · 0.65
KeyMethod · 0.65
ElemMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…