m/conform
landed in master by @nilern! #343 will change the names to m/parse
and m/parser
:
(m/parse
[:* [:cat*
[:prop string?]
[:val [:alt*
[:s string?]
[:b boolean?]]]]]
["-server" "foo" "-verbose" true "-user" "joe"])
;[{:prop "-server", :val [:s "foo"]}
; {:prop "-verbose", :val [:b true]}
; {:prop "-user", :val [:s "joe"]}]