sonraki blok bulurken kod bloğunu ayrı değerlendir, baya spagetti...
This commit is contained in:
@@ -45,19 +45,40 @@
|
||||
(defmethod blok-reset ((okur okur))
|
||||
(setf (i okur) (blok-baş okur)))
|
||||
|
||||
(defmethod bak ((okur okur))
|
||||
(and (not (son? okur (i okur)))
|
||||
(char (metin okur) (i okur))))
|
||||
|
||||
(defmethod ye ((okur okur))
|
||||
(with-slots (metin i) okur
|
||||
(and (son? okur i)
|
||||
(prog1 (char metin i)
|
||||
(incf i)))))
|
||||
|
||||
(defun son-ara (parça metin baş)
|
||||
(let ((eş (search parça metin :start2 baş)))
|
||||
(when (numberp eş)
|
||||
(+ eş (length parça)))))
|
||||
|
||||
(let ((blok-sonu (format nil "~%~%")))
|
||||
(defmethod sonraki-blok ((okur okur))
|
||||
"blok-baş ve blok-son indexlerinin atamasını yapar. Başka blok kalmadıysa nil döndürür."
|
||||
(unless (son? okur (blok-son okur))
|
||||
(with-slots (i uzunluk metin blok-son blok-baş) okur
|
||||
(let ((önceki-son blok-son)
|
||||
(yeni-son (search blok-sonu metin :start2 blok-son))
|
||||
;; TODO kod bloğunun içinde yeni blok oluşmadan 2 yeni satır olabilir
|
||||
)
|
||||
(setf blok-son (if (numberp yeni-son)
|
||||
(+ 2 yeni-son)
|
||||
uzunluk)
|
||||
blok-baş önceki-son ;; TODO blok başındaki boşluk ve yeni satırları geç
|
||||
(let ((yeni-baş (progn (setf i blok-son)
|
||||
(loop :for ch := (bak okur)
|
||||
:while (and ch
|
||||
(or (char= #\Newline ch)
|
||||
(char= #\Space ch)))
|
||||
:do (incf i)
|
||||
:finally (return i))))
|
||||
(yeni-son (or (if (string= "```" metin :start2 i :end2 (+ i 3))
|
||||
(progn (setf i (son-ara "```" metin (+ i 3)))
|
||||
(son-ara blok-sonu metin i))
|
||||
(son-ara blok-sonu metin i))
|
||||
uzunluk)))
|
||||
(setf blok-son yeni-son
|
||||
blok-baş yeni-baş
|
||||
i blok-baş))))))
|
||||
|
||||
(defmethod boşluk-yut ((okur okur))
|
||||
@@ -201,7 +222,6 @@
|
||||
(defmethod blok-ayrıştır ((okur okur))
|
||||
(when (sonraki-blok okur)
|
||||
(with-slots (i metin) okur
|
||||
(boşluk-yut okur)
|
||||
(case (char metin i)
|
||||
(#\# (ayrıştır okur :h))
|
||||
(#\- (ayrıştır okur :ul))
|
||||
|
||||
Reference in New Issue
Block a user