github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/examples/gno.land/r/demo/boards/misc.gno (about) 1 package boards 2 3 import ( 4 "std" 5 "strconv" 6 "strings" 7 8 "gno.land/r/demo/users" 9 ) 10 11 //---------------------------------------- 12 // private utility methods 13 // XXX ensure these cannot be called from public. 14 15 func getBoard(bid BoardID) *Board { 16 bidkey := boardIDKey(bid) 17 board_, exists := gBoards.Get(bidkey) 18 if !exists { 19 return nil 20 } 21 board := board_.(*Board) 22 return board 23 } 24 25 func incGetBoardID() BoardID { 26 gBoardsCtr++ 27 return BoardID(gBoardsCtr) 28 } 29 30 func padLeft(str string, length int) string { 31 if len(str) >= length { 32 return str 33 } else { 34 return strings.Repeat(" ", length-len(str)) + str 35 } 36 } 37 38 func padZero(u64 uint64, length int) string { 39 str := strconv.Itoa(int(u64)) 40 if len(str) >= length { 41 return str 42 } else { 43 return strings.Repeat("0", length-len(str)) + str 44 } 45 } 46 47 func boardIDKey(bid BoardID) string { 48 return padZero(uint64(bid), 10) 49 } 50 51 func postIDKey(pid PostID) string { 52 return padZero(uint64(pid), 10) 53 } 54 55 func indentBody(indent string, body string) string { 56 lines := strings.Split(body, "\n") 57 res := "" 58 for i, line := range lines { 59 if i > 0 { 60 res += "\n" 61 } 62 res += indent + line 63 } 64 return res 65 } 66 67 // NOTE: length must be greater than 3. 68 func summaryOf(str string, length int) string { 69 lines := strings.SplitN(str, "\n", 2) 70 line := lines[0] 71 if len(line) > length { 72 line = line[:(length-3)] + "..." 73 } else if len(lines) > 1 { 74 // len(line) <= 80 75 line = line + "..." 76 } 77 return line 78 } 79 80 func displayAddressMD(addr std.Address) string { 81 user := users.GetUserByAddress(addr) 82 if user == nil { 83 return "[" + addr.String() + "](/r/demo/users:" + addr.String() + ")" 84 } else { 85 return "[@" + user.Name + "](/r/demo/users:" + user.Name + ")" 86 } 87 } 88 89 func usernameOf(addr std.Address) string { 90 user := users.GetUserByAddress(addr) 91 if user == nil { 92 return "" 93 } 94 return user.Name 95 }