(defun ls2html ()
(let ((lines nil)
(dname nil))
(with-open-stream (instream (popen "pwd"))
(setf dname
(strip-left-from-string "code"
(read-line instream))))
(with-open-stream (instream (popen "ls -1F"))
(loop
(if (peek-char nil instream)
(setf lines (append lines (list (read-line instream))))
(return))))
(with-open-file (outstream "index.html"
:direction :output)
(format outstream "~%")
(format outstream "
~%")
(format outstream "~a~%" dname)
(format outstream
"~%")
(format outstream "~%")
(format outstream "~%")
(format outstream "UCLA Xlisp-Stat Archive
~%")
(format outstream "~%
~%~%")
(format outstream "
~a
~%~%" dname)
(format outstream "
Files
~%")
(format outstream "~%")
(dolist (str lines)
(format outstream "- ~%")
(cond
((char-equal #\/ (last-char str))
(format outstream
"~a~%" str
(but-last-char str)))
((char-equal #\~ (last-char str)))
((char-equal #\# (last-char str)))
(t (format outstream
"~a~%" str)))
(format outstream "
~%")
(format outstream "- Text goes here
~%"))
(format outstream "
~%")
(format outstream "~%
~%
~%")
(format outstream "Jan de Leeuw
~%UCLA Statistics Program
~%deleeuw@stat.ucla.edu~%~%")
(format outstream "~%")
(format outstream "~%"))
)
)
(defun last-char (str)
(elt str (1- (length str))))
(defun but-last-char (str)
(select str (iseq (1- (length str)))))
(defun strip-left-from-string (str1 str2)
"Args: str1 str2
Looks for str1 in str2, then removes str1 and
everything preceding str1 from str2."
(let ((indx (search str1 str2))
(nlgt (length str1)))
(if indx
(subseq str2 (+ indx nlgt)) str2))
)