X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=cards%2Flist.sh;h=2cdfcbce6f538bd3fe0ee33c21e71b3892a30ffc;hp=8b911fb88e9bf63583d75702c79efccdeea81020;hb=42508761575d9037ba1b6c52339f7a729505fd37;hpb=3529f64e15cc4fa5e53e6d58a74cd20a09a29c7f diff --git a/cards/list.sh b/cards/list.sh index 8b911fb..2cdfcbc 100755 --- a/cards/list.sh +++ b/cards/list.sh @@ -5,26 +5,6 @@ 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 @@ -34,7 +14,7 @@ card_item(){ 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)" ;; @@ -154,8 +134,31 @@ filter_cards(){ '"$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