mirage / ocaml-uri

RFC3986 URI parsing library for OCaml
Other
97 stars 57 forks source link

pct_encoder interface is confusing #159

Open leviroth opened 3 years ago

leviroth commented 3 years ago

There are a few things I found confusing about the interface for constructing pct_encoders:

  1. val pct_encoder takes a bunch of arguments whose names are the names of components and whose types are also components. I think it's clear enough what pct_encoder ~query_key:(`Custom (...)) () means, but what would be meant by pct_encoder ~query_key:`Scheme? Likewise, it's hard to understand what the component in `Custom (component, _, _) means.

  2. In the `Custom case, it's not clear what happens when a char is marked both safe and unsafe, or when it is omitted from either set.

I have some hunches from skimming the implementation, but it would be nice to have the answers be more clear in the interface.