PathrockNetwork Gno Explorer
HomeBlocksTransactionsRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/r/moul/outfmt/v0

Realm
Open in gnoweb ↗

Overview

Kind
Realm (renderable)
Name
v0
Namespace
moul / outfmt
Files
3 (README)(gnomod.toml)
Exported functions
1
Module
gno.land/r/moul/outfmt/v0
gno
0.9

Files (3)

  • README.mdmarkdown
  • gnomod.tomltoml
  • outfmt.gnogno
outfmt.gnogno
1package outfmt23import (4	"math/rand"5	"strconv"6	"strings"78	"gno.land/p/nt/ufmt/v0"9)1011type Result struct {12	Number  int13	Text    string14	Numbers []int15}1617func (res *Result) String() string {18	output := ufmt.Sprintf("Text: %s\n", res.Text)19	output += ufmt.Sprintf("Number: %d\n", res.Number)2021	output += "Numbers:"22	for _, number := range res.Numbers {23		output += ufmt.Sprintf(" %d", number)24	}25	output += "\n"2627	return output28}2930var rSeed = rand.NewPCG(0, 0)3132func genResult() Result {33	r := rand.New(rSeed)3435	// init rand36	res := Result{37		Text:   "Hello Gnomes!",38		Number: r.IntN(1000),39	}4041	length := r.IntN(8) + 242	res.Numbers = make([]int, length)43	for i := 0; i < length; i++ {44		res.Numbers[i] = r.IntN(100)45	}4647	return res48}4950// marshal function to manually convert struct to JSON string51func (r Result) marshal() string {52	// Start JSON string53	jsonStr := `{"Number":` + strconv.Itoa(r.Number) + `,"Text":"` + r.Text + `","Numbers":[`5455	for i, num := range r.Numbers {56		jsonStr += strconv.Itoa(num)57		if i < len(r.Numbers)-1 {58			jsonStr += ","59		}60	}6162	jsonStr += "]}"6364	return jsonStr65}6667func Render(path string) string {68	if path == "" {69		output := ""70		output += "* [?fmt=stringer](/r/moul/outfmt:?fmt=stringer)\n"71		output += "* [?fmt=json](/r/moul/outfmt:?fmt=json)\n"72		output += "* [?fmt=jsonp](/r/moul/outfmt:?fmt=jsonp)\n"73		return output74	}7576	// parsing77	fmt := "stringer" // default78	// FIXME: whitelist and use net/url.79	{80		parts := strings.Split(path, "?")81		if len(parts) == 2 {82			// path := parts[0]83			query := parts[1]84			if query != "" {85				parts = strings.Split(query, "=")86				if len(parts) == 2 {87					k := parts[0]88					v := parts[1]89					if k == "fmt" {90						fmt = v91					}92				}93			}94		}95	}9697	// rendering9899	res := genResult()100	switch fmt {101	case "stringer":102		return res.String()103	case "json":104		// FIXME: return content-type?105		out := res.marshal()106		return string(out)107	case "jsonp":108		// FIXME: return content-type?109		callback := "callback" // FIXME: get it from query110		out := res.marshal()111		return callback + "(" + string(out) + ")"112	default:113		panic("unknown format")114	}115}116117func checkErr(err error) {118	if err != nil {119		panic(err)120	}121}122

Functions

  • Render(path string) string

Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.

Rendered

RenderedRawgnoweb ↗

vm/qrender output, sanitized (docs/render-security.md) and displayed in an empty-sandbox iframe — scripts, forms and popups cannot run. Links stay inert in-preview; right-click to open.