1
0
mirror of https://github.com/golang/go synced 2024-11-12 10:00:25 -07:00

xml: add Escape, copied from template.HTMLEscape.

R=rsc
CC=golang-dev
https://golang.org/cl/186282
This commit is contained in:
Stephen Weinberg 2010-01-25 18:50:51 -08:00 committed by Russ Cox
parent 9f3738a4eb
commit c90b05bf7d

View File

@ -1479,3 +1479,38 @@ var htmlAutoClose = []string{
"base",
"meta",
}
var (
esc_quot = strings.Bytes(""") // shorter than """
esc_apos = strings.Bytes("'") // shorter than "'"
esc_amp = strings.Bytes("&")
esc_lt = strings.Bytes("<")
esc_gt = strings.Bytes(">")
)
// Escape writes to w the properly escaped XML equivalent
// of the plain text data s.
func Escape(w io.Writer, s []byte) {
var esc []byte
last := 0
for i, c := range s {
switch c {
case '"':
esc = esc_quot
case '\'':
esc = esc_apos
case '&':
esc = esc_amp
case '<':
esc = esc_lt
case '>':
esc = esc_gt
default:
continue
}
w.Write(s[last:i])
w.Write(esc)
last = i + 1
}
w.Write(s[last:])
}