func()

in lib/strings.go [844:867]


func (l stringLib) substringBytes(args ...ref.Val) ref.Val {
	if len(args) != 3 {
		return types.NewErr("no such overload for substring")
	}
	s, ok := args[0].(types.Bytes)
	if !ok {
		return types.ValOrErr(s, "no such overload for substring")
	}
	start, ok := args[1].(types.Int)
	if !ok {
		return types.ValOrErr(start, "no such overload for substring")
	}
	if start < 0 {
		return types.NewErr("substring: start out of range: %d < 0", start)
	}
	end, ok := args[2].(types.Int)
	if !ok {
		return types.ValOrErr(end, "no such overload for substring")
	}
	if end < start {
		return types.NewErr("substring: end out of range: %d < %d", end, start)
	}
	return types.DefaultTypeAdapter.NativeToValue(s[start:end])
}