Subject: [PATCH] gnu: Add cl-lass.
From: Artyom Bologov <[email-masked]>
To: [email-masked]
Date: Wed, 09 Nov 2022 17:11:29 +0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello Guix,

This add LASS, a Common Lisp library for CSS generation.

From 15f475e66aecb429e9113fb410d2f800cf6225ba Mon Sep 17 00:00:00 2001
From: Artyom Bologov <[email-masked]>
Date: Wed, 9 Nov 2022 17:09:14 +0400
Subject: [PATCH] gnu: Add cl-lass.

* gnu/packages/lisp-xyz.scm (sbcl-lass, cl-lass, ecl-lass): New variables.
---
 gnu/packages/lisp-xyz.scm | 43 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index cc19efec25..cd012e21bb 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -8583,6 +8583,49 @@ (define-public cl-array-utils
 (define-public ecl-array-utils
   (sbcl-package->ecl-package sbcl-array-utils))
 
+(define-public sbcl-lass
+  (let ((commit "a7a4452f6a670b8fb01a73d3007030d16bd1ec2c")
+        (revision "0"))
+    (package
+      (name "sbcl-lass")
+      (version (git-version "1.1.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/Shinmera/LASS")
+           (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "06wds1qzj8s862pmmza1427n7gdpplqplxqnxyqkrr0hgxdl4xbf"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       (list sbcl-trivial-indent sbcl-trivial-mimes cl-base64))
+      (synopsis "LASS (Lisp Augmented Style Sheets) compiles Lisp to CSS.")
+      (description
+       "With lispy syntax, shortcuts, and improvements, LASS aims to help you
+out in writing CSS quick and easy. LASS was largely inspired by SASS. LASS
+supports two modes, one being directly in your lisp code, the other in pure
+LASS files.
+
+LASS works on the following simple principles: A list is a block. The first
+argument in the list is a selector. The body of the list makes up the
+properties and sub-blocks. A property is started with a keyword that is used
+as the property name. Following is a bunch of property arguments until a new
+keyword, list, or the end is reached. A list inside a block is, again, a block
+with the twist that the parent block's selector is prepended to the
+sub-block's selector.")
+      (home-page "https://shinmera.github.io/LASS/")
+      (license license:zlib))))
+
+(define-public cl-lass
+  (sbcl-package->cl-source-package sbcl-lass))
+
+(define-public ecl-lass
+  (sbcl-package->ecl-package sbcl-lass))
+
 (define-public sbcl-plump
   (let ((commit "3584275f0be9d06c0c51b5c08f89005deafc4ada")
         (revision "2"))
-- 
2.37.1

Thanks,
--
Artyom Bologov.