リンク化フィルタ「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: </span>\2\3</a>"
ラベル: Proxomitron, フィルタ
2 件のコメント:
http Text to Linkの代入と、それの出力が定義されてませんが、それは仕様と捉えて良いのでしょうか?
元のフィルタではそれぞれ定義されていたのですが、HTML変換時にミスがあったので、修正しました。
ご報告ありがとうございました。
コメントを投稿
登録 コメントの投稿 [Atom]
<< ホーム