diff options
| -rw-r--r-- | ana.lisp | 29 | ||||
| -rw-r--r-- | html-jen.asd | 3 | ||||
| -rw-r--r-- | üretim.lisp | 6 | 
3 files changed, 34 insertions, 4 deletions
| diff --git a/ana.lisp b/ana.lisp new file mode 100644 index 0000000..ac4c9ca --- /dev/null +++ b/ana.lisp @@ -0,0 +1,29 @@ +(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ış))))) diff --git a/html-jen.asd b/html-jen.asd index da2af8c..bbad5d4 100644 --- a/html-jen.asd +++ b/html-jen.asd @@ -6,4 +6,5 @@    :components ((:file "paket")                 (:file "tanım")                 (:file "okur") -               (:file "üretim"))) +               (:file "üretim") +               (:file "ana"))) diff --git a/üretim.lisp b/üretim.lisp index 6074888..3f8c8cc 100644 --- a/üretim.lisp +++ b/üretim.lisp @@ -11,13 +11,13 @@  (defun tag-yeni-satır? (tag)    (case tag -    ((:html :head :body :div :ol :ul) t) +    ((:html :head :body :div :ol :ul :link) t)      ((:title :p :b :i :code :li) nil)))  (defun tag-inline? (tag)    (case tag -    ((:html :head :body :div :ol :ul :li :p) nil) -    ((:title :b :i :code) t))) +    ((:html :head :body :div :ol :ul :li :p :title) nil) +    ((:b :i :code) t)))  (defmethod node->html :before ((node node) &optional (stream *standard-output*))    (unless (not *yeni-satır*) | 
