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