###################################################################### # # renders value->{given,family} as "Family, G." # thus shortens $given if necessary ('-' will be kept!) # ###################################################################### use locale; my $dbg = 0; $c->{render_name_with_initials} = sub { my ($field, $repo, $value) = AT _; my $initials = ""; my @givens = split / +/, $value->{given}; if ( $dbg ) { print "givens: ", @givens, "\n"; print "givens#: ", scalar @givens, "\n"; } my $pt = 0; while ($pt <= $#givens) { # as long as remainder exists my @noms = split /-+/, $givens[$pt]; if ( $dbg ) { print scalar @noms," noms: ", @noms, "\n"; } my $ptn = 0; while ($ptn <= $#noms) { # as long as remainder exists my ($initial) = $noms[$ptn] =~ /([\w])[\w]*?\.??/; if ( $dbg ) { print "initial: ", $initial, "\n"; } $initials = $initials . $initial . "."; if ( index($givens[$pt],$noms[$ptn]."-") >= 0) { $initials = $initials . "-"; } $ptn++; if ( $dbg ) { print "initials: ", uc($initials), "\n"; } } $pt++; } return $repo->xml->create_text_node($value->{family}.', '.$initials); }