]> git.plutz.net Git - confetti/blobdiff - actions/generate_courselist.sh
apply tex escaping
[confetti] / actions / generate_courselist.sh
index f2f2aecddaf5506844dcee0e56a656f8e6354c40..5b3a32b4315825921c65f3397c3a85abf60807f4 100755 (executable)
@@ -27,7 +27,7 @@ fromdate="$(date -d "$fromdate" +%s)" 2>/dev/null
 . ${_EXEC}/pages/cards.sh
 
 tex_clean() { #in dire need for improvement
-  echo "$*" |tr -d '{&}\\'
+  printf %s "$*" |tr -d '{&}\\'
 }
 
 
@@ -35,36 +35,10 @@ list_attendee() {  #Parameter: Cardfile
   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' \
@@ -81,42 +55,18 @@ list_attendee() {  #Parameter: Cardfile
     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" \
+    printf '%s & %s & %s & %s\n' \
+           "$(tex_clean $fullname)" "$(tex_clean $values[BDAY])" "$(tex_clean $tel)" "$(tex_clean $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)