#! /usr/bin/gawk -f

# Formats a block-to-panel page to use as a header for a by-block
# word distribution map.  
# Input should have one block per line, in the format
#    BLOCKNUM FOLIONUM PANEL
# e.g.
#    067 102 r3

function ind(k, i)
{
  # prints k spaces
  for(i=1;i<=k;i++) printf " ";
}

BEGIN {
  split("", fols)
  split("", pans)
  mfol = 0
  mpan = 0
  nbl = 0
}

/./ {
  nb++
  if ($1 != nb) { print "bad block num" > "/dev/stderr"; exit 1 }
  fols[nb] = $2
  m = length($2); mfol = (m > mfol ? m : mfol)
  pans[nb] = $3
  m = length($3); mpan = (m > mpan ? m : mpan)
}

END {
  ind(indent);
  for(k=1;k<=nb;k++) printf "-"
  printf "\n"
  for(i=1;i<=mfol;i++)
    { ind(indent);
      for(k=1;k<=nb;k++)
        {
          m = length(fols[k]);
          j = i-(mfol-m);
          printf "%s", (j < 1 ? " " : substr(fols[k],j,1))
        }
      printf "\n"
    }
  for(i=1;i<=mpan;i++)
    { ind(indent);
      for(k=1;k<=nb;k++)
        {
          m = length(pans[k]);
          j = i;
          printf "%s", (j > m ? "." : substr(pans[k],j,1))
        }
      printf "\n"
    }
  ind(indent);
  for(k=1;k<=nb;k++) printf "-"
  printf "\n"
}