stevenbooru/vendor/src/github.com/yosssi/ace/html_comment.go

70 lines
1.4 KiB
Go

package ace
import (
"bytes"
"io"
"strings"
)
// htmlComment represents an HTML comment.
type htmlComment struct {
elementBase
}
// WriteTo writes data to w.
func (e *htmlComment) WriteTo(w io.Writer) (int64, error) {
var bf bytes.Buffer
// Write an open tag.
bf.WriteString(e.opts.DelimLeft)
bf.WriteString(preDefinedFuncNameHTML)
bf.WriteString(space)
bf.WriteString(doubleQuote)
bf.WriteString(lt)
bf.WriteString(exclamation)
bf.WriteString(doubleQuote)
bf.WriteString(e.opts.DelimRight)
bf.WriteString(hyphen)
bf.WriteString(hyphen)
// Write the HTML comment
if len(e.ln.tokens) > 1 {
bf.WriteString(space)
bf.WriteString(strings.Join(e.ln.tokens[1:], space))
}
// Write the children's HTML.
if len(e.children) > 0 {
bf.WriteString(lf)
if i, err := e.writeChildren(&bf); err != nil {
return i, err
}
} else {
bf.WriteString(space)
}
// Write a close tag.
bf.WriteString(hyphen)
bf.WriteString(hyphen)
bf.WriteString(gt)
// Write the buffer.
i, err := w.Write(bf.Bytes())
return int64(i), err
}
// ContainPlainText returns true.
func (e *htmlComment) ContainPlainText() bool {
return true
}
// newHTMLComment creates and returns an HTML comment.
func newHTMLComment(ln *line, rslt *result, src *source, parent element, opts *Options) *htmlComment {
return &htmlComment{
elementBase: newElementBase(ln, rslt, src, parent, opts),
}
}