unify ics parser
[confetti] / pages / categories.sh
1 #!/bin/zsh
2
3 # Copyright 2015 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   ls -1 ${_DATA}/vcard/*vcf 2>/dev/null |while read file; do
24     fn=$(sed -rn 's:^N(;.+)*\:([^;]*;){1} *([^;]*).*$:\3:p' "$file")
25     echo "$fn\t$file"
26   done |sort |sed -r 's:^.*\t(.*/)([^/]+)$:\2:'
27 }
28
29 get_name() {
30   cfile="${_DATA}/vcard/$1"
31   sed -rn 's:^N(;[^"\:]+|;"[^"]+")*\:([^;]*)(\;[^;]*)(\;[^;]*)?(\;[^;]*)?(\;[^;]*)?\r?$:\5 \3 \4 \2 \6:p' "$cfile" \
32   |sed -r 's:,: :;s:\;: :g;s: +: :g' \
33 }
34
35 get_categories(){
36   cfile="${_DATA}/vcard/$1"
37   sed -rn 's:^CATEGORIES(;[^"\:]+|;"[^"]+")*\:(.+)\r?$:\2:p' "$cfile" \
38   | sed -r 's;(^|[^\\]+)((\\\\)+),;\1\2\n;g; s;(^|[^\\]),;\1\n;g; s;(^|[^\\]+)((\\\\)+),;\1\2\n;g; s;(^|[^\\]),;\1\n;g; s;\\,;,;g' \
39   | sort -u
40 }
41
42 list_categories() {
43   sort -u "$catfile"
44 }