package vif

  1. Overview
  2. Docs

Source file vif_headers.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
type t = (string * string) list

let mem hdrs key =
  let exception True in
  let key = String.lowercase_ascii key in
  let fn (key', _) =
    if String.lowercase_ascii key' = key then raise_notrace True
  in
  try List.iter fn hdrs; false with True -> true

let add_unless_exists hdrs k v = if mem hdrs k then hdrs else (k, v) :: hdrs

let get hdrs key =
  let exception Found of string in
  let key = String.lowercase_ascii key in
  let fn (key', value) =
    if String.lowercase_ascii key' = key then raise_notrace (Found value)
  in
  try List.iter fn hdrs; None with Found value -> Some value

let rem hdrs key =
  let key = String.lowercase_ascii key in
  let fn acc (key', value) =
    if String.lowercase_ascii key' = key then acc else (key', value) :: acc
  in
  List.fold_left fn [] hdrs |> List.rev