z_filetest.gno

2.77 Kb · 102 lines
  1package main
  2
  3import (
  4	"gno.land/p/demo/avl"
  5	"gno.land/p/demo/avl/pager"
  6	"gno.land/p/demo/seqid"
  7	"gno.land/p/demo/ufmt"
  8)
  9
 10func main() {
 11	// Create a new AVL tree and populate it with some key-value pairs.
 12	var id seqid.ID
 13	tree := avl.NewTree()
 14	for i := 0; i < 42; i++ {
 15		tree.Set(id.Next().String(), i)
 16	}
 17
 18	// Create a new pager.
 19	pager := pager.NewPager(tree, 7, false)
 20
 21	for pn := -1; pn < 8; pn++ {
 22		page := pager.GetPage(pn)
 23
 24		println(ufmt.Sprintf("## Page %d of %d", page.PageNumber, page.TotalPages))
 25		for idx, item := range page.Items {
 26			println(ufmt.Sprintf("- idx=%d key=%s value=%d", idx, item.Key, item.Value))
 27		}
 28		println(page.Picker("/"))
 29		println()
 30	}
 31}
 32
 33// Output:
 34// ## Page 0 of 6
 35// _0_ | [1](?page=1) | [2](?page=2) | … | [6](?page=6)
 36//
 37// ## Page 0 of 6
 38// _0_ | [1](?page=1) | [2](?page=2) | … | [6](?page=6)
 39//
 40// ## Page 1 of 6
 41// - idx=0 key=0000001 value=0
 42// - idx=1 key=0000002 value=1
 43// - idx=2 key=0000003 value=2
 44// - idx=3 key=0000004 value=3
 45// - idx=4 key=0000005 value=4
 46// - idx=5 key=0000006 value=5
 47// - idx=6 key=0000007 value=6
 48// **1** | [2](?page=2) | [3](?page=3) | … | [6](?page=6)
 49//
 50// ## Page 2 of 6
 51// - idx=0 key=0000008 value=7
 52// - idx=1 key=0000009 value=8
 53// - idx=2 key=000000a value=9
 54// - idx=3 key=000000b value=10
 55// - idx=4 key=000000c value=11
 56// - idx=5 key=000000d value=12
 57// - idx=6 key=000000e value=13
 58// [1](?page=1) | **2** | [3](?page=3) | [4](?page=4) | … | [6](?page=6)
 59//
 60// ## Page 3 of 6
 61// - idx=0 key=000000f value=14
 62// - idx=1 key=000000g value=15
 63// - idx=2 key=000000h value=16
 64// - idx=3 key=000000j value=17
 65// - idx=4 key=000000k value=18
 66// - idx=5 key=000000m value=19
 67// - idx=6 key=000000n value=20
 68// [1](?page=1) | [2](?page=2) | **3** | [4](?page=4) | [5](?page=5) | [6](?page=6)
 69//
 70// ## Page 4 of 6
 71// - idx=0 key=000000p value=21
 72// - idx=1 key=000000q value=22
 73// - idx=2 key=000000r value=23
 74// - idx=3 key=000000s value=24
 75// - idx=4 key=000000t value=25
 76// - idx=5 key=000000v value=26
 77// - idx=6 key=000000w value=27
 78// [1](?page=1) | [2](?page=2) | [3](?page=3) | **4** | [5](?page=5) | [6](?page=6)
 79//
 80// ## Page 5 of 6
 81// - idx=0 key=000000x value=28
 82// - idx=1 key=000000y value=29
 83// - idx=2 key=000000z value=30
 84// - idx=3 key=0000010 value=31
 85// - idx=4 key=0000011 value=32
 86// - idx=5 key=0000012 value=33
 87// - idx=6 key=0000013 value=34
 88// [1](?page=1) | … | [3](?page=3) | [4](?page=4) | **5** | [6](?page=6)
 89//
 90// ## Page 6 of 6
 91// - idx=0 key=0000014 value=35
 92// - idx=1 key=0000015 value=36
 93// - idx=2 key=0000016 value=37
 94// - idx=3 key=0000017 value=38
 95// - idx=4 key=0000018 value=39
 96// - idx=5 key=0000019 value=40
 97// - idx=6 key=000001a value=41
 98// [1](?page=1) | … | [4](?page=4) | [5](?page=5) | **6**
 99//
100// ## Page 7 of 6
101// [1](?page=1) | … | [5](?page=5) | [6](?page=6) | _7_
102//