package mrmime

  1. Overview
  2. Docs

Source file address.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
type t = Rfc5322.address

let group group = `Group group
let mailbox mailbox = `Mailbox mailbox

let equal a b = match a, b with
  | `Group a, `Group b -> Group.equal a b
  | `Mailbox a, `Mailbox b -> Mailbox.equal a b
  | _, _ -> false

let pp : t Fmt.t = fun ppf t -> match t with
  | `Group t -> Fmt.pf ppf "@[<hov>(Group@ %a)@]" Group.pp t
  | `Mailbox t -> Fmt.pf ppf "@[<hov>(Mailbox@ %a)@]" Mailbox.pp t

module Encoder = struct
  open Encoder

  let mailbox = Mailbox.Encoder.mailbox
  let group = Group.Encoder.group
  let comma = (fun ppf () -> eval ppf [ char $ ','; fws ]), ()

  let address ppf = function
    | `Mailbox m -> mailbox ppf m
    | `Group g -> group ppf g

  let addresses ppf l =
    eval ppf [ tbox 1; !!(list ~sep:comma address); close ] l
end

let addresses_to_unstructured ~field_name x =
  Unstructured.to_unstructured ~field_name Encoder.addresses x

let to_unstructured ~field_name x =
  Unstructured.to_unstructured ~field_name Encoder.address x
OCaml

Innovation. Community. Security.