イカ娘語変換関数を書いてみた
このところ、LISPの学習にいそしんでいるのでゲソが、テキストを読んでるだけでは身につかないと思ったので、試しにイカ娘語変換関数を書いてみたでゲソ。
Ika-Musume-Go-Translator(イカ娘語トランスレーター)、略してika-latorでゲソ。これを.emacsに書いておけば、M-x ika-latorでバッファの文章を変換できるでゲソ。
これを書くに際して、2010-11-06をおおいに参考にさせてもらったでゲソ。というか、ベースになる正規表現をほぼそのまま使っているでゲソ。感謝してるでゲソ。
(defun ika-laitor () (interactive) (let (ikago-ptn) (setq ikago-ptn '( ("ないですか" "なイカ") ("\\(だろうか\\|か\\|かな\\|でしょうか\\)\\(\\?\\|?\\|。\\)" "じゃなイカ?") ("ありません" "ないんじゃなイカ?") ("である" "でゲソ") ("いか" "イカ") ("\\(でした\\|だった\\)" "\\1ゲソ") ("ください" "くれでゲソ") ("あります" "ある") ("いいます" "いう") ("します" "する") ("ます" "る") ("ました" "た") ("でした" "だ") ("\\(き\\|来\\)ます" "きる") ("あなた\\|あんた\\|貴方\\|貴女\\|キミ" "おまえ") ("だけれど\\|だけど\\|だが" "でゲソが") ("たけれど\\|たけど\\|たが" "たでゲソが") ("\\(で\\)\\(す\\)" "\\1ゲソ") ("\\(る\\|た\\|す\\|い\\|う\\|く\\|つ\\|む\\|ぐ\\|ぶ\\)\\(よ\\|ね\\|な\\)?\\(。\\|$\\)" "\\1でゲソ\\2\\3") ("\\(だ\\)\\(よ\\|ね\\|な\\)?\\(。\\|$\\)" "でゲソ\\2\\3") ("でゲソじゃなイカ" "でゲソか") )) (while ikago-ptn (goto-char (point-min)) (while (re-search-forward (car (car ikago-ptn)) nil t) (replace-match (cadr (car ikago-ptn)))) (setq ikago-ptn (cdr ikago-ptn)))))