Toggle diff (350 lines)
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 @@ (define-public ocaml-junit-alcotest
;; 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 @@ (define-public ocaml-toml
(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 @@ (define-public ocaml-calendar
;; 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 @@ (define-public ocaml-zed
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 @@ (define-public ocaml5.0-base
"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 @@ (define-public ocaml-bibtex2html
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 @@ (define-module (gnu packages web)
#: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 @@ (define-module (gnu packages web)
#: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 @@ (define-public kiln
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")
--
2.41.0