Merge pull request 'format' (#34) from format into master
All checks were successful
Go Action / goaction (push) Successful in 54s

Reviewed-on: #34
This commit was merged in pull request #34.
This commit is contained in:
2026-01-02 23:53:48 +03:00
3 changed files with 69 additions and 2 deletions

View File

@@ -0,0 +1,19 @@
package json //nolint:revive
import (
"context"
"gitoa.ru/go-4devs/config"
"gitoa.ru/go-4devs/config/param"
"gitoa.ru/go-4devs/config/value"
)
//nolint:revive
func Json(_ context.Context, in config.Value, _ ...param.Option) (config.Value, error) {
data, err := in.ParseString()
if err != nil {
return in, nil //nolint:nilerr
}
return value.JString(data), nil
}

View File

@@ -0,0 +1,48 @@
package json_test
import (
"context"
"testing"
"gitoa.ru/go-4devs/config"
"gitoa.ru/go-4devs/config/processor/json"
"gitoa.ru/go-4devs/config/test/require"
"gitoa.ru/go-4devs/config/value"
)
func TestJson(t *testing.T) {
t.Parallel()
ctx := context.Background()
val, err := json.Json(ctx, value.String("42"))
require.NoError(t, err)
var res int
require.NoError(t, val.Unmarshal(&res))
require.Equal(t, 42, res)
sval, serr := json.Json(ctx, value.String("\"test data\""))
require.NoError(t, serr)
var sres string
require.NoError(t, sval.Unmarshal(&sres))
require.Equal(t, "test data", sres)
slval, slerr := json.Json(ctx, value.String("[\"test\",\"test2 data\",\"test3\"]"))
require.NoError(t, slerr)
var slres []string
require.NoError(t, slval.Unmarshal(&slres))
require.Equal(t, []string{"test", "test2 data", "test3"}, slres)
}
func TestJson_invalidValue(t *testing.T) {
t.Parallel()
ctx := context.Background()
val, err := json.Json(ctx, value.New("42"))
require.NoError(t, err)
var data string
require.ErrorIs(t, val.Unmarshal(&data), config.ErrInvalidValue)
}

View File

@@ -171,7 +171,7 @@ func typeAssert(source, target any) error {
}
valTarget := reflect.ValueOf(target)
if !valTarget.IsValid() || valTarget.Kind() != reflect.Ptr {
if !valTarget.IsValid() || valTarget.Kind() != reflect.Pointer {
return fmt.Errorf("ptr target:%w", config.ErrInvalidValue)
}
@@ -245,7 +245,7 @@ func directTypeAssert(source, target any) bool {
}
func deReference(v reflect.Value) reflect.Value {
if (v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface) && !v.IsNil() {
if (v.Kind() == reflect.Pointer || v.Kind() == reflect.Interface) && !v.IsNil() {
return v.Elem()
}