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])
}