/ / 最新

swk's log - chalow のカテゴリ名解析へのパッチ

2006-10-09

* chalow のカテゴリ名解析へのパッチ [logging][chalow] 4 users

最近,copyurl+ とかでページタイトルをコピーしたり,bloglines のアイテム名をコピーしたりして,そのまま ChangeLog メモに貼りつけている場合が多い (いったん俺フォーマットを経由してですが).

コピーしたページによっては,タイトルの先頭にカテゴリ名がついている場合とか (tDiary なんかが典型),ちょっと前に流行った一文字 blog 略号 (?) がついている場合がある.それを ChangeLog メモ記法にそのままコピーして,末尾にカテゴリ名をつけるとこうなる.

      * [を] chalow でアスキーアートを表示するためのプラグイン [tech][aa]:
        - http://nais.to/~yto/clog/2006-09-23-3.html

これを chalow の ChangeLogReader.pm でそのまま読み込むと [を]〜 [tech][aa] 全体がカテゴリリストと認識されて,ちょっこすおかしなことになることに気づいた.

というわけで修正してみる.ややこしいな.合ってますかこれ?

-    if ($ih =~ s/\s*\[(.+)\]$//) { # category
+    if ($ih =~ s/\s*\[(([^\[\]]+\]\s*\[)*[^\[\]]+)\]$//) { # category
         @cat = split(/\s*\]\s*\[\s*/, $1);
     }

ここしばらく,外部に公開する記事しか chalow を通していなくて,外部に公開する記事の場合タイトルとかは自分で整理し直すので気づいていなかった.ふと久しぶりに全記事を chalow に通したら「File name too long」なエラーが出て気づいた.

(追記) 例が適切でなくて誤解を招いてしまったのでちょっと修正.カテゴリは複数つく場合があるんです.まとめて切り出した後,split する処理が続いているコードでした.

[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [かがみ] ああなるほど.空白に対してロバストにするなら s/(?>[^\\s\\]]... (2006-10-13 06:33:05)

* [otsune] それでsplitするのなら s/(?>\\s\\[)(.+)\\]$//で... (2006-10-12 05:05:59)

* [かがみ] すみません.わかりにくかったので本文修正しました.私の元の書き方では伝わるはずが... (2006-10-12 03:34:37)

* [otsune] ああ、勘違いしてました。s/(?<=\\s\\[)([^\\]]+)\\]... (2006-10-11 23:08:01)

* [かがみ] 試してみましたが,うまくいかないようです.% perl -e \'$ih = &... (2006-10-11 04:00:17)

* ...

最終更新時間: 2009-01-04 15:31


Shingo W. Kagami - swk(at)kagami.org