Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
854 B
45 lines
854 B
package vfsgen |
|
|
|
import "io" |
|
|
|
// commentWriter writes a Go comment to the underlying io.Writer, |
|
// using line comment form (//). |
|
type commentWriter struct { |
|
W io.Writer |
|
wroteSlashes bool // Wrote "//" at the beginning of the current line. |
|
} |
|
|
|
func (c *commentWriter) Write(p []byte) (int, error) { |
|
var n int |
|
for i, b := range p { |
|
if !c.wroteSlashes { |
|
s := "//" |
|
if b != '\n' { |
|
s = "// " |
|
} |
|
if _, err := io.WriteString(c.W, s); err != nil { |
|
return n, err |
|
} |
|
c.wroteSlashes = true |
|
} |
|
n0, err := c.W.Write(p[i : i+1]) |
|
n += n0 |
|
if err != nil { |
|
return n, err |
|
} |
|
if b == '\n' { |
|
c.wroteSlashes = false |
|
} |
|
} |
|
return len(p), nil |
|
} |
|
|
|
func (c *commentWriter) Close() error { |
|
if !c.wroteSlashes { |
|
if _, err := io.WriteString(c.W, "//"); err != nil { |
|
return err |
|
} |
|
c.wroteSlashes = true |
|
} |
|
return nil |
|
}
|
|
|