break haunt.scm down into smaller (bandali *) modules
[~bandali/bndl.org] / bandali / utils.scm
diff --git a/bandali/utils.scm b/bandali/utils.scm
new file mode 100644 (file)
index 0000000..0c32df3
--- /dev/null
@@ -0,0 +1,36 @@
+;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
+;;;
+;;; This program is free software; you can redistribute it and/or
+;;; modify it under the terms of the GNU General Public License as
+;;; published by the Free Software Foundation; either version 3 of the
+;;; License, or (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see
+;;; <http://www.gnu.org/licenses/>.
+
+(define-module (bandali utils)
+  #:export (aa
+            stylesheet
+            intersperse))
+
+(define* (aa content #:optional (uri content) . title)
+  `(a (@ (href ,uri) (title ,(apply string-append title))) ,content))
+
+(define (stylesheet name)
+  `(link (@ (rel "stylesheet")
+            (href ,(string-append "/" name ".css")))))
+
+(define (intersperse lst delim)
+  "Return the elements of LST delimited by DELIM, such that the
+resulting list is of an odd length and every second element is DELIM."
+  (if (<= (length lst) 1)
+      lst
+      (cons* (car lst)
+             delim
+             (intersperse (cdr lst) delim))))