file/edit.go
func (e *edit) Comment(reLine []string) error {
	allReSearch := make([]*regexp.Regexp, len(reLine))

	for i, v := range reLine {
		if re, err := regexp.Compile(v); err != nil {
			return err
		} else {
			allReSearch[i] = re
		}
	}

	if _, err := e.file.Seek(0, os.SEEK_SET); err != nil {
		return err
	}

	char := []byte(e.CommentChar + " ")
	isNew := false
	buf := new(bytes.Buffer)

	// Check every line.
	for {
		line, err := e.buf.ReadBytes('\n')
		if err == io.EOF {
			break
		}

		for _, v := range allReSearch {
			if v.Match(line) {
				line = append(char, line...)

				if !isNew {
					isNew = true
				}
				break
			}
		}

		if _, err = buf.Write(line); err != nil {
			return err
		}
	}

	if isNew {
		return e.rewrite(buf.Bytes())
	}
	return nil
}
func (e *edit) Comment(reLine []string) error {
	allReSearch := make([]*regexp.Regexp, len(reLine))

	for i, v := range reLine {
		if re, err := regexp.Compile(v); err != nil {
			return err
		} else {
			allReSearch[i] = re
		}
	}

	if _, err := e.file.Seek(0, os.SEEK_SET); err != nil {
		return err
	}

	char := []byte(e.CommentChar + " ")
	isNew := false
	buf := new(bytes.Buffer)

	// Check every line.
	for {
		line, err := e.buf.ReadBytes('\n')
		if err == io.EOF {
			break
		}

		for _, v := range allReSearch {
			if v.Match(line) {
				line = append(char, line...)

				if !isNew {
					isNew = true
				}
				break
			}
		}

		if _, err = buf.Write(line); err != nil {
			return err
		}
	}

	if isNew {
		return e.rewrite(buf.Bytes())
	}
	return nil
}
func ( e * edit ) Comment ( reLine [ ] string ) error { allReSearch := make ( [ ] * regexp . Regexp , len ( reLine ) ) for i , v := range reLine { if re , err := regexp . Compile ( v ) ; err != nil { return err } else { allReSearch [ i ] = re } } if _ , err := e . file . Seek ( 0 , os . SEEK_SET ) ; err != nil { return err } char := [ ] byte ( e . CommentChar + " " ) isNew := false buf := new ( bytes . Buffer ) // Check every line. for { line , err := e . buf . ReadBytes ( '\n' ) if err == io . EOF { break } for _ , v := range allReSearch { if v . Match ( line ) { line = append ( char , line ... ) if ! isNew { isNew = true } break } } if _ , err = buf . Write ( line ) ; err != nil { return err } } if isNew { return e . rewrite ( buf . Bytes ( ) ) } return nil }
// Comment inserts the comment character in lines that mach any regular expression
// in reLine.
Comment inserts the comment character in lines that mach any regular expression in reLine .