46 lines
		
	
	
		
			854 B
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			854 B
		
	
	
	
		
			Go
		
	
	
	
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
 | 
						|
}
 |