introduced general pdi unescape function
authorPaul Hänsch <paul@plutz.net>
Wed, 20 Jan 2021 23:39:15 +0000 (00:39 +0100)
committerPaul Hänsch <paul@plutz.net>
Wed, 20 Jan 2021 23:39:15 +0000 (00:39 +0100)
cards/index.cgi
courses/index.cgi
pdiread.sh

index f1306f6..90be142 100755 (executable)
@@ -11,7 +11,6 @@ fi
 . $_EXEC/cards/widgets.sh
 . $_EXEC/cards/list.sh
 
-unescape() { [ $# = 0 ] && sed -E 's;\\(.);\1;g' || printf %s "$*" |sed -E 's;\\(.);\1;g'; }
 upcase=' y;abcdefghijklmnopqrstuvwxyzäöüé;ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜÉ;; '
 
 filter="$(GET f)"
index 56db2fa..e98d7b6 100755 (executable)
@@ -11,7 +11,6 @@ fi
 . $_EXEC/courses/widgets.sh
 . $_EXEC/courses/list.sh
 
-unescape() { [ $# = 0 ] && sed -E 's;\\(.);\1;g' || printf %s "$*" |sed -E 's;\\(.);\1;g'; }
 upcase=' y;abcdefghijklmnopqrstuvwxyzäöüé;ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜÉ;; '
 
 order="$(GET o |grep -m1 -xE 'DOW|TOD')"
index 6f15658..08fbaec 100755 (executable)
@@ -26,6 +26,16 @@ include_pdi="$0"
 BR='
 '
 
+unescape() {
+  local unescape='s;(^(\\\\)*|[^\\](\\\\)*)\\n;\1\n;g; s;\\(.);\1;g'
+  if [ $# -eq 0 ]; then
+    sed -E "$unescape"
+  else
+    printf %s "$*" \
+    | sed -E "$unescape"
+  fi
+}
+
 pdi_load() {
   # normalise PDI file for processing with pdi_* functions
   # functions in this library can only be applied to normalised data