X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=pages%2Fcategories.sh;fp=pages%2Fcategories.sh;h=e875eef7d756e6759c35b66ae6663d619343dbfe;hp=88d78c22d4e982b345ca7f0d4fa861b058c670ba;hb=2ea56a62d0ef6e9d295d0b8931a071e6f2e0a963;hpb=8144adb77a33850bca9c60f0b040b39f4a5da91f diff --git a/pages/categories.sh b/pages/categories.sh index 88d78c2..e875eef 100755 --- a/pages/categories.sh +++ b/pages/categories.sh @@ -1,6 +1,6 @@ #!/bin/zsh -# Copyright 2015 Paul Hänsch +# Copyright 2015, 2017 Paul Hänsch # # This file is part of Confetti. # @@ -20,25 +20,32 @@ catfile="${_DATA}/mappings/categories" listcards() { - ls -1 ${_DATA}/vcard/*vcf 2>/dev/null |while read file; do - fn=$(sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$file") - echo "$fn\t$file" - done |sort |sed -r 's:^.*\t(.*/)([^/]+)$:\2:' + for file in "${_DATA}/vcard/"*.vcf; do + printf '%s\t%s\n' \ + "$(sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$file")" \ + "$file" + done \ + | sort \ + | sed -r 's;^.*\t(.*/)([^/]+)$;\2;' } get_name() { cfile="${_DATA}/vcard/$1" - sed -rn 's:^N(;[^"\:]+|;"[^"]+")*\:([^;]*)(\;[^;]*)(\;[^;]*)?(\;[^;]*)?(\;[^;]*)?\r?$:\5 \3 \4 \2 \6:p' "$cfile" \ - |sed -r 's:,: :;s:\;: :g;s: +: :g' \ + sed -rn 's;^N(\;[^":]+|\;"[^"]+")*:([^\;]*)(\;[^\;]*)(\;[^\;]*)?(\;[^\;]*)?(\;[^\;]*)?\r?$;\5 \3 \4 \2 \6;; + tX; b; :X s;[,\; ]+; ;g; p;' "$cfile" } get_categories(){ cfile="${_DATA}/vcard/$1" - sed -rn 's:^CATEGORIES(;[^"\:]+|;"[^"]+")*\:(.+)\r?$:\2:p' "$cfile" \ - | sed -r 's;(^|[^\\]+)((\\\\)+),;\1\2\n;g; s;(^|[^\\]),;\1\n;g; s;(^|[^\\]+)((\\\\)+),;\1\2\n;g; s;(^|[^\\]),;\1\n;g; s;\\,;,;g' \ + sed -rn 's;^CATEGORIES(\;[^":]+|\;"[^"]+")*:(.+)\r?$;\2;; + tX; b; :X + s;(^|[^\\]+)((\\\\)+),;\1\2\n;g; + s;(^|[^\\]),;\1\n;g; s;(^|[^\\]+)((\\\\)+),;\1\2\n;g; + s;(^|[^\\]),;\1\n;g; s;\\,;,;g; p;' "$cfile" \ | sort -u } list_categories() { - sort -u "$catfile" + sort -u "$catfile" \ + | sed -r '/^[\t ]*$/d' }