MCPcopy
hub / github.com/pelletier/go-toml / assignValue

Method assignValue

unmarshaler.go:1642–1690  ·  view source on GitHub ↗

assignValue stores the TOML value carried by the node into v.

(v reflect.Value, expr *unstable.Node, value *unstable.Node)

Source from the content-addressed store, hash-verified

1640
1641// assignValue stores the TOML value carried by the node into v.
1642func (d *decoder) assignValue(v reflect.Value, expr *unstable.Node, value *unstable.Node) (reflect.Value, error) {
1643 if v.Kind() == reflect.Ptr {
1644 if d.unmarshalerInterface {
1645 if u, ok := unmarshalerOf(v); ok {
1646 return v, u.UnmarshalTOML(d.rawValue(expr, value))
1647 }
1648 }
1649 if v.IsNil() {
1650 v.Set(reflect.New(v.Type().Elem()))
1651 }
1652 nv, err := d.assignValue(v.Elem(), expr, value)
1653 if err != nil || !nv.IsValid() {
1654 return reflect.Value{}, err
1655 }
1656 v.Elem().Set(nv)
1657 return v, nil
1658 }
1659
1660 if d.unmarshalerInterface {
1661 if u, ok := unmarshalerOf(v); ok {
1662 return v, u.UnmarshalTOML(d.rawValue(expr, value))
1663 }
1664 }
1665
1666 switch value.Kind {
1667 case unstable.String:
1668 return d.assignString(v, value)
1669 case unstable.Integer:
1670 return d.assignInteger(v, value)
1671 case unstable.Float:
1672 return d.assignFloat(v, value)
1673 case unstable.Bool:
1674 return d.assignBool(v, value)
1675 case unstable.DateTime:
1676 return d.assignDateTime(v, value)
1677 case unstable.LocalDateTime:
1678 return d.assignLocalDateTime(v, value)
1679 case unstable.LocalDate:
1680 return d.assignLocalDate(v, value)
1681 case unstable.LocalTime:
1682 return d.assignLocalTime(v, value)
1683 case unstable.Array:
1684 return d.assignArray(v, expr, value)
1685 case unstable.InlineTable:
1686 return d.assignInlineTable(v, expr, value)
1687 default:
1688 return reflect.Value{}, unstable.NewParserError(value.Data, "unsupported value kind %s", value.Kind)
1689 }
1690}
1691
1692func (d *decoder) assignString(v reflect.Value, value *unstable.Node) (reflect.Value, error) {
1693 switch v.Kind() {

Callers 2

descendMethod · 0.95
assignArrayMethod · 0.95

Calls 14

rawValueMethod · 0.95
assignStringMethod · 0.95
assignIntegerMethod · 0.95
assignFloatMethod · 0.95
assignBoolMethod · 0.95
assignDateTimeMethod · 0.95
assignLocalDateTimeMethod · 0.95
assignLocalDateMethod · 0.95
assignLocalTimeMethod · 0.95
assignArrayMethod · 0.95
assignInlineTableMethod · 0.95
NewParserErrorFunction · 0.92

Tested by

no test coverage detected