summaryrefslogtreecommitdiff
path: root/src/ana.lisp
blob: 4b741697923b01382d5010803e67f4b0c054dd2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(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))))