package reader import ( "io" "path/filepath" "git.wecise.com/wecise/util/merrs" ) type BlockReader interface { ReadBlock() (block map[string]any, linecount int, err error) } func NewBlockReader(filename string, reader io.Reader) (BlockReader, error) { filetype := filepath.Ext(filename) switch filetype { case ".csv": return NewCSVBlockReader(filename, reader), nil case ".txt": return NewTXTBlockReader(filename, reader), nil } return nil, merrs.UnsupportedError.NewError("unsupported data format " + filetype) }