[ create a new paste ] login | about

Project: programmingpraxis
Link: http://programmingpraxis.codepad.org/KpvDEPnn    [ raw code | fork ]

programmingpraxis - Plain Text, pasted on Jul 1:
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("<tr><td>%d</td><td>%02d %s %d</td>" \
            "<td><a href=\"/%d/%02d/%02d/%s/\">%s</a>: %s</td>" \
            "<td><a href=\"/%d/%02d/%02d/%s/\">exercise</a> " \
            "<a href=\"/%d/%02d/%02d/%s/%d/\">solution</a> " \
            "<a href=\"http://programmingpraxis.codepad.org/" \
            "%s\">codepad</a></td></tr>",
            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 "<table cellpadding=\"10\">"
      for (i=1; i<=nitems; i++) {
          print ""; print out[i] }
      print "</table>" }

function ceiling(n) { if (int(n) == n) return n; else return int(n) + 1 }

function printheader(i, nitems) {
    printf("%s", "<big><big>Page:&nbsp;")
    for (page=1; page<=ceiling(nitems/itemsperpage); page++) {
        if (ceiling(i/itemsperpage) == page) printf("&nbsp;%d", page)
        else printf("&nbsp;<a href=\"/chron/%d\">%d</a>", page, page) }
    print "</big></big>"; print ""; print "<table>" }

function printfooter(i, nitems) { print ""; print "</table>" }

function printseparator(i, nitems) { print ""; print "<!--nextpage-->\n" }

' $PRAXIS/praxis.info > $PRAXIS/pages/chron


Create a new paste based on this one


Comments: