MCPcopy Create free account
hub / github.com/dop251/goja / genericExportToMap

Function genericExportToMap

object.go:981–1019  ·  view source on GitHub ↗
(o *Object, dst reflect.Value, typ reflect.Type, ctx *objectExportCtx)

Source from the content-addressed store, hash-verified

979}
980
981func genericExportToMap(o *Object, dst reflect.Value, typ reflect.Type, ctx *objectExportCtx) error {
982 dst.Set(reflect.MakeMap(typ))
983 ctx.putTyped(o, typ, dst.Interface())
984 keyTyp := typ.Key()
985 elemTyp := typ.Elem()
986 needConvertKeys := !reflectTypeString.AssignableTo(keyTyp)
987 iter := &enumerableIter{
988 o: o,
989 wrapped: o.self.iterateStringKeys(),
990 }
991 r := o.runtime
992 for item, next := iter.next(); next != nil; item, next = next() {
993 var kv reflect.Value
994 var err error
995 if needConvertKeys {
996 kv = reflect.New(keyTyp).Elem()
997 err = r.toReflectValue(item.name, kv, ctx)
998 if err != nil {
999 return fmt.Errorf("could not convert map key %s to %v: %w", item.name.String(), typ, err)
1000 }
1001 } else {
1002 kv = reflect.ValueOf(item.name.String())
1003 }
1004
1005 ival := o.self.getStr(item.name.string(), nil)
1006 if ival != nil {
1007 vv := reflect.New(elemTyp).Elem()
1008 err = r.toReflectValue(ival, vv, ctx)
1009 if err != nil {
1010 return fmt.Errorf("could not convert map value %v to %v at key %s: %w", ival, typ, item.name.String(), err)
1011 }
1012 dst.SetMapIndex(kv, vv)
1013 } else {
1014 dst.SetMapIndex(kv, reflect.Zero(elemTyp))
1015 }
1016 }
1017
1018 return nil
1019}
1020
1021func (o *baseObject) exportToMap(m reflect.Value, typ reflect.Type, ctx *objectExportCtx) error {
1022 return genericExportToMap(o.val, m, typ, ctx)

Callers 2

exportToMapMethod · 0.85
exportToMapMethod · 0.85

Calls 9

nextMethod · 0.95
putTypedMethod · 0.80
NewMethod · 0.80
toReflectValueMethod · 0.80
SetMethod · 0.65
iterateStringKeysMethod · 0.65
StringMethod · 0.65
getStrMethod · 0.65
stringMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…