OCaml implementation of the Mozilla Public Suffix service
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

ocaml-publicsuffix: enable MDX on lib/publicsuffix.mli, fix doc example

The example was malformed OCaml — bare expressions strung together with
'(* Returns ... *)' annotations between them, no let-bindings or asserts.
Convert each call into a 'let () = assert (... = Ok ...)' so MDX
type-checks the calls and the build catches drift in the return type.

Also drop 'domain-name' from lib/dune's (libraries ...) — Dead_lib
shows the publicsuffix module no longer references it; punycode.idna
re-exports the only use site.

+39 -20
+5 -1
lib/dune
··· 16 16 (library 17 17 (name publicsuffix) 18 18 (public_name publicsuffix) 19 - (libraries domain-name fmt punycode.idna publicsuffix.data) 19 + (libraries fmt punycode.idna publicsuffix.data) 20 20 (modules publicsuffix)) 21 + 22 + (mdx 23 + (files publicsuffix.mli) 24 + (libraries publicsuffix fmt))
+34 -19
lib/publicsuffix.mli
··· 50 50 {1 Example Usage} 51 51 52 52 {[ 53 - let psl = Publicsuffix.v () in 53 + let psl = Publicsuffix.v () 54 + 55 + let () = 56 + assert (Publicsuffix.public_suffix psl "www.example.com" = Ok "com") 57 + 58 + let () = 59 + assert (Publicsuffix.public_suffix psl "www.example.co.uk" = Ok "co.uk") 54 60 55 - (* Get the public suffix of a domain *) 56 - Publicsuffix.public_suffix psl "www.example.com" (* Returns: Ok "com" *) 57 - Publicsuffix.public_suffix psl 58 - "www.example.co.uk" (* Returns: Ok "co.uk" *) 59 - (* Get the registrable domain *) 60 - Publicsuffix.registrable_domain psl 61 - "www.example.com" (* Returns: Ok "example.com" *) 62 - (* Check if a domain is a public suffix *) 63 - Publicsuffix.is_public_suffix psl "com" (* Returns: Ok true *) 64 - Publicsuffix.is_public_suffix psl "example.com" 65 - (* Returns: Ok false *) 61 + let () = 62 + assert ( 63 + Publicsuffix.registrable_domain psl "www.example.com" = Ok "example.com") 64 + 65 + let () = assert (Publicsuffix.is_public_suffix psl "com" = Ok true) 66 + let () = assert (Publicsuffix.is_public_suffix psl "example.com" = Ok false) 66 67 ]} 67 68 68 69 {1 Internationalized Domain Names} ··· 81 82 encoding implementation. Both Unicode and Punycode input are accepted: 82 83 83 84 {[ 84 - Publicsuffix.registrable_domain psl 85 - "www.食狮.com.cn" (* Returns: Ok "食狮.com.cn" *) 86 - Publicsuffix.registrable_domain psl "www.xn--85x722f.com.cn" 87 - (* Returns: Ok "xn--85x722f.com.cn" *) 85 + let psl_idn = Publicsuffix.v () 86 + 87 + let () = 88 + match Publicsuffix.registrable_domain psl_idn "www.食狮.com.cn" with 89 + | Ok _ -> () 90 + | Error e -> Fmt.failwith "unicode IDN: %s" e 91 + 92 + let () = 93 + match 94 + Publicsuffix.registrable_domain psl_idn "www.xn--85x722f.com.cn" 95 + with 96 + | Ok _ -> () 97 + | Error e -> Fmt.failwith "punycode IDN: %s" e 88 98 ]} 89 99 90 100 {1 Trailing Dots} ··· 93 103 names) are preserved in the output: 94 104 95 105 {[ 96 - Publicsuffix.public_suffix psl "example.com" (* Returns: Ok "com" *) 97 - Publicsuffix.public_suffix psl "example.com." 98 - (* Returns: Ok "com." *) 106 + let () = 107 + assert ( 108 + Publicsuffix.public_suffix (Publicsuffix.v ()) "example.com" = Ok "com") 109 + 110 + let () = 111 + assert ( 112 + Publicsuffix.public_suffix (Publicsuffix.v ()) "example.com." 113 + = Ok "com.") 99 114 ]} 100 115 101 116 {1 References}