[첫화면으로]UseModWiki소스수정/StoreRaw함수

마지막으로 [b]

1. StoreRaw() 함수 수정
1.1. 패치 이유
1.2. 사용법
1.3. 부작용
1.4. wiki.pl 수정
1.5. 추가 업데이트 내역
1.6. 사용자 의견

1. StoreRaw() 함수 수정

wiki.pl 내의 StoreRaw 함수를 수정한다. 그 이유는 위키소스 수정하는 사람들에게만 관심 있을 내용. :-)

1.1. 패치 이유

원래 이 함수의 코드가
1  sub StoreRaw {
2      my ($html) = @_;
3
4      $SaveUrl{$SaveUrlIndex} = $html;
5      return $FS . $SaveUrlIndex++ . $FS;
6  }
이고, 인자로 들어온 텍스트를 따로 %SaveUrl 해쉬변수에 저장해두고, 대신 원래의 텍스트에는 $FS기호와 숫자를 넣어준 후 나중에 RestoreSavedText 에서는 그 번호를 보고 원래의 텍스트를 복원한다...는 아이디어인데,

인덱스로 쓰이는 $SavedUrlIndex 를 0으로 초기화하는 루틴이 WikiToHTML 함수에 있다. 이 함수는 페이지 출력을 할 때는 꼭 불리기 때문에 별 문제가 없는데, 만일 WikiToHTML을 부르는 일 없이 StoreRaw를 부르는 상황이 되면 문제가 된다. 즉 첫번째 인덱스는 0이 아니라 ""가 되고, 정작 리턴할 때는 "++"기호 때문에 그제서야 숫자로 취급된다. 따라서 제일 처음 저장된 텍스트는 복구를 하지 못하게 된다.

ext1.110에서 /부등호표기를 수정하면서, StoreRaw를 사용하다보니 이게 문제가 되었다.

1.2. 사용법

사용자는 신경쓸 것 없음

1.3. 부작용

1.4. wiki.pl 수정

그래서, 저 함수를 다음과 같이 고친다.
sub StoreRaw {
    my ($html) = @_;

    $SaveUrl{++$SaveUrlIndex} = $html;          # "++"가 이쪽에
    return $FS . $SaveUrlIndex . $FS;           # 여기서는 삭제
}

이러면 텍스트를 저장할 때 반환되는 인덱스가 0이 아니라 1부터 시작한다는 것 외에는 아무런 차이가 없기 때문에, 부작용도 없을 것으로 생각함

SavedUrlIndex를 0으로 초기화하는 라인을 밖으로 빼거나 다른 함수로 옮길까 싶기도 했는데, 위키 소스의 함수들이 불리는 순서가 상황에 따라 달라지다보니 적당한 위치를 찾기가 힘들었음.

1.5. 추가 업데이트 내역

1.6. 사용자 의견

이름:  
Homepage:
내용:
 

위키위키분류

마지막 편집일: 2007-2-9 5:57 pm (변경사항 [d])
983 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기