상대경로로 적은 URL 처리
- 페이지에 http:/temp/test.html 또는 http:../../temp/test.html 이라고 적은 경우, <a href="http:/temp/test.html">http:/temp/test.html</a> 와 같이 링크가 생성되는데, 웹브라우저에 따라서 이렇게 적힌 URL 을 제대로 처리하지 못하는 경우가 있다. (주인장이 테스트한 바로는, IE 와 KDE의 K브라우저는 제대로 처리를 했고, Moziila 는 제대로 처리하지 못했다)
- URL 패턴을 링크로 변환할 때, 상대경로일 경우 앞에 http: 를 빼어 버리고 링크를 만들도록 한다. 즉 위의 경우 링크는 <a href="/temp/test.html"> 또는 <a href="../../temp/test.html"> 가 되도록 한다.
- WikiPatches/PartialUrlFix 의 패치를 적용하려고 했는데, 이미 되어 있었다. (오리지널, Luke님의 K3, PalmWiki 버전 중 어느 시점에서 적용된 것인지는 모르겠음) 그런데 현재 상태에서는, 이미지 링크와 [URL label] 형식의 링크는 제대로 처리하지만 URL 만을 그냥 적는 경우는 처리하지 못한다. 해당 부분만 다시 수정했다.
- 부작용:
- 딱히 동작에 문제가 되지는 않는데, "눈에 보이는 것" 과 실제 링크가 걸린 방식이 달라지게 된다. 즉 화면에는 "http:../../temp/test.html" 라고 적혀 있지만 실제 링크는 "../../temp/test.html" 이라고 걸려 있다. 어쩔 수 없는 듯.
- 정 맘에 안 들 경우는, 아래 소스코드에서 return 문에 추가된 $protocol 을 제거하면 된다. 이 경우는 화면에도 http 가 빠진 채로 "../../test/test.html" 이라고만 나올 것이다. 아마도, 더 맘에 안 들 거다. :-)
- /TestPartialUrlFix 참조
- 다른 패치 (새창으로 열기 아이콘, 그림 주소 보이기) 를 이미 적용했을 경우 소스코드가 아래와는 다르게 나올 것이다. 알아서 잘 처리하라. ;-)
sub UrlLink {
...
return ("<img $ImageTag src=\"$name\">", $punct);
}
my $protocol;
($protocol, $name) = ($1, $2) if ($name =~ /^(https?:)(.*)/ && $2 !~ /^\/\//);
return ("<a href=\"$name\">$protocol$name</a>", $punct);
}
위키위키분류