[첫화면으로]"UseModWiki소스수정/Anchor링크" 페이지의 변경 내역

마지막으로 [b]


현재 버전 . . . . 2012-2-24 1:23 am 수정한 사람: Raymundo [버그 수정]
21 번째 수정본 . . . . 2012-1-7 12:04 am 수정한 사람: Raymundo
7 번째 수정본 . . . . (수정) 2003-6-9 1:23 pm 수정한 사람: 거북이
 

변경사항 (가장 최근의 "일반적인 수정"부터) (다른 사용자에 의한 수정)

-145,9 +145,78
...
}}}
=== # 역링크 처리, 링크 변경 처리 ===
예를 들어 갑 페이지에 <code>[[을#앵커]]</code>란 링크가 있으면 이것을 링크로 처리해주지 못하는 문제가 있었다.
* Local:action=links""에서 갑 페이지에 있는 링크 중 을이 없음
* 을 페이지의 역링크 목록에 갑이 없음
* 을 페이지의 이름을 병으로 바꾸었을 때 이 링크가 자동으로 수정되지 않음
wiki.pl 수정: (diff 형식은 [https://github.com/gypark/UseModKr/compare/38ce42e3f2...106491f Comparing 38ce42e3f2...106491f for gypark's UseModKr - GitHub])
{{{#!vim perl
sub GetPageLinks {
...
             my $fl = $FreeLinkPattern;
             $text =~ s/\[\[$fl\|[^\]]+\]\]/push(@links, &FreeToNormal($1)), ' '/ge;
             $text =~ s/\[\[$fl\]\]/push(@links, &FreeToNormal($1)), ' '/ge;
# 두 줄 추가
             $text =~ s/\[\[$AnchoredFreeLinkPattern\|([^\]]+)\]\]/push(@links, &FreeToNormal($1)), ' '/ge;
             $text =~ s/\[\[$AnchoredFreeLinkPattern\]\]/push(@links, &FreeToNormal($1)), ' '/ge;
         }
         if ($WikiLinks) {
             $text =~ s/$LinkPattern/push(@links, &StripUrlPunct($1)), ' '/ge;
...
}
sub SubstituteTextLinks {
    ...
         $text =~
          s/\[\[$FreeLinkPattern\|([^\]]+)\]\]/&SubFreeLink($1,$2,$old,$new)/geo;
         $text =~ s/\[\[$FreeLinkPattern\]\]/&SubFreeLink($1,"",$old,$new)/geo;
# 세 줄 추가
         $text =~
          s/\[\[$AnchoredFreeLinkPattern\|([^\]]+)\]\]/&SubFreeLink($1,$3,$old,$new,$2)/geo;
         $text =~ s/\[\[$AnchoredFreeLinkPattern\]\]/&SubFreeLink($1,"",$old,$new,$2)/geo;
     }
     if ($BracketText) {  # Links like [URL text of link]
         $text =~ s/(\[$UrlPattern\s+([^\]]+?)\])/&StoreRaw($1)/geo;
    ...
}
 sub SubFreeLink {
# 다음 줄 수정
#    my ($link, $name, $old, $new) = @_;
+    my ($link, $name, $old, $new, $anchor) = @_;
     my ($oldlink);
     $oldlink = $link;
     ...
         $link = $oldlink;  # Preserve spaces if no match
     }
     $link = "[[$link";
# 세 줄 추가
     if ( defined $anchor and $anchor ne '' ) {
         $link .= "#$anchor";
     }
     if ($name ne "") {
         $link .= "|$name";
     }
     ...
}
}}}
== # 추가 업데이트 내역 ==
ext2.15 - Anchor 링크 패턴 정리. anchor 매크로 삭제
ext2.23b - 링크로 처리되지 않는 문제 해결
<mysign([[Raymundo]],2012-2-24 1:23 am)>
== # 사용자 의견 ==
이건 개선인지 개악인지 조금 모호한 것이...원래 앵커가 절대좌표(?)로 인식되었었는데 이제 상대좌표로 걸리게 됩니다. 누군가가 중간에 앵커를 삽입하거나 삭제하면 그 뒤의 놈들은 모두 영향을 받게 되지요. :)\\