(defun szotar-next-line () "Takes the next line and prints its HTML representation." (if (re-search-forward "^\\(.*\\) = \\(.*\\) = \\(.*\\)$" (point-max) t) (let* ((definition (match-string 3)) (hebrew (match-string 1)) (pron (match-string 2))) (princ (concat "<p>\n" "<span class=\"hebrew\">" hebrew "</span>\n" "<span class=\"pronounciation\">" pron "</span>\n" "<span class=\"definition\">" definition "</span>\n" "</p>\n")) t) nil)) (defun szotar-htmlize () "Generates a CSS-driven HTML file from the current buffer. The buffer is assumed to be in UTF-8 encoding." (interactive) (with-output-to-temp-buffer (concat (buffer-name (current-buffer)) ".html") (princ (concat "<html>\n" "<head>\n" "<title>" (buffer-name (current-buffer)) "</title>\n" "<link rel=\"stylesheet\" type=\"text/css\"" " href=\"szotar.css\" media=\"all\" />\n" "</head>\n" "<meta http-equiv=\"Content-Type\"" " content=\"text/html;charset=utf-8\" />\n" "<body>\n")) (save-excursion (goto-char (point-min)) (while (szotar-next-line))) (princ "</body>\n</html>")))