33 lines
763 B
Go
33 lines
763 B
Go
// Package utils provides utility functions for the renderer package.
|
|
package utils
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
// GetValueFromPath retrieves a value from a nested map using a dot-separated path.
|
|
func GetValueFromPath(data map[string]any, path string) (any, bool) {
|
|
// Handle the special case where path is "." or empty, meaning the root data itself
|
|
if path == "." || path == "" {
|
|
return data, true
|
|
}
|
|
|
|
keys := strings.Split(path, ".")
|
|
var current any = data
|
|
for _, key := range keys {
|
|
if key == "" { // Skip empty keys from ".." or "path."
|
|
continue
|
|
}
|
|
if m, ok := current.(map[string]any); ok {
|
|
if val, found := m[key]; found {
|
|
current = val
|
|
} else {
|
|
return nil, false
|
|
}
|
|
} else {
|
|
return nil, false
|
|
}
|
|
}
|
|
return current, true
|
|
}
|