Implements a single reader which handles replacing multiple ranges in an underlying reader with separate data.
package main
import (
"fmt""io""log""os""strings""github.com/carbonin/overreader"
)
funcmain() {
sr:=strings.NewReader("12345 ----- abcde ===")
range1:=&overreader.Range{
Content: strings.NewReader("67890"),
Offset: 6,
}
range2:=&overreader.Range{
Content: strings.NewReader("xyz"),
Offset: 18,
}
r, err:=overreader.NewReader(sr, range1, range2)
iferr!=nil {
log.Fatal(err)
}
if_, err:=io.Copy(os.Stdout, r); err!=nil {
log.Fatal(err)
}
fmt.Println("")
}Running the program above results in the output: 12345 67890 abcde xyz