Shammer's Philosophy

My private adversaria

HTML変換コマンド

業務でテキストベースの文字をHTML対応のために(あくまで個人的都合で)変換していたが、さすがに面倒になってコマンドを定義したいと思ってちょっと調べてみた。以下のBlogの内容をちょこっと変更すればできそうだったのでやってみました。ブログの方、ありがとうございます!

Emacs Lispプログラムでreplace-stringは使ふべからず - HM weblog

こんな感じです。

(defun convert-html (start end)
  (interactive "r")
  (save-excursion
    (save-restriction
      (narrow-to-region start end)
      (goto-char (point-min))
      (while (re-search-forward " " nil t)
        (replace-match " "))
      (goto-char (point-min))
      (while (re-search-forward ">" nil t)
        (replace-match ">"))
      (goto-char (point-min))
      (while (re-search-forward "<" nil t)
        (replace-match "&lt;"))
      (goto-char (point-min))
      (while (re-search-forward "\n" nil t)
        (replace-match "\n<br/>")))))

選択した範囲で、半角スペースを&nbsp;に、<を&lt;に、>を&gt;に、改行を改行+<br/>に、というだけだが。これで少しは作業楽になるだろうか。