mirror of
https://github.com/cupcakearmy/svelte-i18n.git
synced 2024-06-28 01:34:49 +02:00
30 lines
606 B
TypeScript
30 lines
606 B
TypeScript
export function delve(obj: Record<string, unknown>, fullKey?: string) {
|
|
if (fullKey == null) return undefined;
|
|
|
|
if (fullKey in obj) {
|
|
return obj[fullKey];
|
|
}
|
|
|
|
const keys = fullKey.split('.');
|
|
let result: any = obj;
|
|
|
|
for (let p = 0; p < keys.length; p++) {
|
|
if (typeof result === 'object') {
|
|
if (p > 0) {
|
|
const partialKey = keys.slice(p, keys.length).join('.');
|
|
|
|
if (partialKey in result) {
|
|
result = result[partialKey];
|
|
break;
|
|
}
|
|
}
|
|
|
|
result = result[keys[p]];
|
|
} else {
|
|
result = undefined;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|