今日はJavaScriptとPHP――正規表現についての勉強か。試験前ですが試験勉強はなし。
JavaScriptのほうは、テキストボックスの文字列を操作するコードの勉強。まずは手始めに、はてなダイアリーの編集ツールバーにあるボタンを変えてみようと思います。
あたりが参考になりそうですから、それをクラス化して使ってみようと思ったのですが…。そう簡単にはいかないですね。どこをどう間違えたのか、テキストエリアの全文が置き換えられちゃったりして…。
createTextRange?関数あたりが鍵のようですね、多くのブラウザに対応するなどといわなければ、後はちょっとだけで済むみたい。
あとは、未知の関数document/evaluate。どうやらHTMLからXPathでタグを得ているようですが…?引数の意味が分かりませんね。
あーあ、DOM系に詳しいJavaScriptのリファレンス、そろそろ欲しいな。
続いてPHP――正規表現です。今まで、一行ごとにpタグで囲むという処理は
$text = preg_replace("/^(?!-|\+|\*|\.|<|>|:| |\s)(.+?)$/m", "$1
", $text);
という正規表現でやってきたんですが、これだと複数行にまたがるブロックタグなどが、正規表現で処理する前に置かれてると困ってしまいますね。解決するには根本的に考え方を変えるしかないようですね…。
text-hatena.js 公開 [てっく煮]にもありましたが、はてなは一行ごとに複数のクラスが走査して、マッチするかどうかを確かめているみたい。だからたかが一つの記事のために10近いクラスがあったわけですね。
正規表現一行で一つの構文をすませるのだから、理論上はこっちのほうが早いはずですが…。
たしか、Perl正規表現雑技のページかどこかに、「タグ外にマッチ」という表現が乗ってた気がする。それが参考になるかもしれない・・・っと。
やっぱり、まだまだやることは多そうです。結局Nucleusプラグインも後に三個作る必要が出てきそうですし。まあ、楽しいですけど、なかなか大変です。