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