OCaml HTML5 parser/serialiser based on Python's JustHTML
1(* BOM (Byte Order Mark) sniffing *)
2
3let sniff data =
4 let len = Bytes.length data in
5 if len >= 3 &&
6 Bytes.get data 0 = '\xEF' &&
7 Bytes.get data 1 = '\xBB' &&
8 Bytes.get data 2 = '\xBF' then
9 Some (Encoding_types.Utf8, 3)
10 else if len >= 2 &&
11 Bytes.get data 0 = '\xFF' &&
12 Bytes.get data 1 = '\xFE' then
13 Some (Encoding_types.Utf16le, 2)
14 else if len >= 2 &&
15 Bytes.get data 0 = '\xFE' &&
16 Bytes.get data 1 = '\xFF' then
17 Some (Encoding_types.Utf16be, 2)
18 else
19 None