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>"

ラベル: ,