From 8b65da6ac8ea5c0a5cb428e47b1bd8841ffef3fc Mon Sep 17 00:00:00 2001 From: Christina O'Donnell Date: Wed, 3 Apr 2024 23:46:32 +0100 Subject: [PATCH] gnu: Add markdeep. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu packages/documentation.scm (markdeep): New variable. Change-Id: I34303377f50740ba357c1bb299c9434079a6e23d Signed-off-by: Ludovic Courtès --- gnu/packages/documentation.scm | 68 ++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm index 83c4313bd7..507a326f6e 100644 --- a/gnu/packages/documentation.scm +++ b/gnu/packages/documentation.scm @@ -37,6 +37,7 @@ #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) + #:use-module (guix build-system copy) #:use-module (guix build-system perl) #:use-module (guix build-system python) #:use-module (guix build-system qt) @@ -57,11 +58,13 @@ #:use-module (gnu packages graphviz) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) + #:use-module (gnu packages javascript) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages qt) #:use-module (gnu packages sqlite) #:use-module (gnu packages sphinx) + #:use-module (gnu packages uglifyjs) #:use-module (gnu packages xml) #:use-module (gnu packages xorg)) @@ -453,3 +456,68 @@ the Net to search for documents which are not on the local system.") (description "Zeal is a simple offline documentation browser inspired by Dash.") (license license:gpl3+)))) + +(define-public markdeep + (package + (name "markdeep") + (version "1.16") + (home-page "https://casual-effects.com/markdeep/") + (source + (origin (method git-fetch) + (uri (git-reference + (url "https://github.com/morgan3d/markdeep") + (commit (string-append "v0" version)))) + (sha256 + (base32 "05bvw3993xh1260ckclwk4jw38hvgiff0b2940ryhbhz0p1k41l8")))) + (build-system copy-build-system) + (arguments + (list #:modules '((guix build utils) + (guix build copy-build-system) + (ice-9 popen)) + #:install-plan ''(("." "/share/markdeep/")) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-urls + (lambda _ + (for-each (lambda (filename) + + (substitute* filename + ;; Don't include a reference to the remote version. + (("") + "") + (("MATHJAX_URL = .*$") + ;; Use our local copy of mathjax + (string-append "MATHJAX_URL = 'file://" #$js-mathjax + "/share/javascript/es5/tex-mml-chtml.js'")))) + (find-files "." (lambda (file stat) + (string-suffix? ".js" file)))))) + (add-before 'install 'minify + (lambda _ + (for-each (lambda (filename) + (let ((minified-filename + (string-append + (string-drop-right filename 3) + ".min.js"))) + (format #t "~a -> ~a~%" filename minified-filename) + (let ((minified (open-pipe* OPEN_READ + "uglifyjs" filename))) + (call-with-output-file minified-filename + (lambda (port) + (dump-port minified port))) + + (let ((exit (close-pipe minified))) + (unless (zero? exit) + (error "uglifyjs failed" exit)))))) + (find-files "latest" + (lambda (path stat) + (and (string-suffix? ".js" path) + (not (string-suffix? ".min.js" + path))))))))))) + (inputs (list js-mathjax)) + (native-inputs (list uglifyjs)) + (synopsis "Tool for displaying markdown documents in a web-browser") + (description "Markdeep is a technology for writing plain text documents that can +be displayed in any web browser, whether local or remote. It supports diagrams, +calendars, equations, and other features as extensions of Markdown syntax.") + (license license:bsd-2)))