MCPcopy Create free account
hub / github.com/cogentcore/core / EscapeText

Function EscapeText

svg/xml.go:101–144  ·  view source on GitHub ↗

XMLEscapeText writes to w the properly escaped XML equivalent of the plain text data s. If escapeNewline is true, newline XMLcharacters will be escaped.

(w io.Writer, s []byte, escapeNewline bool)

Source from the content-addressed store, hash-verified

99// of the plain text data s. If escapeNewline is true, newline
100// XMLcharacters will be escaped.
101func EscapeText(w io.Writer, s []byte, escapeNewline bool) error {
102 var esc []byte
103 last := 0
104 for i := 0; i < len(s); {
105 r, width := utf8.DecodeRune(s[i:])
106 i += width
107 switch r {
108 case '"':
109 esc = escQuot
110 case '\'':
111 esc = escApos
112 case '&':
113 esc = escAmp
114 case '<':
115 esc = escLT
116 case '>':
117 esc = escGT
118 case '\t':
119 esc = escTab
120 case '\n':
121 if !escapeNewline {
122 continue
123 }
124 esc = escNL
125 case '\r':
126 esc = escCR
127 default:
128 if !isInCharacterRange(r) || (r == 0xFFFD && width == 1) {
129 esc = escFFFD
130 break
131 }
132 continue
133 }
134 if _, err := w.Write(s[last : i-width]); err != nil {
135 return err
136 }
137 if _, err := w.Write(esc); err != nil {
138 return err
139 }
140 last = i
141 }
142 _, err := w.Write(s[last:])
143 return err
144}
145
146// EscapeString writes to p the properly escaped XML equivalent
147// of the plain text data s.

Callers 1

EncodeTokenMethod · 0.85

Calls 2

isInCharacterRangeFunction · 0.85
WriteMethod · 0.65

Tested by

no test coverage detected