UseModWiki소스수정/Include매크로 페이지의 소스 보기
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/Include매크로 는 읽기 전용 페이지입니다.
== <include> 매크로 출력을 html 변환 == [[다른페이지의내용을포함하여출력하기]] 관련 * <include(A)> 로 A 페이지의 내용을 불러올 때, A 페이지의 내용은 위키에서 처리하지 않고 소스 그대로 출력되는 것을 개선. * "문제 해결"이 아니라 "개선" 항목으로 취급하는 이유는, 원래의 방식과 장단점이 있어서 반드시 수정해야 할 필요는 없다고 보기 때문이다. * Jof:프로그래밍팁/Wiki 에 있는 [[지양]]님의 패치를 적용. * 포함되는 페이지 안에 있는 include 태그는 처리되지 않는다. (처리되면 곤란하다. 무한루프에 빠질 수 있기 때문이다) * include 매크로의 앞뒤에는 공백을 비롯한 다른 문자가 오면 안 된다. * 부작용: ** 원래의 페이지와 포함되는 페이지들 안에 각각 # 으로 시작하는 헤드라인이 있을 경우 <toc> 태그의 변환이 정상적이지 않다. 모든 헤드라인을 전부 아울러 목차를 만든다. ** include 매크로의 처리 순서를 다른 매크로들과는 달리 하였기 때문에, 소스의 일관성이 떨어진다. : {{{#!vim perl sub WikiToHTML { ... $SaveNumUrlIndex = 0; $pageText =~ s/$FS//g; # Remove separators (paranoia) ### 다름 라인 추가 $pageText = &MacroIncludeSubst($pageText); ### if ($RawHtml) { ... } }}} : {{{#!vim perl sub MacroSubst { ... $txt =~ s/\&__LT__;RandomPage\((.*)\)\&__GT__;/&MacroRandom($1)/gei; ### 다음 라인 주석 처리 # $txt =~ s/\&__LT__;Include\((.*)\)\&__GT__;/&MacroInclude($1)/gei; ... }}} : {{{#!vim perl ### 다음 함수를 통채로 추가 sub MacroIncludeSubst { my ($txt) = @_; $txt =~ s/(^|\n)
([\r\f]*\n)/$1 . &MacroInclude($2) . $3/geim; return $txt; } }}} == Notes == ext1.48c 에서 소스 수정되었습니다.
표안에 인크루드를 하고 싶은데 안되네요. 아마 매크로앞뒤에 공백을 비롯한 문자열이 오면 안되기 때문에 그런 것 같은데 해결책은 없을까요?
:여기서 표는 html이 아니라 ||이런 ||식의 || 위키태그를 이용한 표를 말합니다.
어차피 안 될 겁니다. 인클루드를 먼저 하고 나서 표를 처리를 하기 때문에, "||"를 사용한 표는 한 행이 한 줄에 적혀야 되는데, 인클루드되는 페이지가 두 줄 이상이면 표를 인식 못하겠죠.
:저런... 그 문제를 피하기 위해서 인크루드를 할려고 했던 건데.. 여러 줄을 지원하는 테이블을 만들면 되겠네요. 지금 테이블처럼 복잡한 기능 넣지 말고, 기본적인 태그만 제대로 지원하면 할 수 있지 않을까요? [http://whitejames.com/wiki.cgi?%B8%B8%C8%AD%BE%D6%B4%CF 참고]. 결국 시작 태그, 중간 태그, 끝 태그를 따로 빼고, * 시작태그 - 멀티라인테이블 처리중이 아니면 table tr td, 처리중이면 /tr tr td * 중간태그 - /td td * 끝태그 - /tr * 테이블이 끝나면 /table 정도의 태그를 뿌려주면 되지 않을까 싶네요.
: 허억, 참고라고 적어주신 곳을 보니 참고가 아니라 이미 만들어져있군요. 냥날님이 소스공개해주시면 그만이겠는데요.
---- [[위키위키분류]]
UseModWiki소스수정/Include매크로
페이지로 돌아가기 |
다른 수정본 보기