Add format config support

This commit is contained in:
世界
2022-07-03 03:42:57 +08:00
parent 30444057bd
commit 85a695caa1
10 changed files with 77 additions and 60 deletions

View File

@@ -2,33 +2,33 @@ package option
import (
"encoding/json"
"github.com/sagernet/sing/common/x/linkedhashmap"
)
func ToMap(v any) (map[string]any, error) {
func ToMap(v any) (*linkedhashmap.Map[string, any], error) {
bytes, err := json.Marshal(v)
if err != nil {
return nil, err
}
var content map[string]any
var content linkedhashmap.Map[string, any]
err = json.Unmarshal(bytes, &content)
if err != nil {
return nil, err
}
return content, nil
return &content, nil
}
func MergeObjects(objects ...any) (map[string]any, error) {
content := make(map[string]any)
func MergeObjects(objects ...any) (*linkedhashmap.Map[string, any], error) {
var content linkedhashmap.Map[string, any]
for _, object := range objects {
objectMap, err := ToMap(object)
if err != nil {
return nil, err
}
for k, v := range objectMap {
content[k] = v
}
content.PutAll(objectMap)
}
return content, nil
return &content, nil
}
func MarshallObjects(objects ...any) ([]byte, error) {