From 94a68dffff741be5ed45adcb37d453773f13c6fe Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Wed, 4 Oct 2023 14:25:15 +0200
Subject: Make project structure and builder script

---
 src/as.scm      | 16 ++++++++++++++++
 src/as/atom.scm | 12 ++++++++++++
 src/as/html.scm | 11 +++++++++++
 src/atom.scm    | 12 ++++++++----
 src/dates.scm   |  1 -
 src/html.scm    |  2 ++
 6 files changed, 49 insertions(+), 5 deletions(-)
 create mode 100644 src/as.scm
 create mode 100644 src/as/atom.scm
 create mode 100644 src/as/html.scm
 create mode 100644 src/html.scm

(limited to 'src')

diff --git a/src/as.scm b/src/as.scm
new file mode 100644
index 0000000..b95c096
--- /dev/null
+++ b/src/as.scm
@@ -0,0 +1,16 @@
+(define-module (src as)
+  #:export (as)
+  #:declarative? #f)
+
+(define (call-in-module thunk module)
+  (let* ((curmod (current-module))
+         (_ (set-current-module (resolve-interface module)))
+         (v (thunk))
+         (_ (set-current-module curmod)))
+    v))
+
+(define (load-with-interface path module-name)
+  (call-in-module (lambda () (load path)) module-name))
+
+(define (as what file)
+  (load-with-interface file `(src as ,what)))
diff --git a/src/as/atom.scm b/src/as/atom.scm
new file mode 100644
index 0000000..c1a8424
--- /dev/null
+++ b/src/as/atom.scm
@@ -0,0 +1,12 @@
+(define-module (src as atom)
+  #:use-module ((src atom) #:prefix atom:)
+  #:export (main
+            post
+            person
+            media))
+
+(define main atom:feed)
+(define post atom:entry)
+(define person atom:person)
+(define media atom:media)
+
diff --git a/src/as/html.scm b/src/as/html.scm
new file mode 100644
index 0000000..7ea3095
--- /dev/null
+++ b/src/as/html.scm
@@ -0,0 +1,11 @@
+(define-module (src as html)
+  #:use-module ((src html) #:prefix html:)
+  #:export (main
+            post
+            person
+            media))
+
+(define main html:index)
+(define post html:post)
+(define person html:person)
+(define media html:media)
diff --git a/src/atom.scm b/src/atom.scm
index 9f71f00..229c032 100644
--- a/src/atom.scm
+++ b/src/atom.scm
@@ -74,7 +74,8 @@
 (define* (feed #:key (title      "")
                      (subtitle   "")
                      (uri        "")
-                     (entries   '()))
+                     (entries   '())
+               #:allow-other-keys)
   (let* ((f (make-feed uri
                        title
                        subtitle
@@ -95,7 +96,8 @@
                        (content-html '())
                        (categories '())
                        (contributors '())
-                       (media '()))
+                       (media '())
+                 #:allow-other-keys)
   (define (id-from-title title)
     (string-map (lambda (c)
                   (if (char-set-contains? char-set:letter c) c #\-))
@@ -113,12 +115,14 @@
               media))
 
 (define* (person name #:key (email "")
-                            (uri   ""))
+                            (uri   "")
+                      #:allow-other-keys)
   (make-person name email uri))
 
 
 (define* (media path #:key (title "")
-                           (uri   ""))
+                           (uri   "")
+                     #:allow-other-keys)
   (define (type path)
     (let* ((extension (car (last-pair (string-split path #\.))))
            (type (assoc-ref mime-types extension)))
diff --git a/src/dates.scm b/src/dates.scm
index 0e9a075..edbac1c 100644
--- a/src/dates.scm
+++ b/src/dates.scm
@@ -8,4 +8,3 @@
 
 (define (date->string/RFC3339 date)
   (date->string date "~4"))
-
diff --git a/src/html.scm b/src/html.scm
new file mode 100644
index 0000000..7d37fbd
--- /dev/null
+++ b/src/html.scm
@@ -0,0 +1,2 @@
+(define-module (src html)
+  #:use-module (src mime-types))
-- 
cgit v1.2.3