X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=pages%2Fcards.sh;h=538146d83749fdc2b1c24d403c1a69e51487b090;hp=b836f6b63cd450db45f7704fc0151e2dcfe1be24;hb=90288ab07bb1ec83a91581fadc674a87a250a853;hpb=8144adb77a33850bca9c60f0b040b39f4a5da91f diff --git a/pages/cards.sh b/pages/cards.sh index b836f6b..538146d 100755 --- a/pages/cards.sh +++ b/pages/cards.sh @@ -60,10 +60,30 @@ list_hi_companies(){ list_categories() { catfile="${_DATA}/mappings/categories" - sort -u "$catfile" + sort -u "$catfile" \ + | sed -r '/^[\t ]*$/d' } -listcards() { +listcards_order(){ + while read file; do + case "${_GET[order]}" in + firstname) + printf '%s\t%s\n' "$(sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$file")" "$file" + ;; + lastname) + printf '%s\t%s\n' "$(sed -rn 's:^N(;.+)*\:([^;]*;){0} *([^;]*).*$:\3:p' "$file")" "$file" + ;; + bdate) + printf '%s\t%s\n' "$(sed -rn 's:^BDAY(;.+)*\:(.*)$:\2:p' "$file")" "$file" + ;; + *) printf 'x\t%s\n' "$file" + ;; + esac + done \ + | sort -u |sed -r 's;^.*\t;;' +} + +listcards_filter(){ filterex='s;^([^\n]+)\n.*$;\1;p' printf '%s\n' "${_GET[filter]}" |tr '^' '\n' \ | sed -r 's;[]\/\(\)\\\^\$\?\.\+\*\;\[\{\}];\\\\&;g' \ @@ -79,27 +99,24 @@ listcards() { filterex='/(^|\n)'"${expr}"'/I{'"${filterex}"'}' done - for file in "${_DATA}/vcard/"*.vcf; do - case "${_GET[order]}" in - firstname) - printf '%s\t%s\n' "$(sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$file")" "$file" - ;; - lastname) - printf '%s\t%s\n' "$(sed -rn 's:^N(;.+)*\:([^;]*;){0} *([^;]*).*$:\3:p' "$file")" "$file" - ;; - bdate) - printf '%s\t%s\n' "$(sed -rn 's:^BDAY(;.+)*\:(.*)$:\2:p' "$file")" "$file" - ;; - *) printf 'x\t%s\n' "$file" - ;; - esac - done \ - | sort -u |sed -r 's;^.*\t;;' \ - | while read n; do + while read n; do { printf '%s\n' "$n"; cat "$n"; } \ - | sed -rn ':X;N;$!bX; {'"$filterex"'}' - done \ - | sed -r 's;^(.*/)*;;;' + | sed -En ':X;N;$!bX; {'"$filterex"'}' + done + +} + +listcards() { + printf %s\\n "${_DATA}/vcard/"*.vcf \ + | listcards_filter \ + | listcards_order \ + | sed -E 's;^(.*/)*;;;' +} + +listcards_mail() { + printf %s\\n "${_DATA}/vcard/"*.vcf \ + | listcards_filter \ + | xargs -r -d\\n sed -En 's:^EMAIL(;.+)*\:(.+)\r$:\2,:p' } vcf_parse() {