]> git.plutz.net Git - confetti/blob - cards/categories/categories.sh
introduced general pdi unescape function
[confetti] / cards / categories / categories.sh
1 #!/bin/zsh
2
3 # Copyright 2015, 2017 Paul Hänsch
4 #
5 # This file is part of Confetti.
6
7 # Confetti is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU Affero General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
11
12 # Confetti is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU Affero General Public License for more details.
16
17 # You should have received a copy of the GNU Affero General Public License
18 # along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
19
20 catfile="${_DATA}/mappings/categories"
21
22 listcards() {
23   for file in "${_DATA}/vcard/"*.vcf; do
24     printf '%s\t%s\n' \
25       "$(sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$file")" \
26       "$file"
27   done \
28   | sort \
29   | sed -r 's;^.*\t(.*/)([^/]+)$;\2;'
30 }
31
32 get_name() {
33   cfile="${_DATA}/vcard/$1"
34   sed -rn 's;^N(\;[^":]+|\;"[^"]+")*:([^\;]*)(\;[^\;]*)(\;[^\;]*)?(\;[^\;]*)?(\;[^\;]*)?\r?$;\5 \3 \4 \2 \6;;
35            tX; b; :X s;[,\; ]+; ;g; p;' "$cfile"
36 }
37
38 get_categories(){
39   cfile="${_DATA}/vcard/$1"
40   sed -rn 's;^CATEGORIES(\;[^":]+|\;"[^"]+")*:(.+)\r?$;\2;;
41            tX; b; :X
42            s;(^|[^\\]+)((\\\\)+),;\1\2\n;g;
43            s;(^|[^\\]),;\1\n;g; s;(^|[^\\]+)((\\\\)+),;\1\2\n;g;
44            s;(^|[^\\]),;\1\n;g; s;\\,;,;g; p;' "$cfile" \
45   | sort -u
46 }
47
48 list_categories() {
49   sort -u "$catfile" \
50   | sed -r '/^[\t ]*$/d'
51 }