21 lines
495 B
OCaml
21 lines
495 B
OCaml
open Crowbar
|
|
|
|
let ( let* ) = dynamic_bind
|
|
|
|
let ( let+ ) = map
|
|
|
|
let unicode_bytes =
|
|
let+ values = [ list1 uchar ] in
|
|
let buf = Buffer.create (List.length values) in
|
|
List.iter (fun u -> Buffer.add_utf_8_uchar buf u) values;
|
|
Buffer.contents buf
|
|
|
|
let directive =
|
|
fix (fun directive ->
|
|
let* name = unicode_bytes in
|
|
let* params = list unicode_bytes in
|
|
let+ children = [ list directive ] in
|
|
let open Scfg.Types in
|
|
{ name; params; children } )
|
|
|
|
let config = list directive
|