(defun szotar-next-line ()
"Takes the next line and prints its HTML representation."
(if (re-search-forward "^\\(.*\\) = \\(.*\\)$" (point-max) t)
(let* ((definition (match-string 2))
(latin (match-string 1)))
(princ (concat "<p>\n"
"<span class=\"latin\">" latin "</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>")))
(defun generate-szotar (str)
(interactive "sLecke száma: ")
(with-output-to-temp-buffer "szotar"
(save-excursion
(goto-char (point-min))
(while (search-forward-regexp (concat "^\\*+ " str "$") nil t)
(forward-line 1)
(let* ((begin (point))
(found (search-forward-regexp "^\\*" nil t))
(end (or (and found (1- found)) (point-max))))
(princ (buffer-substring-no-properties begin end)))
(beginning-of-line)))))