log 2021-07-17
블로그 포팅 스크립트 테스트 - 구조 개선, 테스트 추가
테스트 케이스 추가하려니 태그 핸들러를 따로 만들어야 하고, 태그 핸들러를 따로 만들면 핸들러에서 따로 데이터를 받아야 하는데, 이 부분의 스텝들을 어떻게 할지 명확히 해야 한다.
태그 핸들러의 사용처는 두 가지다:
- 테스트 케이스에서 트리를 넣어서 태그핸들러 처리 후 태그 노드가 얻어져야 함
- 핸들러 트리에서 필요로 하는 데이터를 넣어주고, 태그 노드를 삭제하는 api 제공해야 함
생각해보면, 테스트를 위한 인터페이스를 만들 필요는 없다. 핸들러에서 어떻게 사용하는지만을 생각하면 된다. 이게 어려운건, 핸들러가 뭘 하는지 명확하게 몰라서 그런 듯하다. 핸들러는 트리에 대해 다음과 같은 처리를 한다:
- 타이틀이 있고 프론트매터가 없음을 확인, 있다면 변환하지 않는다. 맞다면 타이틀 정보를 저장하고 타이틀 노드를 제거한다.
- 태그 노드를 찾아 정보를 저장하고, toc에서 tags 항목, tags 헤딩, tags 노드를 트리에서 제거한다.
- 저장된 정보로부터 프론트매터를 생성한다.
테스트 케이스 추가 및 구조 개선 완료. 마지막으로 unified 플러그인에서 파싱하여 추출한 정보를 외부에 내보낼 방법이 없어서 고민하다가, 결국 지역 변수를 이용하여 해당 정보를 할당받은 다음 리턴하는 중간 함수를 만들어서 해결했다. (전역 변수 할당을 피하고자 함)
Comments