58 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
|  | package main | ||
|  | 
 | ||
|  | import ( | ||
|  | 	"context" | ||
|  | 	"fmt" | ||
|  | 	"io" | ||
|  | 	"ucl.lmika.dev/repl" | ||
|  | 	"ucl.lmika.dev/ucl" | ||
|  | ) | ||
|  | 
 | ||
|  | type FancyType struct { | ||
|  | 	Foo string | ||
|  | 	Bar string | ||
|  | } | ||
|  | 
 | ||
|  | var newFancyDoc = repl.Doc{ | ||
|  | 	Brief: "returns something fancy", | ||
|  | 	Detailed: ` | ||
|  | 		This will create and return something fancy. | ||
|  | 	`, | ||
|  | } | ||
|  | 
 | ||
|  | func newFancy(ctx context.Context, args ucl.CallArgs) (any, error) { | ||
|  | 	return FancyType{Foo: "is foo", Bar: "is bar"}, nil | ||
|  | } | ||
|  | 
 | ||
|  | func manyFancies(ctx context.Context, args ucl.CallArgs) (any, error) { | ||
|  | 	return []FancyType{ | ||
|  | 		{Foo: "foo 1", Bar: "bar 1"}, | ||
|  | 		{Foo: "foo 2", Bar: "bar 2"}, | ||
|  | 		{Foo: "foo 3", Bar: "bar 3"}, | ||
|  | 	}, nil | ||
|  | } | ||
|  | 
 | ||
|  | func displayFancy(w io.Writer, f FancyType, concise bool) error { | ||
|  | 	if concise { | ||
|  | 		_, err := fmt.Fprintf(w, "%s:%s", f.Foo, f.Bar) | ||
|  | 		return err | ||
|  | 	} | ||
|  | 
 | ||
|  | 	fmt.Fprintf(w, "Foo.. %s\n", f.Foo) | ||
|  | 	fmt.Fprintf(w, "Bar.. %s\n", f.Bar) | ||
|  | 	return nil | ||
|  | } | ||
|  | 
 | ||
|  | func displayFancies(w io.Writer, fs []FancyType, concise bool) error { | ||
|  | 	if concise { | ||
|  | 		_, err := fmt.Fprintf(w, "%d fancies", len(fs)) | ||
|  | 		return err | ||
|  | 	} | ||
|  | 
 | ||
|  | 	fmt.Fprintln(w, "FOO\tBAR") | ||
|  | 	for _, f := range fs { | ||
|  | 		fmt.Fprintf(w, "%v\t%v\n", f.Foo, f.Bar) | ||
|  | 	} | ||
|  | 	return nil | ||
|  | } |