테이블 정렬 방식 개선 및 rowspan 기능 추가
- || 를 사용하여 테이블을 만들 때, 테이블 안의 텍스트가 항상 가운데 정렬만 되었다.
- 테이블 내의 셀마다 별도로 정렬 방식을 지정할 수 있게 하고, rowspan 을 원하는 값을 지정할 수 있게 했다.
- 사용법 - |(| 또는 < 또는 >)[v[숫자]]
** 자세한 내용은 [[표만들기]]를 참조하라.
* 기존에 수정했던 패치가, 비슷한 코드가 세 번씩 반복되는 터라 다시 수정할 때 상당히 번거로왔다. 2002년11월27일 새로 수정
** <nowiki>|v 는 사용할 수 없게 되었다.
- 부작용:
- 테이블 내에 들어가는 텍스트에 부등호 등이 들어가면 제대로 출력되지 않을 수 있으니, || 등의 구분자와 셀에 들어가는 텍스트 사이에 공백을 두라.
- 웹브라우저가 복잡한 표를 표시하지 못한다면 예상치 못한 출력이 나타날 수 있다.
-
sub CommonMarkup {
...
if ($doLines) {
...
if ($UseHeadings) {
s/(^|\n)\s*(\=+)\s+([^\n]+)\s+\=+/&WikiHeading($1, $2, $3)/geo;
my %td_align = ("&__LT__;", "left", "&__GT__;", "right", "|", "center");
s/((\|\|)*)(\|(&__LT__;|&__GT__;|\|)((v(\d*))?))/"<\/TD><TD align=\"$td_align{$4}\" COLSPAN=\""
. ((length($1)\/2)+1) . ((length($5))?"\" ROWSPAN=\"" . ((length($7))?"$7":"2"):"") . "\">"/ge if $TableMode;
}
}
...
}
-
sub WikiLinesToHtml {
my ($pageText) = @_;
my ($pageHtml, @htmlStack, $code, $depth, $oldCode);
my ($tag);
my %td_align = ("&__LT__;", "left", "&__GT__;", "right", "|", "center");
...
foreach (split(/\n/, $pageText)) {
...
} elsif (/^[ \t].*\S/) {
$code = "PRE";
$depth = 1;
} elsif (s/^((\|\|)*)(\|(&__LT__;|&__GT__;|\|)((v(\d*))?))(.*)\|\|\s*$/"<TR VALIGN='CENTER' ALIGN='CENTER'>"
. "<TD align=\"$td_align{$4}\" colspan=\""
. ((length($1)\/2)+1) . ((length($5))?"\" ROWSPAN=\"" . ((length($7))?"$7":"2"):"") . "\">"
. $8 . "<\/TD><\/TR>\n"/e) {
$code = 'TABLE';
$TableMode = 1;
$depth = 1;
} elsif (/^IMG:(.*)$/) {
StoreImageTag($1);
...
}
...
}
- 위에서 등장하는 "&__LT__;" 와 "&__GT__;" 는 {{{ }}} 태그, 즉 사용자입력을그대로출력하기를 지원하기 위하여 도입된 문자열이다. 저 문자열을 처음 본다면, 또는 자신이 가지고 있는 wiki.pl 내에 저런 문자열이 없다면, 저 문자열 대신에 각각 "<" 와 ">" 를 넣어야 된다.
위키위키분류