escapeText writes to w the properly escaped XML equivalent of the plain text data s. If escapeNewline is true, newline characters will be escaped.
(w io.Writer, s []byte, escapeNewline bool)
| 1907 | // of the plain text data s. If escapeNewline is true, newline |
| 1908 | // characters will be escaped. |
| 1909 | func escapeText(w io.Writer, s []byte, escapeNewline bool) error { |
| 1910 | var esc []byte |
| 1911 | last := 0 |
| 1912 | for i := 0; i < len(s); { |
| 1913 | r, width := utf8.DecodeRune(s[i:]) |
| 1914 | i += width |
| 1915 | switch r { |
| 1916 | case '"': |
| 1917 | esc = escQuot |
| 1918 | case '\'': |
| 1919 | esc = escApos |
| 1920 | case '&': |
| 1921 | esc = escAmp |
| 1922 | case '<': |
| 1923 | esc = escLT |
| 1924 | case '>': |
| 1925 | esc = escGT |
| 1926 | case '\t': |
| 1927 | esc = escTab |
| 1928 | case '\n': |
| 1929 | if !escapeNewline { |
| 1930 | continue |
| 1931 | } |
| 1932 | esc = escNL |
| 1933 | case '\r': |
| 1934 | esc = escCR |
| 1935 | default: |
| 1936 | if !isInCharacterRange(r) || (r == 0xFFFD && width == 1) { |
| 1937 | esc = escFFFD |
| 1938 | break |
| 1939 | } |
| 1940 | continue |
| 1941 | } |
| 1942 | if _, err := w.Write(s[last : i-width]); err != nil { |
| 1943 | return err |
| 1944 | } |
| 1945 | if _, err := w.Write(esc); err != nil { |
| 1946 | return err |
| 1947 | } |
| 1948 | last = i |
| 1949 | } |
| 1950 | _, err := w.Write(s[last:]) |
| 1951 | return err |
| 1952 | } |
| 1953 | |
| 1954 | // EscapeString writes to p the properly escaped XML equivalent |
| 1955 | // of the plain text data s. |
no test coverage detected