feat: initial CTStruct framework

- CTNode: 트리 기본 단위 (전위/후위/BFS 순회, 탐색, 분리)
- CTTree: 트리 컨테이너 (빌더 API, TOC, filter/map/merge)
- NodeType: 구조/블록/인라인/메타 노드 타입 Enum
- MarkdownParser: Markdown → CTTree 파서
- MarkdownRenderer: CTTree → Markdown 렌더러
- JSONRenderer: CTTree → JSON 직렬화
- 27개 단위/통합 테스트 전체 통과
This commit is contained in:
2026-05-30 20:40:28 +09:00
commit 6e3cd19b55
38 changed files with 1695 additions and 0 deletions

31
ctstruct/parsers/base.py Normal file
View File

@@ -0,0 +1,31 @@
"""
ctstruct/parsers/base.py
파서 추상 베이스 클래스
"""
from abc import ABC, abstractmethod
from ..tree import CTTree
class BaseParser(ABC):
"""
모든 텍스트 파서의 공통 인터페이스.
구현 클래스는 parse() 메서드만 오버라이드하면 됩니다.
"""
@abstractmethod
def parse(self, text: str) -> CTTree:
"""
텍스트를 파싱하여 CTTree 반환.
Args:
text: 파싱할 원문 텍스트
Returns:
구조화된 CTTree 객체
"""
...
def __call__(self, text: str) -> CTTree:
return self.parse(text)