]> git.plutz.net Git - confetti/blobdiff - pages/categories.sh
page to categorize vcards into groups
[confetti] / pages / categories.sh
diff --git a/pages/categories.sh b/pages/categories.sh
new file mode 100755 (executable)
index 0000000..88d78c2
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/zsh
+
+# Copyright 2015 Paul Hänsch
+#
+# This file is part of Confetti.
+# 
+# Confetti is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# Confetti is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+# 
+# You should have received a copy of the GNU Affero General Public License
+# along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
+
+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:'
+}
+
+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' \
+}
+
+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' \
+  | sort -u
+}
+
+list_categories() {
+  sort -u "$catfile"
+}