package builtins import "monkey/object" import ( "strings" ) // Split ... func Split(args ...object.Object) object.Object { if len(args) < 1 { return newError("wrong number of arguments. got=%d, want=1", len(args)) } if obj, ok := args[0].(*object.String); ok { var sep string s := obj.Value if len(args) == 2 { if obj, ok := args[1].(*object.String); ok { sep = obj.Value } else { return newError("expected arg #2 to be `str` got=%T", args[1]) } } tokens := strings.Split(s, sep) elements := make([]object.Object, len(tokens)) for i, token := range tokens { elements[i] = &object.String{Value: token} } return &object.Array{Elements: elements} } else { return newError("expected arg #1 to be `str` got got=%T", args[0]) } }