export PRAXIS=/home/phil/praxis awk ' # exercises in chronological order (page "chron") BEGIN { itemsperpage = 30; FS = "\n"; RS = "" split("Jan:Feb:Mar:Apr:May:Jun:Jul:Aug:Sep:Oct:Nov:Dec", monthname, ":") } $1 ~ /^number\t[1-9][0-9]*$/ { for (i=1; i<=NF; i++) if (split($i, f, /\t/) == 2) val[f[1]] = f[2] out[++nitems] = \ sprintf("%d%02d %s %d" \ "%s: %s" \ "exercise " \ "solution " \ "codepad", val["number"], val["pubday"], monthname[val["pubmon"]], val["pubyear"], val["pubyear"], val["pubmon"], val["pubday"], val["file"], val["title"], val["blurb"], val["pubyear"], val["pubmon"], val["pubday"], val["file"], val["pubyear"], val["pubmon"], val["pubday"], val["file"], val["soln"], val["codepad"]) } # END { for (i=1; i<=nitems; i++) { # if (i % itemsperpage == 1) # printheader(i, nitems) # print ""; print out[i] # if (i % itemsperpage == 0 || i == nitems) # printfooter(i, nitems) # if (i % itemsperpage == 0 && i != nitems) # printseparator(i, nitems) } } END { print "" for (i=1; i<=nitems; i++) { print ""; print out[i] } print "
" } function ceiling(n) { if (int(n) == n) return n; else return int(n) + 1 } function printheader(i, nitems) { printf("%s", "Page: ") for (page=1; page<=ceiling(nitems/itemsperpage); page++) { if (ceiling(i/itemsperpage) == page) printf(" %d", page) else printf(" %d", page, page) } print ""; print ""; print "" } function printfooter(i, nitems) { print ""; print "
" } function printseparator(i, nitems) { print ""; print "\n" } ' $PRAXIS/praxis.info > $PRAXIS/pages/chron