forked from jshiffer/matterbridge
28 lines
537 B
Go
28 lines
537 B
Go
package objects
|
|
|
|
func builtinFormat(args ...Object) (Object, error) {
|
|
numArgs := len(args)
|
|
if numArgs == 0 {
|
|
return nil, ErrWrongNumArguments
|
|
}
|
|
|
|
format, ok := args[0].(*String)
|
|
if !ok {
|
|
return nil, ErrInvalidArgumentType{
|
|
Name: "format",
|
|
Expected: "string",
|
|
Found: args[0].TypeName(),
|
|
}
|
|
}
|
|
if numArgs == 1 {
|
|
return format, nil // okay to return 'format' directly as String is immutable
|
|
}
|
|
|
|
s, err := Format(format.Value, args[1:]...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &String{Value: s}, nil
|
|
}
|