>From 79672a5dae731ce806761c4c4dab59b33f3abc3a Mon Sep 17 00:00:00 2001 From: aartaka Date: Wed, 14 Sep 2022 18:05:00 +0400 Subject: [PATCH 1/2] gnu: Add cl-njson. * gnu/packages/lisp-xyz.scm (cl-nsjon, ecl-njson, sbcl-njson): New variables. --- gnu/packages/lisp-xyz.scm | 51 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index 033394eb8a..a109d7a15d 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -35,6 +35,7 @@ ;;; Copyright © 2022 Paul A. Patience ;;; Copyright © 2022 Thomas Albers Raviola ;;; Copyright © 2022 Arun Isaac +;;; Copyright © 2022 Artyom Bologov ;;; ;;; This file is part of GNU Guix. ;;; @@ -22032,6 +22033,56 @@ (define-public cl-nkeymaps (define-public ecl-nkeymaps (sbcl-package->ecl-package sbcl-nkeymaps)) +(define-public sbcl-njson + (package + (name "sbcl-njson") + (version "0.1.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/atlas-engineer/njson") + (commit version))) + (file-name (git-file-name "cl-njson" version)) + (sha256 + (base32 + "0lv3q1841s4avii1jp89r91jq21sids2ycpy2id0kzhrljzhmy6j")))) + (build-system asdf-build-system/sbcl) + (inputs (list sbcl-cl-json)) + (native-inputs (list sbcl-lisp-unit2)) + (home-page "https://github.com/atlas-engineer/njson") + (synopsis + "JSON (JavaScript Object Notation) handling framework for Common Lisp.") + (description + "NJSON aims to make it convenient for one to decode, encode, +and process JSON data, in the minimum keystrokes/minutes possible. + +NJSON is parser-independent, with existing Common Lisp JSON parsers being +loadable as additional system. @code{cl-json} is included by default, though. +Conveniences that NJSON provides are: + +@itemize + +@item @code{encode} and @code{decode} as single entry points for JSON reading +and writing, be it from streams/string/files, or from those. + +@item @code{jget}, @code{jrem}, @code{jtruep}, and their aliases to +access/delete the decoded objects' properties and check their truth value +without the need to worry about the low-level details of how these values are +decoded. + +@item @code{jif}, @code{jwhen}, @code{jor}, @code{jand}, and other macros +mimicking Lisp ones, while using truth values of JSON-decoded data. + +@end itemize +") + (license license:bsd-3))) + +(define-public cl-njson + (sbcl-package->cl-source-package sbcl-njson)) + +(define-public ecl-njson + (sbcl-package->ecl-package sbcl-njson)) + (define-public sbcl-utils-kt (let ((commit "4adfe2889036ab5ffdd3cc2182ca2cc692bf11ff")) (package -- 2.37.3