From dc44f21abd81dcefbdf03c3a9c058234de615f92 Mon Sep 17 00:00:00 2001 From: Lobo Torres Date: Tue, 23 Apr 2024 21:54:36 -0400 Subject: gnu: Add soupault. * gnu/packages/web.scm (soupault): New variable. * gnu/packages/ocaml.scm (ocaml-containers): New variable. * gnu/packages/ocaml.scm (ocaml-iter): New variable. * gnu/packages/ocaml.scm (ocaml-jingoo): New variable. * gnu/packages/ocaml.scm (ocaml-lambdasoup): New variable. * gnu/packages/ocaml.scm (ocaml-lua-ml): New variable. * gnu/packages/ocaml.scm (ocaml-odate): New variable. * gnu/packages/ocaml.scm (ocaml-otoml): New variable. * gnu/packages/ocaml.scm (ocaml-spelll): New variable. * gnu/packages/ocaml.scm (ocaml-tsort): New variable. Change-Id: Ifde96b25cea2ce7373a174c7c15dfa584ecd7064 --- gnu/packages/ocaml.scm | 233 +++++++++++++++++++++++++++++++++++++++++++++++++ gnu/packages/web.scm | 44 ++++++++++ 2 files changed, 277 insertions(+) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 75a42058d6..97ba9c5cff 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -1710,6 +1710,56 @@ test suites.") ;; with OCaml linking exception (license license:gpl3+))) +(define-public ocaml-jingoo + (package + (name "ocaml-jingoo") + (version "1.5.0") + (home-page "https://github.com/tategakibunko/jingoo") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "08qymg1p598q75i7zlma17kwqms83iym46m0wdgfffi0rank0rpd")))) + (build-system dune-build-system) + (propagated-inputs (list ocaml-menhir ocaml-ppx-deriving ocaml-re + ocaml-uutf ocaml-uucp)) + (native-inputs (list ocaml-ounit)) + (synopsis "Template engine almost compatible with Jinja2") + (description "Jingoo is an OCaml template engine almost compatible with +Jinja2 (the Python template engine).") + (license license:expat))) + +(define-public ocaml-lambdasoup + (package + (name "ocaml-lambdasoup") + (version "1.0.0") + (home-page "https://github.com/aantron/lambdasoup") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "04jd0rjjqcrzm0w490v2bg0bsyps9qgaw63q0fybp474kcvj369x")))) + (build-system dune-build-system) + (propagated-inputs (list ocaml-camlp-streams ocaml-markup)) + (native-inputs (list ocaml-bisect-ppx ocaml-ounit2)) + (synopsis "Functional HTML scraping and rewriting with CSS in OCaml") + (description + "Lambda Soup is a functional HTML scraping and manipulation +library for OCaml aimed at being easy to use. It provides a set of elementary +traversals for getting from node to node, familiar functional combinators such +as filter, map, and fold, and support for all CSS selectors that still make +sense when not running in a browser (and a few obvious extensions on top of +that).") + (license license:expat))) + (define-public camlzip (package (name "camlzip") @@ -2402,6 +2452,38 @@ it provides a parser, a serializer, and a pretty printer.") (home-page "https://github.com/ocaml-toml/To.ml") (license license:expat))) +(define-public ocaml-otoml + (package + (name "ocaml-otoml") + (version "1.0.5") + (home-page "https://github.com/dmbaturin/otoml") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0cchvfwzxrckr4zj5psinq47z2y9lhvb5vyc5hjvi8l7l9vnml3v")))) + (build-system dune-build-system) + (propagated-inputs (list ocaml-menhir ocaml-uutf)) + (native-inputs (list ocaml-ounit2 ocaml-odoc)) + (synopsis + "TOML parsing, manipulation, and pretty-printing library (1.0.0-compliant)") + (description + "OTOML is a library for parsing, manipulating, and +pretty-printing TOML files. + +* Fully 1.0.0-compliant. +* No extra dependencies: default implementation uses native numbers and +represents dates as strings. +* Provides a functor for building alternative implementations: plug your own +bignum and calendar libraries if required. +* Informative parse error reporting. +* Pretty-printer offers flexible indentation options.") + (license license:expat))) + (define-public ocaml-grain-dypgen (package (name "ocaml-grain-dypgen") @@ -2630,6 +2712,32 @@ dates and times.") ;; With linking exception. (license license:lgpl2.1+)))) +(define-public ocaml-odate + (package + (name "ocaml-odate") + (version "0.7") + (home-page "https://github.com/hhugo/odate") + (source + (origin + (method url-fetch) + (uri (string-append home-page + "/releases/download/" + version + "/odate-" + version + ".tbz")) + (sha256 + (base32 "1bsmix8qbsk04a1l2x4lrh919xq6a3pmanvgkdlc5wwp3p42q6bl")))) + (build-system dune-build-system) + (propagated-inputs (list ocaml-menhir)) + (arguments + ;; broken tests, see https://github.com/hhugo/odate/issues/7 + '(#:tests? #f)) + (synopsis "Date & duration library for OCaml") + (description "Simple date and duration manipulation. Also implements +duration printer based on string format.") + (license license:expat))) + (define-public ocaml-cmdliner (package (name "ocaml-cmdliner") @@ -5551,6 +5659,59 @@ regular expression search on ropes. To support efficient text edition capabilities, Zed provides macro recording and cursor management facilities.") (license license:bsd-3))) +(define-public ocaml-spelll + (package + (name "ocaml-spelll") + (version "0.4") + (home-page "https://github.com/c-cube/spelll") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rx8i98wqn8pp5rzb185i1xl4q40m06242gms1xp9jnq19s1z3ww")))) + (build-system dune-build-system) + (propagated-inputs (list ocaml-seq ocaml-stdlib-shims)) + (native-inputs (list ocaml-qcheck ocaml-mdx ocaml-odoc)) + (synopsis "Fuzzy string searching, using Levenshtein automaton") + (description "Fuzzy string searching, using Levenshtein automaton. Can be +used for spell-checking.") + (license license:bsd-2))) + +(define-public ocaml-tsort + (package + (name "ocaml-tsort") + (version "2.1.0") + (home-page "https://github.com/dmbaturin/ocaml-tsort") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "07m88nxb9w6wv64h18xyz7js6flpglkk5c8lhs8wgh46r13p89s8")))) + (build-system dune-build-system) + (inputs (list ocaml-containers)) + (arguments + ;; no tests with dune build system + '(#:tests? #f)) + (synopsis + "Easy to use and user-friendly topological sort module for OCaml") + (description + "@code{ocaml-tsort} is a library for sorting graphs in topological +order. + +* Uses Kahn's algorithm. +* Easy to use, but not very fast. +* Provides friendly error reporting (e.g., if there's a cycle, tells you what +the offending nodes are).") + (license license:expat))) + (define-public ocaml-lambda-term (package (name "ocaml-lambda-term") @@ -6487,6 +6648,56 @@ provided by companion libraries such as "15vsiv3q53l1bzrvqgspf3lp2104s9dzw62z3nl75f53jvjvsyf6")))) (properties '()))))) +(define-public ocaml-iter + (package + (name "ocaml-iter") + (version "1.8") + (home-page "https://github.com/c-cube/iter") + (source + (origin + (method url-fetch) + (uri (string-append home-page + "/releases/download/v" + version + "/iter-" + version + ".tbz")) + (sha256 + (base32 "08rhykcizbs21mri4zx1b6vg42a4wybl238cla5bmi79bah9qwzq")))) + (build-system dune-build-system) + (native-inputs (list ocaml-qcheck ocaml-ounit2 ocaml-mdx ocaml-odoc)) + (synopsis "Simple iterator abstract datatype") + (description + "A simple abstraction over @code{iter} functions intended to +iterate efficiently on collections while performing some transformations. +Common operations supported include @code{filter}, @code{map}, @code{take}, +@code{drop}, @code{append}, @code{flat_map}, etc.") + (license license:bsd-2))) + +(define-public ocaml-containers + (package + (name "ocaml-containers") + (version "3.13.1") + (home-page "https://github.com/c-cube/ocaml-containers") + (source + (origin + (method url-fetch) + (uri (string-append home-page + "/releases/download/v" + version + "/containers-" + version + ".tbz")) + (sha256 + (base32 "114pcswmscbh5mvniiarbk5jqma3kjs6w9bx2p2lzw1w5kmjd6zb")))) + (build-system dune-build-system) + (propagated-inputs (list ocaml-either)) + (native-inputs (list ocaml-qcheck ocaml-iter ocaml-gen ocaml-yojson ocaml-mdx)) + (synopsis "Lightweight, modular standard library extension of OCaml") + (description "Containers is an extension of OCaml's standard library +focused on data structures, combinators and iterators.") + (license license:bsd-2))) + (define-public ocaml-compiler-libs (package (name "ocaml-compiler-libs") @@ -9362,6 +9573,28 @@ SHA384, SHA512, Blake2b, Blake2s and RIPEMD160.") bibliography files in BibTeX format, a bibliography in HTML format.") (license license:gpl2))) +(define-public ocaml-lua-ml + (package + (name "ocaml-lua-ml") + (version "0.9.4") + (home-page "https://github.com/lindig/lua-ml") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0rz9v7wss4i8jc87c9rmn7b3mhv1cdnxy1kcln6ibbd574gm7h4h")))) + (build-system dune-build-system) + (native-inputs (list ocaml-odoc)) + (synopsis "Embeddable Lua 2.5 interpreter implemented in OCaml") + (description + "Lua-ML is an implementation of the Lua 2.5 programming +language written in OCaml and designed for extending OCaml programs.") + (license license:bsd-2))) + (define-public ocaml-guile (package (name "ocaml-guile") diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index a71a0e07a3..d4149b571f 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -96,6 +96,7 @@ #:use-module (guix build-system cargo) #:use-module (guix build-system cmake) #:use-module (guix build-system copy) + #:use-module (guix build-system dune) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system go) @@ -178,6 +179,7 @@ #:use-module (gnu packages networking) #:use-module (gnu packages node) #:use-module (gnu packages nss) + #:use-module (gnu packages ocaml) #:use-module (gnu packages openldap) #:use-module (gnu packages openstack) #:use-module (gnu packages package-management) @@ -8833,6 +8835,48 @@ Instead of packing all functionality into kiln itself, the core is lightweight and can be extended with the use of external commands.") (license license:expat))) +(define-public soupault + (package + (name "soupault") + (version "4.10.0") + (home-page "https://soupault.app/") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/PataphysicalSociety/soupault") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "17jxxlrxpwsmhn9g7zf36pq842vh7l8122f4v1jbm3qh1rdx2ils")))) + (build-system dune-build-system) + (inputs (list ocaml-base64 + ocaml-camomile + ocaml-containers + ocaml-csv + ocaml-digestif + ocaml-ezjsonm + ocaml-fileutils + ocaml-fmt + ocaml-jingoo + ocaml-lambdasoup + ocaml-lua-ml + ocaml-logs + ocaml-markup + ocaml-odate + ocaml-otoml + ocaml-re + ocaml-spelll + ocaml-tsort + ocaml-yaml)) + (synopsis "Static website management tool") + (description + "A static website generator/framework that works with HTML +element trees and can automatically manipulate them. It can be described as a +robotic webmaster that can edit HTML pages according to your rules, but +doesn’t get tired of editing them.") + (license license:expat))) + (define-public siege (package (name "siege") -- cgit v1.2.3