[첫화면으로]UseModWiki소스수정/매크로파라메터에이중대괄호허용

마지막으로 [b]

1. 매크로 파라메터에 "[[페이지 이름]]"형식의 페이지 이름을 줄 수 있게 함
1.1. 사용법
1.2. 부작용
1.3. wiki.pl 수정
1.4. macros/includeday.pl 수정
1.5. 추가 업데이트 내역
1.6. 사용자 의견

1. 매크로 파라메터에 "[[페이지 이름]]"형식의 페이지 이름을 줄 수 있게 함

아래의 매크로들은 괄호 안 파라메터에 특정한 페이지의 이름을 넣게 되어 있다.

그런데 이 페이지 이름 파라메터에 "HomePage"와 같은 위키네임이 들어갈 경우와, "연습장"과 같이 위키네임이 아닌 이름이 들어갈 경우의 동작이 달라진다. A라는 페이지에 이런 매크로가 있을 경우, 전자의 경우는 A페이지가 HomePage를 링크하고 있는 것으로 처리가 되나, 후자의 경우는 그렇지 못하다. 따라서 다음과 같은 단점이 있다.

따라서, 페이지 이름을 파라메터로 주는 경우에 "[[연습장]]"와 같은 식으로도 줄 수 있게 수정하였다. 그러면 "HomePage"라고 준 경우와 동일하게 링크로 인식되고 모든 관련 동작이 동일하게 된다.

1.1. 사용법

위의 설명 참조. 아래와 같은 식이 가능하다는 얘기:
<allpagesto([[연습장]])>
<calendar([[내 일기장]],2005,11)>

1.2. 부작용

아래 소스 수정 내용을 보면 알겠지만 /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) { # Recursive Include 방지
        return "";
    }

# 추가
    $name =~ s/^\[\[(.*)\]\]$/$1/;
    $name =~ s|^/|$MainPage/|;
    $name = &FreeToNormal($name);
    ...
}

1.4. macros/includeday.pl 수정

역시 미리 대괄호를 빼 주어야 함
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 . "/";
    }
    ...
}

1.5. 추가 업데이트 내역

1.6. 사용자 의견

어라, /Comments와Thread매크로개선하고 이거하고... 평소에 꽤나 불편하던 부분이라서 나름 흐뭇해하던 거였는데, 조회수를 보니 하도 소스수정을 안 하고 살다보니 다들 다른 툴로 옮겨타고 여기를 잊어버린 게 아닌가 싶군요. OTL
-- Raymundo 2005-11-21 6:38 pm
이름:  
Homepage:
내용:
 

위키위키분류

마지막 편집일: 2005-11-21 6:38 pm (변경사항 [d])
1060 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기