2008年1月29日火曜日

リンク化フィルタ「http Text to Link」でstyle要素、script要素、pre要素、code要素のブロック内に誤爆する不具合を修正

Thinking Archive(仮)で公開しているフィルタ「http Text to Link [2007/07/08]」を元に、以下の更新を行いました。

  • style要素内でフィルタが動作しないようにした
  • script要素内でフィルタが動作しないようにした
  • pre要素内でフィルタが動作しないようにした
  • code要素内でフィルタが動作しないようにした
  • textarea要素の存在チェックを行うフィルタの名前を「check <textarea>」から「Global-Flag: inner textarea element」に変更

各要素の存在チェックは別フィルタにしており、それぞれのフィルタを無効化して「http Text to Link」を動作させることもできます。
例えば、pre要素内でリンク化を有効にしたかったら、「Global-Flag: inner pre element」を無効化してください。

[Patterns]
Name = "Global-Flag: inner style element [2008/01/29] test1"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "(^(^<("
        "style[ >](^$TST(inStyle=1))$SET(inStyle=1)|"
        "/style>$TST(inStyle=1)$SET(inStyle=)"
        ")))"

Name = "Global-Flag: inner script element [2008/01/29] test2"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "(^(^<("
        "script(\s[^>]+>|>)(^ </script>|$TST(inScript=1))$SET(inScript=1)|"
        "/script>$TST(inScript=1)$SET(inScript=)"
        ")))"

Name = "Global-Flag: inner pre element [2008/01/29] test1"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "(^(^<("
        "pre[ >](^$TST(inPre=1))$SET(inPre=1)|"
        "/pre>$TST(inPre=1)$SET(inPre=)"
        ")))"

Name = "Global-Flag: inner code element [2008/01/29] test1"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "(^(^<("
        "code[ >](^$TST(inCode=1))$SET(inCode=1)|"
        "/code>$TST(inCode=1)$SET(inCode=)"
        ")))"

Name = "Global-Flag: inner textarea element [2008/01/29] test1"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "(^(^<("
        "textarea[ >](^$TST(inTextarea=1))$SET(inTextarea=1)|"
        "/textarea>$TST(inTextarea=1)$SET(inTextarea=)"
        ")))"

Name = "http Text to Link [2008/01/29] test4"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 512
Match = ">(^$TST(inStyle=1)|$TST(inScript=1)|$TST(inPre=1)|$TST(inCode=1)|$TST(inTextarea=1))"
        "([^<>]++)\0(http(://|s://)\1|ttp(://|s://)\1)\2"
        "([0-9a-z_-]+{1,63}(.[0-9a-z_-]+{1,63})++{0,4}.[0-9a-z_-]+{2,6}(:[0-9]+{1,5}|(^[.0-9:a-z_-]))"
        "(/[!=#-&(-;?-[\]-~]+|(^/)))\3(^['"])"
        "(^(^"
        "(<br /+>[^<>]+)+{1,2}<(^/a>)|"
        "(^<br /+>)[^<>]+(<!--*-->[^<]+)+<"
        "(^/+[^a-z]|/("
        "((^a>)[^>]+> </)+a>|title>|style>|script>|textarea>|pre>|code>|samp>"
        "))))"
Replace = ">\0<a style="text-decoration: none" href="http\1\3">"
          "<span style="font-size: small">Linked:&#160;</span>\2\3</a>"

ラベル: ,

2 件のコメント:

Anonymous 匿名 さんは書きました...

http Text to Linkの代入と、それの出力が定義されてませんが、それは仕様と捉えて良いのでしょうか?

2008年1月31日 0:28  
Blogger think さんは書きました...

元のフィルタではそれぞれ定義されていたのですが、HTML変換時にミスがあったので、修正しました。
ご報告ありがとうございました。

2008年2月1日 1:36  

コメントを投稿

登録 コメントの投稿 [Atom]

<< ホーム