31 lines
804 B
TypeScript
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'
|
|
}
|