dosyalardan, statikleri kopyala, içerikleri md -> html
This commit is contained in:
51
src/ana.lisp
51
src/ana.lisp
@@ -20,6 +20,7 @@
|
||||
(node->html (şablon-yap node) stream))
|
||||
|
||||
(defun markdown->html (kaynak hedef)
|
||||
(format t "~s -> ~s~%" kaynak hedef)
|
||||
(let ((okur (okur! kaynak)))
|
||||
(let ((root (markdown-ayrıştır okur))
|
||||
(*print-case* :downcase))
|
||||
@@ -28,9 +29,59 @@
|
||||
:if-exists :supersede)
|
||||
(şablonlu-yazdır root dış)))))
|
||||
|
||||
(defun md-dosyası? (yol)
|
||||
(or (string= "md" (pathname-type yol))
|
||||
(string= "markdown" (pathname-type yol))))
|
||||
|
||||
(defun tip-değiştir (yol yeni-tip)
|
||||
(make-pathname :type yeni-tip :defaults yol))
|
||||
|
||||
(defun mod-zamanı (dosya)
|
||||
(sb-posix:stat-mtime (sb-posix:stat dosya)))
|
||||
|
||||
(defun dosya-var? (dosya)
|
||||
(uiop:file-exists-p dosya))
|
||||
|
||||
(defun dönüştürmeli? (kaynak hedef)
|
||||
"Kaynak dosyadan hedef dosya oluşturulmalı mı ?
|
||||
Markdown dosyası değişmediyse yeniden oluşturma."
|
||||
(or (not (dosya-var? hedef))
|
||||
(> (mod-zamanı kaynak)
|
||||
(mod-zamanı hedef))))
|
||||
|
||||
(defun yol-çeviri (yol kaynak-kök hedef-kök)
|
||||
(merge-pathnames (uiop:enough-pathname yol kaynak-kök)
|
||||
hedef-kök))
|
||||
|
||||
(defun dosya-kopyala (kaynak hedef)
|
||||
(uiop:copy-file kaynak hedef)
|
||||
(format t "~s -> ~s~%" kaynak hedef))
|
||||
|
||||
(defun dizin-kopyala (kaynak hedef)
|
||||
(ensure-directories-exist hedef)
|
||||
(mapc (lambda (yol)
|
||||
(dosya-kopyala yol (yol-çeviri yol kaynak hedef)))
|
||||
(uiop:directory-files kaynak))
|
||||
(loop :for d :in (uiop:subdirectories kaynak)
|
||||
:do (dizin-kopyala d (yol-çeviri d kaynak hedef))))
|
||||
|
||||
(declaim (ftype (function (pathname pathname pathname)) tamamen-üret))
|
||||
(defun tamamen-üret (statik içerik hedef) ;; isim skill issue
|
||||
(assert (and (uiop:directory-exists-p statik)
|
||||
(uiop:directory-exists-p içerik)))
|
||||
(ensure-directories-exist hedef)
|
||||
(dizin-kopyala statik hedef)
|
||||
(loop :for dosya :in (uiop:directory-files içerik)
|
||||
:do (when (md-dosyası? dosya)
|
||||
(let ((html-dosyası (tip-değiştir (yol-çeviri dosya içerik hedef)
|
||||
"html")))
|
||||
(when (dönüştürmeli? dosya html-dosyası)
|
||||
(markdown->html dosya html-dosyası))))))
|
||||
|
||||
(defun ana ()
|
||||
(let ((args sb-ext:*posix-argv*))
|
||||
(assert (= 3 (length args)))
|
||||
(let ((kaynak (nth 1 args))
|
||||
(hedef (nth 2 args)))
|
||||
(markdown->html kaynak hedef))))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user