md2gmi/reader.go

43 lines
568 B
Go
Raw Permalink Normal View History

2021-07-05 08:36:44 +03:00
package main
import (
"bufio"
"fmt"
"io"
"os"
"gitrepo.ru/neonxp/md2gmi/pipe"
2021-07-05 08:36:44 +03:00
)
func reader(in string) (io.Reader, error) {
if in != "" {
file, err := os.Open(in)
if err != nil {
return nil, fmt.Errorf("reader: %w", err)
}
return file, nil
}
return os.Stdin, nil
}
func source(r io.Reader) pipe.Source {
return func() chan pipe.StreamItem {
data := make(chan pipe.StreamItem)
s := bufio.NewScanner(r)
go func() {
i := 0
for s.Scan() {
data <- pipe.NewItem(i, s.Bytes())
i++
}
close(data)
}()
return data
}
}