朝顔日記

ruby マークアップ用の lisp

2005-02-28

ruby のマークアップを大量にする必要があったので、意を決して xyzzy 用の lisp を初めて自分で書いてみた。といっても 既存のものを切り貼りしただけのようなものですが。以下のその lisp


;;ruby マークアップ用
(defun markup-ruby (from to)
(interactive "*r")
(save-restriction
(narrow-to-region from to)
(goto-char (point-min))
(replace-buffer "\\([^(]+\\)(\\([^)]+\\))" "<ruby><rb>\\1</rb><rp>(</rp><rt>\\2</rt><rp>)</rp></ruby>" :regexp t)))
(define-key ed::*html+-mode-map* '(#\C-c #\r) 'markup-ruby)

漢字(かんじ) のように、rb 要素になるテキストの後に全角カッコ付きで rt 要素の内容を書いて、それらをリージョンにしておきます。この場合だとリージョンの先頭は正確に「漢」の字にしておく必要があります。後ろは結構いい加減でも大丈夫です。その状態で 実行すると、<ruby><rb>漢字</rb><rp>(</rp><rt>かんじ</rt><rp>)</rp></ruby> てな感じに変換されるはずです。

キーバインドはとりあえず、C-c r になっていますがそこらあたりは適当に。

ちなみに、以前は VZ (何)用のマクロを自作して使っていたのですが、ついでにそれも書いておこう。


= ruby.def =
* m
80 ^\ "ruby" ?.
        (mb!=2)?{&b(6) &m("文字ブロックでどうぞ").}
        n=10,                           ;FEP が WX3の時
        &j(0) f=mg.-9, &j(n) fr+,       ;FEP ON
        &g("ふりがな",30) (r<0)?>z
        #y
        "<ruby><rb>"
        ek[+, #i ek],                   ;ek:出力後のカーソル位置更新
        &?("</rb><rp>(</rp><rt>%s</rt><rp>)</rp></ruby>",pw)
:z      fr-, &j(f)                      ;FEP 復帰
*

こっちはあらかじめ rt 要素の内容を書いておくのではなく、後から入れるタイプです。ルビを振りたい部分を文字ブロックにしておいてマクロ起動。rt 要素の内容を聞いてくるので答えてやるとそのようになります。て、こんなの使う人がいるのか。:p)

せっかくなので、意味なくルビ付きのものをなんか書いておきます。

  • 蜻蛉かげろう
  • 蝙蝠こうもり
  • 蟷螂かまきり
  • 蟋蟀こおろぎ

「ruby マークアップ用の lisp」へコメントをつける

書き込み時の挙動について
URI らしき文字列には自動的にリンクが張られます。また "<" や、">" は実体参照化されます。
スパム対策のため、リファラを切っていると投稿できません。

この記事の永続的 URI ならびに トラックバック ping URI
http://diary.noasobi.net/2005/02/diary_050228a.html