X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=actions%2Fgenerate_courselist.sh;h=f2f2aecddaf5506844dcee0e56a656f8e6354c40;hp=71eb80abcf162cc213bf19bc1cdcfb3705abc1c5;hb=a8dcdb19d3c744ffb2b0776eea12546edaf06627;hpb=0148cdea1cf6f906cc401885013da20774034d75 diff --git a/actions/generate_courselist.sh b/actions/generate_courselist.sh index 71eb80a..f2f2aec 100755 --- a/actions/generate_courselist.sh +++ b/actions/generate_courselist.sh @@ -34,52 +34,56 @@ tex_clean() { #in dire need for improvement list_attendee() { #Parameter: Cardfile id="$1" cardfile="$_DATA/vcard/${id}" - unset key + unset key declare -A tags declare -A values - 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 - n=$(printf %s "$values[N]" \ - | sed -rn 's:^([^;]*)(;[^;]*)(;[^;]*)?(;[^;]*)?(;[^;]*)?$:\4 \2 \3 \1 \5:gp' \ - | sed -r 's:,: :;s:;: :g;s: +: :g;s:^ $::;' - ) - fullname="${n:-${values[FN]:-${values[NICKNAME]}}}" - - 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]" - 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]" - fi; done - echo -E "$fullname & $values[BDAY] & $tel & $note" + 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 + + n=$(printf %s "$values[N]" \ + | sed -rn 's:^([^;]*)(;[^;]*)(;[^;]*)?(;[^;]*)?(;[^;]*)?$:\4 \2 \3 \1 \5:gp' \ + | sed -r 's:,: :;s:;: :g;s: +: :g;s:^ $::;' + ) + fullname="${n:-${values[FN]:-${values[NICKNAME]}}}" + + 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]" + 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]" + fi; done + printf '%s & %s & %s & %s\n' "$fullname" "$values[BDAY]" "$tel" "$note" \ + | sed -r ':X;N;$!bX; s;\n;\\newline ;g' + fi } get_dates() { #Parameter: Calendarfile