let html_escaper str =
let buffer = Buffer.create (String.length str) in
let addc = Buffer.add_char buffer in
let addse se =
addc '&';
Buffer.add_string buffer se;
addc ';'
in
String.iter
(function
| '"' -> addse "quot"
| '&' -> addse "amp"
| '<' -> addse "lt"
| '>' -> addse "gt"
(*
| 'Œ' -> addse "OElig"
| 'œ' -> addse "oelig"
| 'Š' -> addse "Scaron"
| 'š' -> addse "scaron"
| 'Ÿ' -> addse "Yuml"
| 'ˆ' -> addse "circ"
| '˜' -> addse "tilde"
| ' ' -> addse "ensp"
| ' ' -> addse "emsp"
| ' ' -> addse "thinsp"
| '–' -> addse "ndash"
| '—' -> addse "mdash"
| '‘' -> addse "lsquo"
| '’' -> addse "rsquo"
| '‚' -> addse "sbquo"
| '“' -> addse "ldquo"
| '”' -> addse "rdquo"
| '„' -> addse "bdquo"
| '†' -> addse "dagger"
| '‡' -> addse "Dagger"
| '‰' -> addse "permil"
| '‹' -> addse "lsaquo"
| '›' -> addse "rsaquo"
| '€' -> addse "euro"
*)
| '\'' -> addse "#39"
| c -> addc c)
str;
Buffer.contents buffer