Use md files for content

This commit is contained in:
Marcus Kammer 2025-01-22 22:54:29 +01:00
parent 031285691e
commit cfca2de467
Signed by: marcuskammer
GPG key ID: C374817BE285268F
3 changed files with 50 additions and 41 deletions

View file

@ -1,7 +1,7 @@
;;; -*- mode: lisp; coding: utf-8; -*- ;;; -*- mode: lisp; coding: utf-8; -*-
;;; Generate the index.html file ;;; Generate the index.html file
(ql:quickload :dev.metalisp.sbt) (ql:quickload '(:dev.metalisp.sbt :3bmd))
(defpackage :website (defpackage :website
(:use :cl #:ml-sbt) (:use :cl #:ml-sbt)
@ -21,53 +21,60 @@
(in-package :website) (in-package :website)
(setf ml-sbt/navbar:*brand-name* "metalisp") (defvar *lang* "en")
(with-open-file (ofile #P"index.html" :direction :output :if-exists :supersede) (defparameter *active-projects*
'((:header "metalisp.sbt"
:items ("Library of Common Lisp Macros to generate HTML for Bootstrap CSS." "In Active Development" "Common Lisp")
:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.sbt")
(:header "metalisp.survey"
:items ("Create questionnaires and analyze the results." "In Active Development" "Common Lisp")
:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.survey")
(:header "metalisp.qmetrics"
:items ("Calculation engine for questionnaires." "In Active Development" "Common Lisp")
:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.qmetrics")
(:header "metalisp.activitystreams"
:items ("ActivityStreams 2 library" "In Active Development" "Common Lisp")
:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.activitystreams")
(:header "emacs dot files"
:items ("Personal emacs dot files." "In Active Development" "Emacs Lisp")
:url "https://code.metalisp.dev/marcuskammer/emacs.d")))
(defun md-to-html-string (markdown-string)
(with-output-to-string (s)
(3bmd:parse-string-and-print-to-stream markdown-string s)))
(defun md-file-to-html-string (input-file)
(with-output-to-string (s)
(3bmd:parse-and-print-to-stream input-file s)))
(with-open-file (ofile #P"public/index.html" :direction :output :if-exists :supersede)
(let ((html (with-page (:title "metalisp.dev projects") (let ((html (with-page (:title "metalisp.dev projects")
(body-header nil "Crafting Software with the Power of Lisp and Scheme" (with-body-header nil "Crafting Software with the Power of Lisp" *lang*
(with-navbar nil nil "Home" "/")) (with-navbar nil "metalisp" "/" nil nil))
(body-main nil (with-body-main nil
;; Introduction
(with-section (with-section
(with-title-bar "About metalisp") (with-title-bar "About metalisp")
(:p "Hi, I'm Marcus, and metalisp.dev is where I share my passion for software development in Common Lisp, Emacs Lisp, and Guile Scheme. (:raw (md-file-to-html-string "introduction.md")))
This site features a variety of projects that demonstrate the unique capabilities of these languages.")) ;; News
(with-section
(with-title-bar "News")
(:raw (md-file-to-html-string "news.md")))
;; Active Projects
(with-section (with-section
(with-title-bar "Active Projects") (with-title-bar "Active Projects")
(with-section-row (with-section-row
(dolist (project *active-projects*)
(with-card* (with-card*
:card-header "ml-sbt" :card-header (getf project :header)
:card-items '("Library of Common Lisp Macros to generate HTML using Bootstrap CSS." :card-items (getf project :items)
"In Active Development") :card-body (btn (:url (getf project :url))
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.sbt") (t9n "view-details" *lang*))))))
(t9n "view-details"))) ;; Contact
(with-card*
:card-header "ml-survey"
:card-items '("Create questionnaires and analyze the results."
"In Active Development")
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.survey")
(t9n "view-details")))
(with-card*
:card-header "ml-qmetrics"
:card-items '("Calculation engine for questionnaires."
"In Active Development")
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.qmetrics")
(t9n "view-details")))
(with-card*
:card-header "ml-activitystreams"
:card-items '("ActivityStreams 2 library"
"In Active Development")
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/dev.metalisp.activitystreams")
(t9n "view-details")))
(with-card*
:card-header "emacs dot files"
:card-items '("Personal emacs dot files."
"In Active Development")
:card-body (btn (:url "https://code.metalisp.dev/marcuskammer/emacs.d")
(t9n "view-details")))))
(with-section (with-section
(with-title-bar "Contact") (with-title-bar "Contact")
(:a :rel "me" (with-list-group '(("email: post at metalisp.dev")
:href "https://fosstodon.org/@metalisp" ("jabber groupchat: metalisp@conference.mailbox.org")
:class "hidden" "Mastodon")))))) (:a :rel "me" :href "https://fosstodon.org/@metalisp" "Mastodon"))))))))
(princ html ofile))) (princ html ofile)))

1
introduction.md Normal file
View file

@ -0,0 +1 @@
Hi, I'm Marcus, and metalisp.dev is where I share my passion for software development in Common Lisp, Emacs Lisp, and Guile Scheme.

1
news.md Normal file
View file

@ -0,0 +1 @@
- 2025-01-22: I updated the [forgejo](https://code.metalisp.dev) instance to version 10.0.0