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//