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