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
type tags_selector = {
predicate_signature_tag : Package.Header_structure.tag -> bool;
predicate_header_tag : Package.Header_structure.tag -> bool;
}
let default_tags_selector =
{
predicate_signature_tag = Fun.const true;
predicate_header_tag = Fun.const true;
}
let[@inline] make_package_parser ~tags_selector ~capture_payload =
Parsers.package ~predicate_signature_tag:tags_selector.predicate_signature_tag
~predicate_header_tag:tags_selector.predicate_header_tag ~capture_payload
let of_string ?(tags_selector = default_tags_selector)
?(capture_payload = false) s =
Angstrom.(parse_string ~consume:Prefix)
(make_package_parser ~tags_selector ~capture_payload)
s
let of_bigstring ?(tags_selector = default_tags_selector)
?(capture_payload = false) s =
Angstrom.(parse_bigstring ~consume:Prefix)
(make_package_parser ~tags_selector ~capture_payload)
s
let of_channel ?(tags_selector = default_tags_selector)
?(capture_payload = false) ic =
In_channel.input_all ic |> of_string ~tags_selector ~capture_payload