Transaction

EC4B71793F6E85…064B38B1CDD5

Block 26,346 · index 0 · indexed

Summary

Hash
EC4B71793F6E85DFC1D96C291E03ADFB55D07B3AE50105D2DA64064B38B1CDD5
Block
26,346
Size
3351 bytes
Gas used
8,576,207 / 10,291,508
Fee
1000000ugnot
Memo
gnopublish
Status
success

Messages

#1AddPackagegno.land/r/moul/outfmt/v09 arguments

Arguments · 9

  1. #1outfmt
  2. #2README.md
  3. #3# `gno.land/r/moul/outfmt/v0` _TODO: describe this package._ <!-- BEGIN GNOCONTRACTS FOOTER (generated by `make readmes`; do not edit below) --> --- Part of **[moul/gno-contracts](https://github.com/moul/gno-contracts)** — moul's versioned gno.land contracts. See the repository for the full catalog, build/test tooling, and usage. **Dependency graph:** ![gno.land/r/moul/outfmt/v0 dependency graph](https://raw.githubusercontent.com/moul/gno-contracts/main/_assets/gno.land/r/moul/outfmt/v0/deps.png) > ⚠️ **Disclaimer:** provided as-is, without warranty; not security-audited. Full disclaimer: [DISCLAIMER](https://github.com/moul/gno-contracts/blob/main/DISCLAIMER.md). <!-- END GNOCONTRACTS FOOTER -->
  4. #4gnomod.toml
  5. #5module = "gno.land/r/moul/outfmt/v0" gno = "0.9"
  6. #6outfmt.gno
  7. #7package outfmt import ( "math/rand" "strconv" "strings" "gno.land/p/nt/ufmt/v0" ) type Result struct { Number int Text string Numbers []int } func (res *Result) String() string { output := ufmt.Sprintf("Text: %s\n", res.Text) output += ufmt.Sprintf("Number: %d\n", res.Number) output += "Numbers:" for _, number := range res.Numbers { output += ufmt.Sprintf(" %d", number) } output += "\n" return output } var rSeed = rand.NewPCG(0, 0) func genResult() Result { r := rand.New(rSeed) // init rand res := Result{ Text: "Hello Gnomes!", Number: r.IntN(1000), } length := r.IntN(8) + 2 res.Numbers = make([]int, length) for i := 0; i < length; i++ { res.Numbers[i] = r.IntN(100) } return res } // marshal function to manually convert struct to JSON string func (r Result) marshal() string { // Start JSON string jsonStr := `{"Number":` + strconv.Itoa(r.Number) + `,"Text":"` + r.Text + `","Numbers":[` for i, num := range r.Numbers { jsonStr += strconv.Itoa(num) if i < len(r.Numbers)-1 { jsonStr += "," } } jsonStr += "]}" return jsonStr } func Render(path string) string { if path == "" { output := "" output += "* [?fmt=stringer](/r/moul/outfmt:?fmt=stringer)\n" output += "* [?fmt=json](/r/moul/outfmt:?fmt=json)\n" output += "* [?fmt=jsonp](/r/moul/outfmt:?fmt=jsonp)\n" return output } // parsing fmt := "stringer" // default // FIXME: whitelist and use net/url. { parts := strings.Split(path, "?") if len(parts) == 2 { // path := parts[0] query := parts[1] if query != "" { parts = strings.Split(query, "=") if len(parts) == 2 { k := parts[0] v := parts[1] if k == "fmt" { fmt = v } } } } } // rendering res := genResult() switch fmt { case "stringer": return res.String() case "json": // FIXME: return content-type? out := res.marshal() return string(out) case "jsonp": // FIXME: return content-type? callback := "callback" // FIXME: get it from query out := res.marshal() return callback + "(" + string(out) + ")" default: panic("unknown format") } } func checkErr(err error) { if err != nil { panic(err) } }
  8. #8/gno.MemPackageType
  9. #9 MPUserProd

Result log

msg:0,success:true,log:,events:[]

← Back to block 26,346