Files
vitify-nuxt/utils/joinName.ts
2025-04-22 10:56:56 +07:00

31 lines
804 B
TypeScript

interface ParsedName {
use?: string
family?: string
given?: string[]
prefix?: string[]
suffix?: string[]
}
function safeJoin(arr: string[]) {
return arr?.length > 0 ? arr.join(' ') + ' ' : ''
}
export function joinName(
names?: ParsedName[],
use: String[] = ['official'],
): String {
if (!names || names.length === 0) {
return 'Nama tidak tersedia'
}
const usedName = names.filter((name) => name && use.includes(name.use))[0]
let name = ''
name += usedName?.prefix?.length > 0 ? usedName.prefix.join(' ') + ' ' : ''
name += usedName?.given?.length > 0 ? usedName.given.join(' ') + ' ' : ''
name += usedName?.family ?? ''
name += usedName?.suffix?.length > 0 ? ' ' + usedName.suffix.join(' ') : ''
return name.trim() || usedName?.text || 'Nama tidak tersedia'
}