Compare commits
2 Commits
d7f789e081
...
3755adde02
| Author | SHA1 | Date | |
|---|---|---|---|
| 3755adde02 | |||
| aeecc55673 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/.idea/
|
||||||
1
.tool-versions
Normal file
1
.tool-versions
Normal file
@ -0,0 +1 @@
|
|||||||
|
golang 1.18.10
|
||||||
58
readerx.go
Normal file
58
readerx.go
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
package readerx
|
||||||
|
|
||||||
|
import "io"
|
||||||
|
|
||||||
|
type Reader struct {
|
||||||
|
reader io.Reader
|
||||||
|
fun func([]byte) (int, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewReader(reader io.Reader) Reader {
|
||||||
|
return Reader{
|
||||||
|
reader: reader,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Reader) Read(b []byte) (l []byte, n int, err error) {
|
||||||
|
n, err = r.reader.Read(b)
|
||||||
|
if n > 0 {
|
||||||
|
l = b[:n]
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Reader) ReadX(b []byte) (l []byte, err error) {
|
||||||
|
l, _, err = r.Read(b)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r Reader) readFunc(b []byte) (l []byte, n int, err error) {
|
||||||
|
n, err = r.fun(b)
|
||||||
|
if n > 0 {
|
||||||
|
l = b[:n]
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReadFrom(reader io.Reader, b []byte) (l []byte, n int, err error) {
|
||||||
|
l, n, err = NewReader(reader).Read(b)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReadFromX(reader io.Reader, b []byte) (l []byte, err error) {
|
||||||
|
l, err = NewReader(reader).ReadX(b)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReadFunc(f func([]byte) (int, error), b []byte) (l []byte, n int, err error) {
|
||||||
|
r := Reader{
|
||||||
|
fun: f,
|
||||||
|
}
|
||||||
|
l, n, err = r.readFunc(b)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReadFuncX(f func([]byte) (int, error), b []byte) (l []byte, err error) {
|
||||||
|
l, _, err = ReadFunc(f, b)
|
||||||
|
return
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user