üretilen sayfalara linkleyen index sayfası oluştur
This commit is contained in:
41
src/ana.lisp
41
src/ana.lisp
@@ -5,19 +5,23 @@
|
|||||||
:do (when (eq :h1 (tag çocuk))
|
:do (when (eq :h1 (tag çocuk))
|
||||||
(return (value çocuk)))))
|
(return (value çocuk)))))
|
||||||
|
|
||||||
(defun şablon-yap (node)
|
(defun şablon-yap (node &optional başlık geri-link)
|
||||||
(ebeveyn-node! :html
|
(ebeveyn-node! :html
|
||||||
(list (ebeveyn-node! :head
|
(list (ebeveyn-node! :head
|
||||||
(list (çocuk-node! :title (başlık-bul node))
|
(list (çocuk-node! :title (or başlık (başlık-bul node)))
|
||||||
;;; geçici hack çünkü /> ile biten tagleri düzgün basamıyorum
|
;;; geçici hack çünkü /> ile biten tagleri düzgün basamıyorum
|
||||||
" <link href=\"index.css\" rel=\"stylesheet\">
|
" <link href=\"index.css\" rel=\"stylesheet\">
|
||||||
"))
|
"))
|
||||||
(ebeveyn-node! :body
|
(ebeveyn-node! :body
|
||||||
(list node)))))
|
(if (null geri-link)
|
||||||
|
(list node)
|
||||||
|
(list node
|
||||||
|
(çocuk-node! :a "geri dön"
|
||||||
|
'(:href "index.html"))))))))
|
||||||
|
|
||||||
(defun şablonlu-yazdır (node &optional (stream *standard-output*))
|
(defun şablonlu-yazdır (node &optional (stream *standard-output*) başlık geri-link)
|
||||||
(format stream "<!DOCTYPE html>~%~%")
|
(format stream "<!DOCTYPE html>~%~%")
|
||||||
(node->html (şablon-yap node) stream))
|
(node->html (şablon-yap node başlık geri-link) stream))
|
||||||
|
|
||||||
(defun markdown->html (kaynak hedef)
|
(defun markdown->html (kaynak hedef)
|
||||||
(format t "~s -> ~s~%" kaynak hedef)
|
(format t "~s -> ~s~%" kaynak hedef)
|
||||||
@@ -27,7 +31,7 @@
|
|||||||
(with-open-file (dış hedef :direction :output
|
(with-open-file (dış hedef :direction :output
|
||||||
:if-does-not-exist :create
|
:if-does-not-exist :create
|
||||||
:if-exists :supersede)
|
:if-exists :supersede)
|
||||||
(şablonlu-yazdır root dış)))))
|
(şablonlu-yazdır root dış nil t)))))
|
||||||
|
|
||||||
(defun md-dosyası? (yol)
|
(defun md-dosyası? (yol)
|
||||||
(or (string= "md" (pathname-type yol))
|
(or (string= "md" (pathname-type yol))
|
||||||
@@ -67,18 +71,41 @@ Dosya değişmediyse yeniden oluşturma."
|
|||||||
(loop :for d :in (uiop:subdirectories kaynak)
|
(loop :for d :in (uiop:subdirectories kaynak)
|
||||||
:do (dizin-kopyala d (yol-çeviri d kaynak hedef))))
|
:do (dizin-kopyala d (yol-çeviri d kaynak hedef))))
|
||||||
|
|
||||||
|
(defun index-üret (dosyalar hedef)
|
||||||
|
(let ((index-html
|
||||||
|
(ebeveyn-node!
|
||||||
|
:div
|
||||||
|
(list
|
||||||
|
(ebeveyn-node!
|
||||||
|
:ul
|
||||||
|
(loop :for dosya :in dosyalar
|
||||||
|
:collect (ebeveyn-node!
|
||||||
|
:li
|
||||||
|
(list (çocuk-node!
|
||||||
|
:a
|
||||||
|
(file-namestring dosya)
|
||||||
|
(list :href (file-namestring dosya)))))))))))
|
||||||
|
(with-open-file (dış (merge-pathnames "index.html" hedef)
|
||||||
|
:direction :output
|
||||||
|
:if-exists :supersede
|
||||||
|
:if-does-not-exist :create)
|
||||||
|
(şablonlu-yazdır index-html dış "Blog Index"))))
|
||||||
|
|
||||||
(declaim (ftype (function (pathname pathname pathname)) tamamen-üret))
|
(declaim (ftype (function (pathname pathname pathname)) tamamen-üret))
|
||||||
(defun tamamen-üret (statik içerik hedef) ;; isim skill issue
|
(defun tamamen-üret (statik içerik hedef) ;; isim skill issue
|
||||||
(assert (and (uiop:directory-exists-p statik)
|
(assert (and (uiop:directory-exists-p statik)
|
||||||
(uiop:directory-exists-p içerik)))
|
(uiop:directory-exists-p içerik)))
|
||||||
(ensure-directories-exist hedef)
|
(ensure-directories-exist hedef)
|
||||||
(dizin-kopyala statik hedef)
|
(dizin-kopyala statik hedef)
|
||||||
|
(let ((dosyalar (list)))
|
||||||
(loop :for dosya :in (uiop:directory-files içerik)
|
(loop :for dosya :in (uiop:directory-files içerik)
|
||||||
:do (when (md-dosyası? dosya)
|
:do (when (md-dosyası? dosya)
|
||||||
(let ((html-dosyası (tip-değiştir (yol-çeviri dosya içerik hedef)
|
(let ((html-dosyası (tip-değiştir (yol-çeviri dosya içerik hedef)
|
||||||
"html")))
|
"html")))
|
||||||
|
(push html-dosyası dosyalar)
|
||||||
(when (dönüştürmeli? dosya html-dosyası)
|
(when (dönüştürmeli? dosya html-dosyası)
|
||||||
(markdown->html dosya html-dosyası))))))
|
(markdown->html dosya html-dosyası)))))
|
||||||
|
(index-üret (reverse dosyalar) hedef)))
|
||||||
|
|
||||||
(defun ana ()
|
(defun ana ()
|
||||||
(let ((args sb-ext:*posix-argv*))
|
(let ((args sb-ext:*posix-argv*))
|
||||||
|
|||||||
Reference in New Issue
Block a user