From 909a76bcc45e896f8029ec4c8491652f3738d4e3 Mon Sep 17 00:00:00 2001
From: nathan <nathansmith@disroot.org>
Date: Sat, 24 May 2025 02:57:22 -0600
Subject: Working on better web design

---
 old/shittyweb-html.el | 151 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 151 insertions(+)
 create mode 100644 old/shittyweb-html.el

(limited to 'old/shittyweb-html.el')

diff --git a/old/shittyweb-html.el b/old/shittyweb-html.el
new file mode 100644
index 0000000..c83ec50
--- /dev/null
+++ b/old/shittyweb-html.el
@@ -0,0 +1,151 @@
+(require 'ox-html)
+
+;; https://gileschamberlin.com/2020/02/25/writing-a-new-org-mode-exporter-back-end
+;; https://github.com/grc/jujutsu-website/blob/master/elisp/org-jujutsu-site.el
+;; https://orgmode.org/worg/dev/org-export-reference.html
+
+(defvar shittyweb-html-background-color "#dcd1ba")
+(defvar shittyweb-html-table-background-color "#bebebe")
+(defvar shittyweb-html-table-border 1)
+(defvar shittyweb-html-table-width "65%")
+(defvar shittyweb-html-code-background-color "white")
+(defvar shittyweb-html-code-border 1)
+
+(org-export-define-derived-backend 'shittyweb-html 'html
+  :translate-alist '((template . shittyweb-html-template)
+                     (src-block . shittyweb-html-src-block))
+  :options-alist '((:background-image "BACKGROUND_IMAGE" nil nil)
+                   (:shittyweb-header "SHITTYWEB_HEADER" nil nil)
+                   (:shittyweb-back "SHITTYWEB_BACK" nil "")))
+
+(defun shittyweb-html-template (contents info)
+  "Return complete document string after HTML conversion.
+CONTENTS is the transcoded contents string.  INFO is a plist
+holding export options."
+  (concat
+   (when (and (not (org-html-html5-p info)) (org-html-xhtml-p info))
+     (let* ((xml-declaration (plist-get info :html-xml-declaration))
+	    (decl (or (and (stringp xml-declaration) xml-declaration)
+		      (cdr (assoc (plist-get info :html-extension)
+				  xml-declaration))
+		      (cdr (assoc "html" xml-declaration))
+		      "")))
+       (when (not (or (not decl) (string= "" decl)))
+	 (format "%s\n"
+		 (format decl
+			 (or (and org-html-coding-system
+				  (coding-system-get org-html-coding-system :mime-charset))
+			     "iso-8859-1"))))))
+   (org-html-doctype info)
+   "\n"
+   (concat "<html"
+	   (cond ((org-html-xhtml-p info)
+		  (format
+		   " xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"%s\" xml:lang=\"%s\""
+		   (plist-get info :language) (plist-get info :language)))
+		 ((org-html-html5-p info)
+		  (format " lang=\"%s\"" (plist-get info :language))))
+	   ">\n")
+   "<head>\n"
+   (org-html--build-meta-info info)
+   (org-html--build-head info)
+   (org-html--build-mathjax-config info)
+   "</head>\n"
+   ;; Body with background
+   (let ((background (plist-get info :background-image)))
+     (if background
+         (format "<body bgcolor=\"%s\" background=\"%s\">\n"
+                 shittyweb-html-background-color
+                 background)
+       (format "<body bgcolor=\"%s\">"
+               shittyweb-html-background-color)))
+   ;; I dont use link-up so byebye it goes.
+   ;; Also I give it a directory instead of file.
+   (let ((link-home (org-trim (plist-get info :html-link-home))))
+     (unless (string= link-home "")
+       (format (plist-get info :html-home/up-format) link-home link-home)))
+   ;; The back button thingy
+   (let ((back-page (org-trim (plist-get info :shittyweb-back))))
+     (unless (string= back-page "")
+       back-page))
+   ;; Preamble.
+   (org-html--build-pre/postamble 'preamble info)
+   "\n<center>\n"
+   ;; Shittyweb header. Its outside the weird table thing.
+   (let ((shittyweb-header (plist-get info :shittyweb-header)))
+     (if shittyweb-header
+         shittyweb-header))
+   ;; Document contents.
+   (let ((div (assq 'content (plist-get info :html-divs))))
+     (format "<table border=\"%d\" width=\"%s\" bgcolor=\"%s\" id=\
+\"%s\" class=\"%s\"><tr><td>\n"
+             shittyweb-html-table-border
+             shittyweb-html-table-width
+             shittyweb-html-table-background-color
+             (nth 2 div)
+             (plist-get info :html-content-class)))
+   ;; Document title.
+   (when (plist-get info :with-title)
+     (let ((title (and (plist-get info :with-title)
+		       (plist-get info :title)))
+	   (subtitle (plist-get info :subtitle))
+	   (html5-fancy (org-html--html5-fancy-p info)))
+       (when title
+	 (format
+	  (if html5-fancy
+	      "<header>\n<h1 class=\"title\">%s</h1>\n%s</header>"
+	    "<h1 class=\"title\">%s%s</h1>\n")
+	  (org-export-data title info)
+	  (if subtitle
+	      (format
+	       (if html5-fancy
+		   "<p class=\"subtitle\" role=\"doc-subtitle\">%s</p>\n"
+		 (concat "\n" (org-html-close-tag "br" nil info) "\n"
+			 "<span class=\"subtitle\">%s</span>\n"))
+	       (org-export-data subtitle info))
+	    "")))))
+   contents
+   "</td></tr></table>\n"
+   ;; Postamble.
+   (org-html--build-pre/postamble 'postamble info)
+   ;; Possibly use the Klipse library live code blocks.
+   (when (plist-get info :html-klipsify-src)
+     (concat "<script>" (plist-get info :html-klipse-selection-script)
+	     "</script><script src=\""
+	     org-html-klipse-js
+	     "\"></script><link rel=\"stylesheet\" type=\"text/css\" href=\""
+	     org-html-klipse-css "\"/>"))
+   ;; Closing document.
+   "</center>\n</body>\n</html>"))
+
+;; I don't like the way it handles src blocks. I just want <code>.
+(defun shittyweb-html-src-block (src-block _contents info)
+  (let* ((code (org-html-format-code src-block info))
+        (code-lines (string-split (string-trim code) "\n")))
+    (defun join-code-lines (lines) ;; Change \n to <br />
+      (concat (car lines)
+              (if (cdr lines)
+                  (concat "<br />\n" (join-code-lines (cdr lines)))
+                "")))
+    (format "<table bgcolor=\"%s\" border=\"%d\"><tr><td>\n\
+<code>\n%s\n</code>\n</td></tr></table>"
+            shittyweb-html-code-background-color
+            shittyweb-html-code-border
+            (join-code-lines code-lines))))
+
+(defun shittyweb-publish-to-html (plist filename pub-dir)
+  "Publish an org file to HTML.
+
+FILENAME is the filename of the Org file to be published.  PLIST
+is the property list for the given project.  PUB-DIR is the
+publishing directory.
+
+Return output file name."
+  (org-publish-org-to 'shittyweb-html filename
+		      (concat (when (> (length org-html-extension) 0) ".")
+			      (or (plist-get plist :html-extension)
+				  org-html-extension
+				  "html"))
+		      plist pub-dir))
+
+(provide 'shittyweb-html)
-- 
cgit v1.2.3