그런데 이 페이지 이름 파라메터에 "HomePage"와 같은 위키네임이 들어갈 경우와, "연습장"과 같이 위키네임이 아닌 이름이 들어갈 경우의 동작이 달라진다. A라는 페이지에 이런 매크로가 있을 경우, 전자의 경우는 A페이지가 HomePage를 링크하고 있는 것으로 처리가 되나, 후자의 경우는 그렇지 못하다. 따라서 다음과 같은 단점이 있다.
따라서, 페이지 이름을 파라메터로 주는 경우에 "[[연습장]]"와 같은 식으로도 줄 수 있게 수정하였다. 그러면 "HomePage"라고 준 경우와 동일하게 링크로 인식되고 모든 관련 동작이 동일하게 된다.
<allpagesto([[연습장]])> <calendar([[내 일기장]],2005,11)>
sub RemoveLink { my ($string) = @_; #추가 $string = &RestoreSavedText($string); $string =~ s/<a href[^>]*>(\?<\/a>)?//ig; $string =~ s/<\/?b>//ig; $string =~ s/<\/a>//ig; return $string; }
include, includeday, includedays 의 경우는, 먼저 include를 처리한 후에 마크업을 시작하기 때문에 따로 대괄호쌍을 제거해 주어야 한다. 역시 한 줄 추가
sub MacroInclude { my ($name, $opt) = @_; if ($OpenPageName eq $name) { # Recursive Include 방지 return ""; } # 추가 $name =~ s/^\[\[(.*)\]\]$/$1/; $name =~ s|^/|$MainPage/|; $name = &FreeToNormal($name); ... }
sub MacroIncludeDay { ... # main page 처리 if ($mainpage ne "") { $temp = $mainpage; $temp =~ s/,$//; # 이 한 줄 추가해주고 $temp =~ s/^\[\[(.*)\]\]$/$1/; # include 는 다른 마크업보다 먼저 처리되기 때문에 아래 단락은 필요 없다. 지워도 되나 일단 주석 처리만 했음 # $temp = &RemoveLink($temp); # $temp = &FreeToNormal($temp); # if (&ValidId($temp) ne "") { # return $itself; # } $temp =~ s/\/.*$//; $mainpage = $temp . "/"; } ... }
어라, /Comments와Thread매크로개선하고 이거하고... 평소에 꽤나 불편하던 부분이라서 나름 흐뭇해하던 거였는데, 조회수를 보니 하도 소스수정을 안 하고 살다보니 다들 다른 툴로 옮겨타고 여기를 잊어버린 게 아닌가 싶군요. OTL