AutoLink, AutoAlias ともにget_autolink_pattern() を経由して正規表現を作っていますが、本来AutoLink 用として用意されたConfig 設定をAutoAlias でもそのまま使っているので、不都合な場合があります。
例えば、IgnoreList に登録されていてAutoAliasName には登録されていない単語があった場合、Link_autoalias::toString() でreturn ''; されてしまい閲覧時にその文字が表示されなくなります。
意図してそれをしているのならまだいいのですが、AutoLink とAutoAlias を同時に運用している場合は、AutoAlias に登録していないのにAutoLink にならず、文字が表示されないという状況になってしまいます。
そこで、$min_len のようにget_autolink_pattern() を呼び出す時に、使うConfig 設定ページ(あるいは、使わないこと)を指定するようにして、省略された場合は互換動作させる(AutoLink の設定を使う)か、
ForceIgnoreList は共有してIgnoreList を利用するかを切り替えられるようにするか、
というようにできればいいなと思い提案します。
if (in_array($name, $this->forceignorepages) || ! is_page($name)) return FALSE;ForceIgnoreList に一致するか、IgnoreList に一致したなどで存在しないページ名にマッチした場合に、リンクの対象外になっています。
if (in_array($name, $this->forceignorepages)) { return FALSE; }ForceIgnoreList に一致した場合は対象外となっているのですが、IgnoreListにマッチした場合は AutoAliasName のルールを確認せずに処理を続行してしまいます。AutoLink と処理をあわせるのなら、
get_autoaliases($name) == ''を条件に追加すればいいですし、違ってもいいのなら「Link_autoalias::toString() で該当ルールなしの場合はreturn '';」している処理をreturn make_line_rules(htmlspecialchars($this->name)); するように変える方法もあります。 -- 2010-01-31 (日) 08:34:39