B0_meta
Metadata.
Typed key-value dictionaries. These dictionaries are attached to various B0 definitions to specify metadata about them.
The module defines a few standard keys.
The recommended way of formatting constant dictionaries is:
let meta =
B0_meta.empty
|> B0_meta.(add authors) ["The project programmers"]
|> B0_meta.(add homepage) "https://example.org"
|> B0_meta.tag B0_opam.tag
module Key : sig ... end
Keys.
val empty : t
empty
is the empty metadata.
val is_empty : t -> bool
is_empty m
is true
iff m
is empty.
has_tag tag m
is the value of tag
in m
or its default value (that is false
for those tags created with Key.make_tag
).
Raises Invalid_argument
if tag
has no default; regardless of whether tag
is bound in m
.
add_some k o m
is m
if o
is None
and m
with k
bound to v
if o
is Some v
.
add_some_or_default k o m
is m
with k
bound to v
if o
is Some v
and Key.default
k
otherwise. Raises Invalid_argument
if k
has no default (regardless of o
's value).
add_if_undef k v m
is m
with k
bound to v
if k
is unbound in m
.
override m ~by
overrides bindings of m
by those by
. The result has all the bindings of by
and those of m
which are not in by
.
find_or_default k m
is the binding of k
in m
or the default value of k
. Raises Invalid_argument
if k
has no default; regardless of whether k
is bound in m
.
get k m
is the binding of k
in m
. Raises Invalid_argument
if there is no such binding. This does not lookup the default of k
.
find_binding k m
is the binding for k
in m
(if any).
find_binding_by_name n m
is the binding named n
in m
(if any).
find_binding k m
is the binding for k
in m
. Raises Invalid_argument
if there is no such binding.
get_binding_by_name n m
is the binding named n
in m
. Raises Invalid_argument
if there is no such binding.
val pp_binding : binding B0_std.Fmt.t
pp_binding
formats a binding using B0_std.Fmt.field
and the key's value formatter.
fold f m acc
folds f
over the bindings of m
starting with acc
.
val pp : t B0_std.Fmt.t
pp
formats metadata using pp_bindings
.
val pp_non_empty : t B0_std.Fmt.t
pp_non_empty
is B0_std.Fmt.cut
followed by pp
if metadata is non empty and B0_std.Fmt.nop
otherwise.
val authors : string list key
authors
describes a list of persons with authorship.
val description_tags : string list key
description_tags
describes a list of classification tags used for documentation.
val description : string key
description
is a long description for the entity.
val homepage : string key
homepage
is an URL to a project homepage.
val issues : string key
issues
is an URL to an issue tracker.
val licenses : string list key
licenses
describes a list of licenses. Each license should be a SPDX license identifier.
val maintainers : string list key
maintainers
describe a list of persons with maintainership.
val online_doc : string key
online_doc
is an URL to online documentation.
val repo : string key
repo
is an URL to a VCS repository.
val synopsis : string key
synopsis
is a one line synopsis for an entity.
val bench : bool key
bench
tags benchmarking entities. Defaults to false
.
val build : bool key
build
tags build system entities. Defaults to false
.
val dev : bool key
dev
tags development entities. Defaults to false
.
val doc : bool key
doc
tags documentation entities. Defaults to false
.
val exe : bool key
exe
tags executable entities. Defaults to false
.
val test : bool key
test
tags testing entities. Defaults to false
.
val lib : bool key
lib
tags library entities. Defaults to false
.
val public : bool key
public
indicates if an entity is public. Defaults to false
. The semantics depends on the context but it usually means that it exports the entity in an underlying global namespace.