Show _RUFNAME as a decorated part with GIVN (#276)

Currently function nameDetails simply concatenates various tags to build the full name. The tags _RUFNAME and NICK get some decoration, example: Johannes Karl "Johannes" (Hannes) Buchholz

Well, the tag _RUFNAME as a special part of GIVN, which I suggest not to repeat but show decorated within GIVN.

Result: "Johannes" Karl (Hannes) Buchholz

References:
https://wiki.genealogy.net/Name_in_Gedcom
https://wiki.genealogy.net/GEDCOM/NAME-Tag#Vereinbarung_zu_Rufnamen
This commit is contained in:
Frank Buchholz
2026-04-25 00:05:34 +02:00
committed by GitHub
parent b2fa9b0f68
commit e2123894a6

View File

@@ -192,13 +192,20 @@ function noteDetails(noteEntryReference: GedcomEntry, gedcom: GedcomData) {
function nameDetails(entry: GedcomEntry) { function nameDetails(entry: GedcomEntry) {
const prefix = entry.tree.find((entry) => entry.tag === 'NPFX')?.data; const prefix = entry.tree.find((entry) => entry.tag === 'NPFX')?.data;
const given = entry.tree.find((entry) => entry.tag === 'GIVN')?.data; let given = entry.tree.find((entry) => entry.tag === 'GIVN')?.data;
const rufname = entry.tree.find((entry) => entry.tag === '_RUFNAME')?.data; let rufname = entry.tree.find((entry) => entry.tag === '_RUFNAME')?.data;
const nickname = entry.tree.find((entry) => entry.tag === 'NICK')?.data; const nickname = entry.tree.find((entry) => entry.tag === 'NICK')?.data;
const surnamePrefix = entry.tree.find((entry) => entry.tag === 'SPFX')?.data; const surnamePrefix = entry.tree.find((entry) => entry.tag === 'SPFX')?.data;
const surname = entry.tree.find((entry) => entry.tag === 'SURN')?.data; const surname = entry.tree.find((entry) => entry.tag === 'SURN')?.data;
const suffix = entry.tree.find((entry) => entry.tag === 'NSFX')?.data; const suffix = entry.tree.find((entry) => entry.tag === 'NSFX')?.data;
// If _RUFNAME is included in GIVN, then replace this part in GIVN with this part in quotation marks,
// so that this name is not shown twice.
if (given && rufname && given.includes(rufname)) {
given = given.replace(rufname, `"${rufname}"`);
rufname = undefined;
}
const fullNameParts = [ const fullNameParts = [
prefix, prefix,
given, given,