12345678910111213141516171819202122(* Based on https://github.com/facebook/react/blob/97d75c9c8bcddb0daed1ed062101c7f5e9b825f4/packages/react-dom-bindings/src/server/escapeTextForBrowser.js#L51-L98 *)(* https://discuss.ocaml.org/t/html-encoding-of-string/4289/4 *)letencodes=letbuffer=Buffer.create(String.lengths*2)ins|>String.iter(function|'&'->Buffer.add_stringbuffer"&"|'<'->Buffer.add_stringbuffer"<"|'>'->Buffer.add_stringbuffer">"|'"'->Buffer.add_stringbuffer"""|'\''->Buffer.add_stringbuffer"'"|c->Buffer.add_charbufferc);Buffer.contentsbufferletis_self_closing_tag=function(* Take the list from
https://github.com/facebook/react/blob/97d75c9c8bcddb0daed1ed062101c7f5e9b825f4/packages/react-dom-bindings/src/shared/omittedCloseTags.js but found https://github.com/wooorm/html-void-elements to be more complete. *)|"area"|"base"|"basefont"|"bgsound"|"br"|"col"|"command"|"embed"|"frame"|"hr"|"image"|"img"|"input"|"keygen"|"link"(* | "menuitem" *)|"meta"|"param"|"source"|"track"|"wbr"->true|_->false