From 9c5e3a8f226a975a278e7eca59090b8cc7055b1c Mon Sep 17 00:00:00 2001 From: Ochi Daiki Date: Sun, 24 Sep 2023 20:24:03 +0900 Subject: [PATCH] print each time (#236) --- pipeline_tree_spreader.go | 17 ++++------------- simple_tree_spreader.go | 32 +++++++++++++++++--------------- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/pipeline_tree_spreader.go b/pipeline_tree_spreader.go index 22cc28a..d85f063 100644 --- a/pipeline_tree_spreader.go +++ b/pipeline_tree_spreader.go @@ -44,23 +44,19 @@ func (ds *defaultSpreaderPipeline) spread(ctx context.Context, w io.Writer, root close(errc) }() - bw := bufio.NewWriter(w) + ds.w = w wg := &sync.WaitGroup{} for i := 0; i < workerSpreadNum; i++ { wg.Add(1) - go ds.worker(ctx, wg, bw, roots, errc) + go ds.worker(ctx, wg, roots, errc) } wg.Wait() - - if err := bw.Flush(); err != nil { - errc <- err - } }() return errc } -func (ds *defaultSpreaderPipeline) worker(ctx context.Context, wg *sync.WaitGroup, bw *bufio.Writer, roots <-chan *Node, errc chan<- error) { +func (ds *defaultSpreaderPipeline) worker(ctx context.Context, wg *sync.WaitGroup, roots <-chan *Node, _ chan<- error) { defer wg.Done() for { select { @@ -70,15 +66,10 @@ func (ds *defaultSpreaderPipeline) worker(ctx context.Context, wg *sync.WaitGrou if !ok { return } - ret := ds.spreadBranch(root) ds.Lock() - _, err := bw.WriteString(ret) + ds.spreadBranch(root) ds.Unlock() - - if err != nil { - errc <- err - } } } } diff --git a/simple_tree_spreader.go b/simple_tree_spreader.go index 12eba0a..2c38853 100644 --- a/simple_tree_spreader.go +++ b/simple_tree_spreader.go @@ -35,34 +35,28 @@ const ( encodeTOML ) -type defaultSpreaderSimple struct{} +type defaultSpreaderSimple struct { + w io.Writer +} func (ds *defaultSpreaderSimple) spread(w io.Writer, roots []*Node) error { - branches := "" + ds.w = w for _, root := range roots { - branches += ds.spreadBranch(root) + ds.spreadBranch(root) } - return ds.write(w, branches) + return nil } -func (*defaultSpreaderSimple) spreadBranch(current *Node) string { +func (ds *defaultSpreaderSimple) spreadBranch(current *Node) { ret := current.name + "\n" if !current.isRoot() { ret = current.branch() + " " + current.name + "\n" } + fmt.Fprint(ds.w, ret) for _, child := range current.children { - ret += (*defaultSpreaderSimple)(nil).spreadBranch(child) + ds.spreadBranch(child) } - return ret -} - -func (*defaultSpreaderSimple) write(w io.Writer, in string) error { - buf := bufio.NewWriter(w) - if _, err := buf.WriteString(in); err != nil { - return err - } - return buf.Flush() } type formattedSpreaderSimple[T sitter] struct { @@ -219,6 +213,14 @@ func (cs *colorizeSpreaderSimple) spreadBranch(current *Node) string { return ret } +func (*colorizeSpreaderSimple) write(w io.Writer, in string) error { + buf := bufio.NewWriter(w) + if _, err := buf.WriteString(in); err != nil { + return err + } + return buf.Flush() +} + func (cs *colorizeSpreaderSimple) colorize(current *Node) string { if cs.fileConsiderer.isFile(current) { _ = cs.fileCounter.next()