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
35
36
37
38
39
module Keys = struct
let fields = "fields"
end
type t = { fields : SkhcQuery.Field.String.Key.t list }
let section = "query"
let default = { fields = SkhcQuery.Field.String.Key.default }
let init fields = { fields }
let of_section section =
let fields =
match Section.assoc Keys.fields section with
| None ->
default.fields
| Some s ->
s |> String.split_on_char ' '
|> List.filter_map SkhcQuery.Field.String.Key.of_string
in
{ fields }
let to_section t =
let { fields } = t in
let fields =
String.concat " " (List.map SkhcQuery.Field.String.Key.to_string fields)
in
Section.init section [ (Keys.fields, fields) ]
let fields t = t.fields