-
- 1. 매크로 파라메터에 "[[페이지 이름]]"형식의 페이지 이름을 줄 수 있게 함
-
-
- 1.1. 사용법
-
- 1.2. 부작용
-
- 1.3. wiki.pl 수정
-
- 1.4. macros/includeday.pl 수정
-
- 1.5. 추가 업데이트 내역
-
- 1.6. 사용자 의견
-
1. 매크로 파라메터에 "[[페이지 이름]]"형식의 페이지 이름을 줄 수 있게 함
아래의 매크로들은 괄호 안 파라메터에 특정한 페이지의 이름을 넣게 되어 있다.
그런데 이 페이지 이름 파라메터에 "HomePage"와 같은 위키네임이 들어갈 경우와, "연습장"과 같이 위키네임이 아닌 이름이 들어갈 경우의 동작이 달라진다. A라는 페이지에 이런 매크로가 있을 경우, 전자의 경우는 A페이지가 HomePage를 링크하고 있는 것으로 처리가 되나, 후자의 경우는 그렇지 못하다. 따라서 다음과 같은 단점이 있다.
- HomePage의 역링크에는 A가 나타나지만 연습장 페이지의 역링크에는 나타나지 않는 등, 페이지들 간의 링크 관계와 관련된 동작들이 일관성이 없게 된다.
- 관리 메뉴를 사용하여 HomePage를 HomePageTwo로 이름을 바꿀 경우에는 저 매크로 안의 인자도 같이 바뀐다. 그러나 "연습장"을 "연습장두번째"로 바꿀 경우는 그런 처리가 되지 않는다. 따라서 일일이 수작업으로 찾아서 고쳐주어야 한다.
따라서, 페이지 이름을 파라메터로 주는 경우에 "[[연습장]]"와 같은 식으로도 줄 수 있게 수정하였다. 그러면 "HomePage"라고 준 경우와 동일하게 링크로 인식되고 모든 관련 동작이 동일하게 된다.
위의 설명 참조. 아래와 같은 식이 가능하다는 얘기:
<allpagesto([[연습장]])>
<calendar([[내 일기장]],2005,11)>
아래 소스 수정 내용을 보면 알겠지만 /RemoveLink함수를 수정하였다. 위 매크로들 이외에도 이 함수를 쓰는 경우가 종종 있는데(/Index매크로 등), 이 경우에도 영향을 받는다. 이게 좋은 일인지 나쁜 일인지는 모르겠으나 아마 패치 이전에는 아예 동작을 안 하는 상황이었을테니 딱히 나빠질 것도 없을 듯.
1.3. wiki.pl 수정
/RemoveLink함수에 딱 한 줄 추가해 주는 것이 전부
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) {
return "";
}
$name =~ s/^\[\[(.*)\]\]$/$1/;
$name =~ s|^/|$MainPage/|;
$name = &FreeToNormal($name);
...
}
1.4. macros/includeday.pl 수정
역시 미리 대괄호를 빼 주어야 함
sub MacroIncludeDay {
...
if ($mainpage ne "") {
$temp = $mainpage;
$temp =~ s/,$//;
$temp =~ s/^\[\[(.*)\]\]$/$1/;
$temp =~ s/\/.*$//;
$mainpage = $temp . "/";
}
...
}
1.5. 추가 업데이트 내역
어라, /Comments와Thread매크로개선하고 이거하고... 평소에 꽤나 불편하던 부분이라서 나름 흐뭇해하던 거였는데, 조회수를 보니 하도 소스수정을 안 하고 살다보니 다들 다른 툴로 옮겨타고 여기를 잊어버린 게 아닌가 싶군요. OTL
위키위키분류