37 lines
1.3 KiB
Common Lisp
37 lines
1.3 KiB
Common Lisp
(in-package :html-jen)
|
||
|
||
(defun başlık-bul (node)
|
||
(loop :for çocuk :in (children node)
|
||
:do (when (eq :h1 (tag çocuk))
|
||
(return (value çocuk)))))
|
||
|
||
(defun şablon-yap (node)
|
||
(ebeveyn-node! :html
|
||
(list (ebeveyn-node! :head
|
||
(list (çocuk-node! :title (başlık-bul node))
|
||
;;; geçici hack çünkü /> ile biten tagleri düzgün basamıyorum
|
||
" <link href=\"index.css\" rel=\"stylesheet\">
|
||
"))
|
||
(ebeveyn-node! :body
|
||
(list node)))))
|
||
|
||
(defun şablonlu-yazdır (node &optional (stream *standard-output*))
|
||
(format stream "<!DOCTYPE html>~%~%")
|
||
(node->html (şablon-yap node) stream))
|
||
|
||
(defun markdown->html (kaynak hedef)
|
||
(let ((okur (okur! kaynak)))
|
||
(let ((root (markdown-ayrıştır okur))
|
||
(*print-case* :downcase))
|
||
(with-open-file (dış hedef :direction :output
|
||
:if-does-not-exist :create
|
||
:if-exists :supersede)
|
||
(şablonlu-yazdır root dış)))))
|
||
|
||
(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))))
|