reader.go 555 B

12345678910111213141516171819202122232425262728293031323334
  1. package reader
  2. import (
  3. "bufio"
  4. "io"
  5. )
  6. type BlockReader struct {
  7. reader *bufio.Reader
  8. }
  9. func NewBlockReader(reader io.Reader) *BlockReader {
  10. return &BlockReader{
  11. reader: bufio.NewReader(reader),
  12. }
  13. }
  14. func (br *BlockReader) ReadBlock() (block map[string]any, err error) {
  15. var str string
  16. var line []byte
  17. var isprefix bool = true
  18. for isprefix {
  19. line, isprefix, err = br.reader.ReadLine()
  20. if err != nil {
  21. if err == io.EOF {
  22. err = nil
  23. }
  24. return nil, err
  25. }
  26. str += string(line)
  27. }
  28. block = map[string]any{"line": str}
  29. return
  30. }