UseModWiki소스수정/매크로파라메터에이중대괄호허용 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/매크로파라메터에이중대괄호허용 는 읽기 전용 페이지입니다.
== # 매크로 파라메터에 "
[[페이지 이름]]
"형식의 페이지 이름을 줄 수 있게 함 == 아래의 매크로들은 괄호 안 파라메터에 특정한 페이지의 이름을 넣게 되어 있다. * [[/AllPagesFrom매크로]] * [[/AllPagesTo매크로]] * [[/blog매크로시리즈]] * [[/Calendar매크로]] * goto매크로 - [[/goto매크로버그]] 참조 * [[/IncludeDay매크로]]와 includedays매크로 * [[/PrevUpNext]]매크로 * ext1.89 이전의 [[/Comments매크로]] - [[/Comments와Thread매크로개선]] 참조 그런데 이 페이지 이름 파라메터에 "HomePage"와 같은 [[위키네임]]이 들어갈 경우와, "연습장"과 같이 위키네임이 아닌 이름이 들어갈 경우의 동작이 달라진다. A라는 페이지에 이런 매크로가 있을 경우, 전자의 경우는 A페이지가 HomePage를 링크하고 있는 것으로 처리가 되나, 후자의 경우는 그렇지 못하다. 따라서 다음과 같은 단점이 있다. * HomePage의 [[역링크]]에는 A가 나타나지만 연습장 페이지의 역링크에는 나타나지 않는 등, 페이지들 간의 링크 관계와 관련된 동작들이 일관성이 없게 된다. * 관리 메뉴를 사용하여 HomePage를 HomePageTwo로 이름을 바꿀 경우에는 저 매크로 안의 인자도 같이 바뀐다. 그러나 "연습장"을 "연습장두번째"로 바꿀 경우는 그런 처리가 되지 않는다. 따라서 일일이 수작업으로 찾아서 고쳐주어야 한다. 따라서, 페이지 이름을 파라메터로 주는 경우에 "
[[연습장]]
"와 같은 식으로도 줄 수 있게 수정하였다. 그러면 "HomePage"라고 준 경우와 동일하게 링크로 인식되고 모든 관련 동작이 동일하게 된다. === # 사용법 === 위의 설명 참조. 아래와 같은 식이 가능하다는 얘기: {{{
}}} === # 부작용 === 아래 소스 수정 내용을 보면 알겠지만 [[/RemoveLink함수]]를 수정하였다. 위 매크로들 이외에도 이 함수를 쓰는 경우가 종종 있는데([[/Index매크로]] 등), 이 경우에도 영향을 받는다. 이게 좋은 일인지 나쁜 일인지는 모르겠으나 아마 패치 이전에는 아예 동작을 안 하는 상황이었을테니 딱히 나빠질 것도 없을 듯. === # wiki.pl 수정 === [[/RemoveLink함수]]에 딱 한 줄 추가해 주는 것이 전부 {{{#!vim perl sub RemoveLink { my ($string) = @_; #추가 $string = &RestoreSavedText($string); $string =~ s/
]*>(\?<\/a>)?//ig; $string =~ s/<\/?b>//ig; $string =~ s/<\/a>//ig; return $string; } }}} include, includeday, includedays 의 경우는, 먼저 include를 처리한 후에 마크업을 시작하기 때문에 따로 대괄호쌍을 제거해 주어야 한다. 역시 한 줄 추가 {{{#!vim perl sub MacroInclude { my ($name, $opt) = @_; if ($OpenPageName eq $name) { # Recursive Include 방지 return ""; } # 추가 $name =~ s/^\[\[(.*)\]\]$/$1/; $name =~ s|^/|$MainPage/|; $name = &FreeToNormal($name); ... } }}} === # macros/includeday.pl 수정 === 역시 미리 대괄호를 빼 주어야 함 {{{#!vim perl 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
---- [[위키위키분류]]
UseModWiki소스수정/매크로파라메터에이중대괄호허용
페이지로 돌아가기 |
다른 수정본 보기