depot/third_party/nixpkgs/pkgs/development/ocaml-modules/easy-format/default.nix

58 lines
1.7 KiB
Nix

{
lib,
fetchurl,
ocaml,
buildDunePackage,
}:
let
params =
if lib.versionAtLeast ocaml.version "4.08" then
{
version = "1.3.4";
hash = "sha256-Hb8FHp9oV03ebi4lSma5xSTKQl6As26Zr5btlkq2EMM=";
}
else
{
version = "1.3.2";
hash = "sha256-NEDCuILVN65ekBHrBqu1P1Zn5lHqS7O0YOqCMPqMGSY=";
};
in
buildDunePackage rec {
pname = "easy-format";
inherit (params) version;
src = fetchurl {
url = "https://github.com/ocaml-community/easy-format/releases/download/${version}/easy-format-${version}.tbz";
inherit (params) hash;
};
doCheck = true;
meta = {
description = "High-level and functional interface to the Format module of the OCaml standard library";
longDescription = ''
This module offers a high-level and functional interface to the Format module of
the OCaml standard library. It is a pretty-printing facility, i.e. it takes as
input some code represented as a tree and formats this code into the most
visually satisfying result, breaking and indenting lines of code where
appropriate.
Input data must be first modelled and converted into a tree using 3 kinds of
nodes:
* atoms
* lists
* labelled nodes
Atoms represent any text that is guaranteed to be printed as-is. Lists can model
any sequence of items such as arrays of data or lists of definitions that are
labelled with something like "int main", "let x =" or "x:".
'';
homepage = "https://github.com/ocaml-community/easy-format";
changelog = "https://github.com/ocaml-community/easy-format/releases/tag/${params.version}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ vbgl ];
};
}