esc.go 569 B

12345678910111213141516171819202122232425262728293031323334
  1. package blackfriday
  2. import (
  3. "html"
  4. "io"
  5. )
  6. var htmlEscaper = [256][]byte{
  7. '&': []byte("&"),
  8. '<': []byte("&lt;"),
  9. '>': []byte("&gt;"),
  10. '"': []byte("&quot;"),
  11. }
  12. func escapeHTML(w io.Writer, s []byte) {
  13. var start, end int
  14. for end < len(s) {
  15. escSeq := htmlEscaper[s[end]]
  16. if escSeq != nil {
  17. w.Write(s[start:end])
  18. w.Write(escSeq)
  19. start = end + 1
  20. }
  21. end++
  22. }
  23. if start < len(s) && end <= len(s) {
  24. w.Write(s[start:end])
  25. }
  26. }
  27. func escLink(w io.Writer, text []byte) {
  28. unesc := html.UnescapeString(string(text))
  29. escapeHTML(w, []byte(unesc))
  30. }