github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/optional/printf/printf.go (about) 1 package printf 2 3 import ( 4 "fmt" 5 6 "github.com/lmorg/murex/lang" 7 "github.com/lmorg/murex/lang/types" 8 ) 9 10 func init() { 11 lang.DefineFunction("printf", cmdPrintf, types.String) 12 } 13 14 func cmdPrintf(p *lang.Process) error { 15 str, err := p.Parameters.String(0) 16 if err != nil { 17 return err 18 } 19 20 s := fmt.Sprintf(str, convSlice(p.Parameters.StringArray()[1:])...) 21 22 _, err = p.Stdout.Write([]byte(s)) 23 return err 24 } 25 26 func convSlice(s []string) []any { 27 r := make([]any, len(s)) 28 for i := range s { 29 r[i] = s[i] 30 } 31 return r 32 }