#!/bin/zsh
-# Copyright 2014, 2016 Paul Hänsch
+# Copyright 2014, 2016, 2017 Paul Hänsch
#
# This file is part of Confetti.
#
. ${_EXEC}/pages/cards.sh
tex_clean() { #in dire need for improvement
- echo "$*" |tr -d '{&}\\'
+ printf %s "$*" |tr -d '{&}\\"'
}
id="$1"
cardfile="$_DATA/vcard/${id}"
- unset key
- declare -A tags
declare -A values
if [ -r "$cardfile" ]; then
- vcf_parse "$cardfile" |while read -r line; do
- declare -A tag
- case "$line" in
- value*) eval "$line";;
- tag*) eval "$line";;
- key*)
- if [ -z "$key" ]; then
- eval "$line"
- else
- values[$key]="$(tex_clean "$value")"
- for t in ${(k)tag}; do
- tags[${key}_$t]="$tag[$t]"
- done
- eval "$line"
- if [ -n "$values[$key]" ]; then
- n=0
- while [ -n "$values[$key$n]" ]; do n=$(($n + 1)); done
- key=$key$n
- fi
- unset value
- unset tag
- fi
- ;;
- esac
- done
+ vcf_parse "$cardfile"
n=$(printf %s "$values[N]" \
| sed -rn 's:^([^;]*)(;[^;]*)(;[^;]*)?(;[^;]*)?(;[^;]*)?$:\4 \2 \3 \1 \5:gp' \
tel=''
for n in TEL TEL{0..10}; do if (echo "$values[$n]" |grep -Eq '[0-9]'); then
- [ -n "$tel" ] && tel="$tel\\newline $values[$n]" || tel="$values[$n]"
+ [ -n "$tel" ] && tel="$tel\\newline $(tex_clean "$values[$n]")" || tel="$(tex_clean "$values[$n]")"
fi; done
note=''
for n in NOTE NOTE{0..10}; do if [ -n "$values[$n]" ]; then
- [ -n "$note" ] && note="$note\\newline $values[$n]" || note="$values[$n]"
+ [ -n "$note" ] && note="$note\\newline $(tex_clean "$values[$n]")" || note="$(tex_clean "$values[$n]")"
fi; done
- printf '%s & %s & %s & %s\n' "$fullname" "$values[BDAY]" "$tel" "$note" \
+ printf '%s & %s & %s & %s\n' \
+ "$(tex_clean $fullname)" "$(tex_clean $values[BDAY])" "$tel" "$note" \
| sed -r ':X;N;$!bX; s;\n;\\newline ;g'
fi
}
get_dates() { #Parameter: Calendarfile
calendarfile="$_DATA/ical/$course"
- unset key
- declare -A tags
declare -A values
- ics_parse "$calendarfile" |while read -r line; do
- declare -A tag
- case "$line" in
- value*) eval "$line";;
- tag*) eval "$line";;
- key*)
- if [ -z "$key" ]; then
- eval "$line"
- else
- values[$key]="$(tex_clean "$value")"
- for t in ${(k)tag}; do
- tags[${key}_$t]="$tag[$t]"
- done
- eval "$line"
- if [ -n "$values[$key]" ]; then
- n=0
- while [ -n "$values[$key$n]" ]; do n=$(($n + 1)); done
- key=$key$n
- fi
- unset value
- unset tag
- fi
- ;;
- esac
- done
+ ics_parse "$calendarfile"
dtstart="$values[DTSTART]"
[ -z "$dtstart" ] && dtstart=$(date +%Y%m%dT%H%M%S)