unescape() { [ $# = 0 ] && sed -E 's;\\(.);\1;g' || printf %s "$*" |sed -E 's;\\(.);\1;g'; }
upcase=' y;abcdefghijklmnopqrstuvwxyzäöüé;ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜÉ;; '
-card_fullname(){
- local card="$1" n1 n2 n3 n4 n5
-
- local N="$(pdi_value "$card" N)"
- local FN="$(pdi_value "$card" FN)"
- local NICKNAME="$(pdi_value "$card" NICKNAME)"
-
- if [ "$FN" ]; then
- printf %s "$FN"
- elif [ "$N" ]; then
- IFS=\; read n1 n2 n3 n4 n5 <<-EOF
- $(pdi_value "$card" N)
- EOF
- printf '%s %s %s %s %s' "$n4" "$n2" "$n3" "$n1" "$n5"
- elif [ "$NICKNAME" ]; then
- printf '"%s"' "$NICKNAME"
- fi
-}
-
-
card_item(){
local card="$1"
local item cnt c
cnt="$(pdi_count "$card" "$item")"
case $item in
- FN) printf '[h2 .item .FN ­%s]' "$(card_fullname "$card" |unescape |HTML)"
+ FN) printf '[h2 .item .FN ­%s]' "$(pdi_value "$card" FN |unescape |HTML)"
;;
GENDER) printf '[span .item .GENDER ­%s]' "$(pdi_value "$card" GENDER |l10n)"
;;
'"$upcase""$fex"
}
+order_cards() {
+ local cardfile card
+
+ while read cardfile; do
+ card="$(pdi_load "$cardfile")"
+
+ case $order in
+ firstname)
+ printf '%s %s\n' "$(pdi_value "$card" FN)" "$cardfile"
+ ;;
+ lastname)
+ printf '%s %s\n' "$(pdi_value "$card" N || pdi_value "$card" FN)" "$cardfile"
+ ;;
+ bdate)
+ printf '%s %s\n' "$(pdi_value "$card" BDAY || printf 0000-00-00)" "$cardfile"
+ ;;
+ esac
+ done \
+ | sort \
+ | sed -E 's;^.*\t;;g'
+}
+
list_cards(){
filter_cards \
+ | order_cards \
| while read cardfile; do
print_card "$cardfile"
done