변경사항 (가장 최근의 "일반적인 수정"부터)
(소소한 수정)
| -1,15 +1,16 | 
| == includenotoc 매크로 추가 == | 
| See also [[다른페이지의내용을포함하여출력하기]] | 
| * 이 [[UserModWiki소스수정]] 페이지를 여러 하위 페이지로 나누고 include 할 때, 하위페이지 쪽에 <toc> 를 쓸 수 없는 불편함을 개선하고저 함 | 
| * include 매크로를 사용하여 어떤 페이지를 내부에 포함하는 경우, 포함되는 페이지 내에 <toc> 태그가 있으면 그 자리 역시 목차로 바뀌어 버리는 문제를 미흡하게나마 해결 | 
| * 사용법 - <includenotoc(페이지이름)> | 
| ** include 태그와 사용법은 동일 | 
| ** 한 줄 내에, 매크로 앞뒤에 다른 문자가 오면 안 된다. | 
| ** 매크로의 앞뒤에는 공백을 비롯한 다른 문자가 오면 안 된다. | 
| ** 포함되는 페이지 내에 있는 <toc> 는, 마치 원래 데이타가 &lt;toc&gt; 였던 것처럼 간주된다. 결국 최종 출력물은 "<toc>" 자체가 된다. | 
| ** 아예 포함되는 페이지 내에 있는 toc 태그를 제거해 버리는 것을 고려했으나, 이 경우 {{{ }}} 안에 있는 문자열 "<toc>" 마저도 사라져 버린다. 또한, include 매크로가 재귀적으로 실행되지 않고 그냥 출력되듯이 toc 도 마찬가지로 그냥 출력되는 것이 합당하다고 생각했다. 다만, include 를 사용하는 쪽에서는 중간에 보이는 "<toc>" 가 눈에 거슬릴 것이다. :-/ | 
| * "include 매크로 출력을 html 변환" 패치가 적용된 상태여야 한다. | 
| * 2002-12-17 [[조프]]님이 수정한 것을 다시 적용함. (MacroInclude 의 버그 수정) | 
| : | 
| {{{perl | 
| {{{#!vim perl | 
| ... | 
| use vars qw(@RcDays @HtmlPairs @HtmlSingle | 
| ... | 
| -17,7 +18,7 | 
| ... | 
| }}} | 
| : | 
| {{{perl | 
| {{{#!vim perl | 
| sub InitLinkPatterns { | 
| ... | 
| $FS3 = $FS . "3";   # The FS character is not allowed in user data. | 
| -29,7 +30,7 | 
| } | 
| }}} | 
| : | 
| {{{perl | 
| {{{#!vim perl | 
| sub WikiToHTML { | 
| ... | 
| ### 다음 두 라인 추가 | 
| -40,19 +41,19 | 
| } | 
| }}} | 
| : | 
| {{{perl | 
| {{{#!vim perl | 
| sub MacroIncludeSubst { | 
| my ($txt) = @_; | 
|  | 
| $txt =~ s/<include\((.*)\)>/&MacroInclude($1)/gei; | 
| ### 다음 라인 추가 | 
| $txt =~ s/(^|\n)<includenotoc\((.*)\)>([ \t\r\f]*\n)/$1 . &MacroInclude($2, "notoc") . $3/geim; | 
| $txt =~ s/(^|\n)<includenotoc\((.*)\)>([\r\f]*\n)/$1 . &MacroInclude($2, "notoc") . $3/geim; | 
| ### | 
| return $txt; | 
| } | 
| }}} | 
| : | 
| {{{perl | 
| {{{#!vim perl | 
| ### 다음 함수를 새로 작성 | 
| sub MacroInclude { | 
| my ($name, $opt) = @_; | 
includenotoc 매크로 추가
See also 다른페이지의내용을포함하여출력하기
-  이 UserModWiki소스수정 페이지를 여러 하위 페이지로 나누고 include 할 때, 하위페이지 쪽에 <toc> 를 쓸 수 없는 불편함을 개선하고저 함
-  include 매크로를 사용하여 어떤 페이지를 내부에 포함하는 경우, 포함되는 페이지 내에 <toc> 태그가 있으면 그 자리 역시 목차로 바뀌어 버리는 문제를 미흡하게나마 해결
-  사용법 - <includenotoc(페이지이름)>
-  include 태그와 사용법은 동일
-  매크로의 앞뒤에는 공백을 비롯한 다른 문자가 오면 안 된다.
-  포함되는 페이지 내에 있는 <toc> 는, 마치 원래 데이타가 <toc> 였던 것처럼 간주된다. 결국 최종 출력물은 "<toc>" 자체가 된다.
-  아예 포함되는 페이지 내에 있는 toc 태그를 제거해 버리는 것을 고려했으나, 이 경우 {{{ }}} 안에 있는 문자열 "<toc>" 마저도 사라져 버린다. 또한, include 매크로가 재귀적으로 실행되지 않고 그냥 출력되듯이 toc 도 마찬가지로 그냥 출력되는 것이 합당하다고 생각했다. 다만, include 를 사용하는 쪽에서는 중간에 보이는 "<toc>" 가 눈에 거슬릴 것이다. :-/
 
-  "include 매크로 출력을 html 변환" 패치가 적용된 상태여야 한다.
-  2002-12-17 조프님이 수정한 것을 다시 적용함. (MacroInclude 의 버그 수정)
- 
...
use vars qw(@RcDays @HtmlPairs @HtmlSingle
    ...
    $ConfigFile $SOURCEHIGHLIGHT %SRCHIGHLANG $LinkFirstChar $FS_lt $FS_gt);  
...
- 
sub InitLinkPatterns {
    ...
    $FS3 = $FS . "3";   
    $FS_lt = $FS . "lt";
    $FS_gt = $FS . "gt";
    ...
}
- 
sub WikiToHTML {
    ...
    $pageText =~ s/$FS_lt/</g;
    $pageText =~ s/$FS_gt/>/g;
    return &RestoreSavedText($pageText);
}
- 
sub MacroIncludeSubst {
    my ($txt) = @_;
    $txt =~ s/<include\((.*)\)>/&MacroInclude($1)/gei;
    $txt =~ s/(^|\n)<includenotoc\((.*)\)>([\r\f]*\n)/$1 . &MacroInclude($2, "notoc") . $3/geim;
    return $txt;
}
- 
sub MacroInclude {
    my ($name, $opt) = @_;
    if ($OpenPageName eq $name) { 
        return "";
    }
    my $fname = &GetPageFile($name);    
    if (!(-f $fname)) {
        return "";
    }
    my $data = &ReadFileOrDie($fname);
    my %SubPage = split(/$FS1/, $data, -1);  
    if (!defined($SubPage{"text_default"})) {
        return "";
    }
    my %SubSection = split(/$FS2/, $SubPage{"text_default"}, -1);
    my %TextInclude = split(/$FS3/, $SubSection{'data'}, -1);
    
    $TextInclude{'text'} =~ s/<toc>/$FS_lt."toc".$FS_gt/gei if ($opt eq "notoc");
    return $TextInclude{'text'};
}
Notes
ext1.48c 에서 다시 수정되었습니다. 
위키위키분류