Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / internal / event / export / printer.go
1 // Copyright 2020 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package export
6
7 import (
8         "io"
9
10         "golang.org/x/tools/internal/event/core"
11         "golang.org/x/tools/internal/event/keys"
12         "golang.org/x/tools/internal/event/label"
13 )
14
15 type Printer struct {
16         buffer [128]byte
17 }
18
19 func (p *Printer) WriteEvent(w io.Writer, ev core.Event, lm label.Map) {
20         buf := p.buffer[:0]
21         if !ev.At().IsZero() {
22                 w.Write(ev.At().AppendFormat(buf, "2006/01/02 15:04:05 "))
23         }
24         msg := keys.Msg.Get(lm)
25         io.WriteString(w, msg)
26         if err := keys.Err.Get(lm); err != nil {
27                 if msg != "" {
28                         io.WriteString(w, ": ")
29                 }
30                 io.WriteString(w, err.Error())
31         }
32         for index := 0; ev.Valid(index); index++ {
33                 l := ev.Label(index)
34                 if !l.Valid() || l.Key() == keys.Msg || l.Key() == keys.Err {
35                         continue
36                 }
37                 io.WriteString(w, "\n\t")
38                 io.WriteString(w, l.Key().Name())
39                 io.WriteString(w, "=")
40                 l.Key().Format(w, buf, l)
41         }
42         io.WriteString(w, "\n")
43 }