#! /usr/bin/gawk -f
# Last edited on 2004-02-07 05:43:59 by stolfi
BEGIN {
abort = -1;
chnum = 0;
}
(abort >= 0) { exit abort; }
/^[\#]/ { next; }
/^ *$/ { print; next; }
/THE FOLLOWING TEXT/ {
next;
}
/^[@]/ {
lin = $0;
folio = $1; lin = substr(lin, i+length(folio)+1);
gsub(/^[@]*/, "", folio);
lin = fix_acip_bugs(lin);
printf "\n# Folio %s\n\n", folio;
printf " %s\n", lin;
next;
}
// {
lin = $0;
lin = fix_acip_bugs(lin);
printf " %s\n", lin;
next;
}
function fix_acip_bugs(lin)
{
gsub(/^[\011 ]+/, "", lin);
gsub(/[\011 ]+$/, "", lin);
gsub(/[\011 ][\011 ]+/, " ", lin);
lin = (" " lin " ");
# replace bogus "7" letter by caret:
lin = gensub(/[ ][7]([A-Za-z\047])/, " ^\\1", "g", lin);
gsub(/^[1 ]+/, "", lin);
gsub(/[ ]+$/, "", lin);
# replace triple scroll mark "#" by "~~~":
lin = gensub(/[\#]/, "~~~", "g", lin);
# replace double scroll mark "*" by "~~":
lin = gensub(/[*]/, "~~", "g", lin);
# replace double comma ",," by paragraph break:
lin = gensub(/ *[,][,] */, "\n =\n\n ", "g", lin);
return lin;
}
function data_error(msg){
printf "%d: error: %s\n", FNR, msg > "/dev/stderr";
abort = 1;
exit abort;
}