diff options
| author | Stephen Weinberg <stephen@q5comm.com> | 2010-01-25 18:50:51 -0800 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2010-01-25 18:50:51 -0800 |
| commit | c90b05bf7dab3a03a018f018d56b456b7ce7c2c5 (patch) | |
| tree | f7bf1eab18e5736ad96068e24bc1dbc5156689c5 /src/pkg | |
| parent | 9f3738a4ebc50fe26ee311c328cae6a66996ae6e (diff) | |
| download | go-c90b05bf7dab3a03a018f018d56b456b7ce7c2c5.tar.xz | |
xml: add Escape, copied from template.HTMLEscape.
R=rsc
CC=golang-dev
https://golang.org/cl/186282
Diffstat (limited to 'src/pkg')
| -rw-r--r-- | src/pkg/xml/xml.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/pkg/xml/xml.go b/src/pkg/xml/xml.go index 346b346492..33a86a2557 100644 --- a/src/pkg/xml/xml.go +++ b/src/pkg/xml/xml.go @@ -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:]) +} |
