X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=pdiread.sh;h=49c2c20d88a7baca7754b0bde5d96482dbe4f3f8;hb=7aab9839b794a48adaf4b3049fc0b8a999d925f8;hp=8118318d3d4bdd4e2793d468c037b28b5006588f;hpb=a3ea41c50acacc5387a3434b7c318b71269d9109;p=lobster diff --git a/pdiread.sh b/pdiread.sh index 8118318..49c2c20 100755 --- a/pdiread.sh +++ b/pdiread.sh @@ -103,6 +103,33 @@ pdi_load() { p;' "$1" } +pdi_escape(){ + local in out='' + for in in "$@"; do + out="${out}${out:+;}" + while [ "$in" ]; do case $in in + \\*) out="${out}\\\\"; in="${in#\\}" ;; + ,*) out="${out}\\,"; in="${in#,}" ;; + \;*) out="${out}\\;"; in="${in#;}" ;; + "$BR"*) out="${out}\\n"; in="${in#${BR}}" ;; + *) out="${out}${in%%[\\,;${BR}]*}"; in="${in#${in%%[\\,;${BR}]*}}" ;; + esac; done + done + printf '%s\n' "$out" +} + +pdi_unescape(){ + local in out='' + [ $# -gt 0 ] && in="$*" || in="$(cat)" + while [ "$in" ]; do case $in in + \\\\*) out="${out}\\"; in="${in#\\\\}" ;; + \\n*) out="${out}${BR}"; in="${in#\\n}" ;; + \\*) in="${in#\\}" ;; + *) out="${out}${in%%\\*}"; in="${in#${in%%\\*}}" ;; + esac; done + printf '%s\n' "$out" +} + pdi_count(){ local card="$1" name="$2" rc='' cnt=0 while rc="${card#*${BR}${name};}"; do