This commit is contained in:
swrup 2025-11-11 02:07:51 +01:00
parent aa2ff7b2f0
commit 2f3113f55d
11742 changed files with 1223940 additions and 0 deletions

View file

@ -0,0 +1,6 @@
(library
(name uri_sexp)
(public_name uri-sexp)
(modules uri_sexp)
(preprocess (pps ppx_sexp_conv))
(libraries sexplib0 uri))

View file

@ -0,0 +1,65 @@
open Uri
module Derived =
struct
open Sexplib0.Sexp_conv
type component = [
| `Scheme
| `Authority
| `Userinfo (* subcomponent of authority in some schemes *)
| `Host (* subcomponent of authority in some schemes *)
| `Path
| `Query
| `Query_key
| `Query_value
| `Fragment
| `Generic
| `Custom of (component * string * string)
] [@@deriving sexp]
type t = {
scheme: string option [@default None] [@sexp_drop_default.sexp];
userinfo: string option [@default None] [@sexp_drop_default.sexp];
host: string option [@default None] [@sexp_drop_default.sexp];
port: int option [@default None] [@sexp_drop_default.sexp];
path: string [@default ""] [@sexp_drop_default.sexp];
query: (string * string list) list [@sexp.list];
fragment: string option [@default None] [@sexp_drop_default.sexp]
} [@@deriving sexp]
end
open Derived
let component_of_sexp = component_of_sexp
let sexp_of_component = sexp_of_component
let t_of_sexp sexp =
let t = t_of_sexp sexp in
Uri.make
?scheme:t.scheme
?userinfo:t.userinfo
?host:t.host
?port:t.port
~path:t.path
~query:t.query
?fragment:t.fragment
()
let sexp_of_t t =
sexp_of_t {
scheme = scheme t;
userinfo = userinfo t;
host = host t;
port = port t;
path = path t;
query = query t;
fragment = fragment t
}
type component = Uri.component
let compare a b = Uri.compare a b
let equal a b = Uri.equal a b
type t = Uri.t

View file

@ -0,0 +1,11 @@
open Sexplib0
val component_of_sexp : Sexp.t -> Uri.component
val sexp_of_component : Uri.component -> Sexp.t
val t_of_sexp : Sexp.t -> Uri.t
val sexp_of_t : Uri.t -> Sexp.t
type component = Uri.component
val compare : Uri.t -> Uri.t -> int
val equal : Uri.t -> Uri.t -> bool
type t = Uri.t