#!/bin/bash SOURCESCRIPT="$0" SAVEINTERMEDIATE=true function prep() { OUTPUTFILE="$1" shift TARGET="$1" shift $SAVEINTERMEDIATE && INTERMEDIATEFILE="$OUTPUTFILE-intermediate.md" || INTERMEDIATEFILE="/dev/null" awk -f <(sed -e '/[B]EGIN_AWK1/,/[E]ND_AWK1/!d' "$SOURCESCRIPT") \ -v target="$TARGET" \ $@ | tee "$INTERMEDIATEFILE" | \ pandoc -f markdown \ --standalone \ --reference-doc=reference.odt \ -o "$OUTPUTFILE" return $? } prep "output-internal.odt" internal $@ prep "output-external.odt" external $@ exit #BEGIN_AWK1 /^<< "/dev/stderr" conditional = nextconditional next } /^>>>/ { conditional = "" next } // { if (conditional) { if (conditional != target) next } print } # From: https://stackoverflow.com/questions/9985528/how-can-i-trim-white-space-from-a-variable-in-awk function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s } function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s } function trim(s) { return rtrim(ltrim(s)); } #END_AWK1