]> git.plutz.net Git - confetti/blobdiff - pages/categories.sh
cleanup of category handling
[confetti] / pages / categories.sh
index 88d78c22d4e982b345ca7f0d4fa861b058c670ba..e875eef7d756e6759c35b66ae6663d619343dbfe 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/zsh
 
-# Copyright 2015 Paul Hänsch
+# Copyright 2015, 2017 Paul Hänsch
 #
 # This file is part of Confetti.
 # 
 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'
 }