Last change
on this file since 67 was 67, checked in by Izuru Yakumo, 23 months ago |
Use vendored modules
Signed-off-by: Izuru Yakumo <yakumo.izuru@…>
|
File size:
948 bytes
|
Rev | Line | |
---|
[67] | 1 | package gcss
|
---|
| 2 |
|
---|
| 3 | import (
|
---|
| 4 | "bufio"
|
---|
| 5 | "io"
|
---|
| 6 | "os"
|
---|
| 7 | )
|
---|
| 8 |
|
---|
| 9 | // writeFlusher is the interface that groups the basic Write and Flush methods.
|
---|
| 10 | type writeFlusher interface {
|
---|
| 11 | io.Writer
|
---|
| 12 | Flush() error
|
---|
| 13 | }
|
---|
| 14 |
|
---|
| 15 | var newBufWriter = func(w io.Writer) writeFlusher {
|
---|
| 16 | return bufio.NewWriter(w)
|
---|
| 17 | }
|
---|
| 18 |
|
---|
| 19 | // write writes the input byte data to the CSS file.
|
---|
| 20 | func write(path string, bc <-chan []byte, berrc <-chan error) (<-chan struct{}, <-chan error) {
|
---|
| 21 | done := make(chan struct{})
|
---|
| 22 | errc := make(chan error)
|
---|
| 23 |
|
---|
| 24 | go func() {
|
---|
| 25 | f, err := os.Create(path)
|
---|
| 26 |
|
---|
| 27 | if err != nil {
|
---|
| 28 | errc <- err
|
---|
| 29 | return
|
---|
| 30 | }
|
---|
| 31 |
|
---|
| 32 | defer f.Close()
|
---|
| 33 |
|
---|
| 34 | w := newBufWriter(f)
|
---|
| 35 |
|
---|
| 36 | for {
|
---|
| 37 | select {
|
---|
| 38 | case b, ok := <-bc:
|
---|
| 39 | if !ok {
|
---|
| 40 | if err := w.Flush(); err != nil {
|
---|
| 41 | errc <- err
|
---|
| 42 | return
|
---|
| 43 | }
|
---|
| 44 |
|
---|
| 45 | done <- struct{}{}
|
---|
| 46 |
|
---|
| 47 | return
|
---|
| 48 | }
|
---|
| 49 |
|
---|
| 50 | if _, err := w.Write(b); err != nil {
|
---|
| 51 | errc <- err
|
---|
| 52 | return
|
---|
| 53 | }
|
---|
| 54 | case err := <-berrc:
|
---|
| 55 | errc <- err
|
---|
| 56 | return
|
---|
| 57 | }
|
---|
| 58 | }
|
---|
| 59 | }()
|
---|
| 60 |
|
---|
| 61 | return done, errc
|
---|
| 62 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.