// step = e.g. 100 // value = 0 to count static S pageNav2(S baseLink, int count, int value, int step, S nVar) { new L l; baseLink += contains(baseLink, "?") ? "&" : "?" + urlencode(nVar) + "="; if (value > 0) l.add(ahref(baseLink + max(0, value-step), htmlencode(unicode_leftPointingTriangle()))); for (int i = 0; i < count; i += step) { int n = i/step+1; if (pageNav2_showPage(value, i, step)) if (value == i) l.add(b(n)); else l.add(ahref(baseLink + i, n)); } if (value+step < count) l.add(ahref(baseLink + (value+step), htmlencode(unicode_rightPointingTriangle()))); ret p("Pages: " + lines(l)); } sbool pageNav2_showPage(int actual, int i, int step) { int diff = abs(actual-i)/step; ret diff <= 10 || ((i/step) % 10) == 1; }