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:
55
ctstruct/types.py
Normal file
55
ctstruct/types.py
Normal file
@@ -0,0 +1,55 @@
|
||||
"""
|
||||
ctstruct/types.py
|
||||
노드 타입 정의 모듈
|
||||
"""
|
||||
|
||||
from enum import Enum, auto
|
||||
|
||||
|
||||
class NodeType(Enum):
|
||||
"""CTStruct 트리 노드 타입 정의."""
|
||||
|
||||
# ── 구조 노드 ────────────────────────────────────────────
|
||||
ROOT = auto() # 트리의 최상위 루트
|
||||
DOCUMENT = auto() # 문서 단위
|
||||
SECTION = auto() # 섹션 (헤딩 + 하위 내용 묶음)
|
||||
|
||||
# ── 블록 노드 ────────────────────────────────────────────
|
||||
HEADING = auto() # 제목 (level 1~6)
|
||||
PARAGRAPH = auto() # 문단
|
||||
LIST = auto() # 목록 컨테이너 (ordered / unordered)
|
||||
LIST_ITEM = auto() # 목록 항목
|
||||
TABLE = auto() # 표 컨테이너
|
||||
TABLE_ROW = auto() # 표 행
|
||||
TABLE_CELL = auto() # 표 셀
|
||||
CODE_BLOCK = auto() # 코드 블록
|
||||
BLOCKQUOTE = auto() # 인용구
|
||||
DIVIDER = auto() # 구분선
|
||||
|
||||
# ── 인라인 노드 ──────────────────────────────────────────
|
||||
TEXT = auto() # 순수 텍스트
|
||||
BOLD = auto() # 굵게
|
||||
ITALIC = auto() # 기울임
|
||||
CODE = auto() # 인라인 코드
|
||||
LINK = auto() # 하이퍼링크
|
||||
IMAGE = auto() # 이미지
|
||||
|
||||
# ── 메타 노드 ────────────────────────────────────────────
|
||||
METADATA = auto() # 문서 메타데이터 (frontmatter 등)
|
||||
ANNOTATION = auto() # 주석 / 노트
|
||||
CUSTOM = auto() # 사용자 정의 확장 노드
|
||||
|
||||
|
||||
class ListStyle(Enum):
|
||||
"""목록 스타일."""
|
||||
UNORDERED = "unordered"
|
||||
ORDERED = "ordered"
|
||||
TASK = "task"
|
||||
|
||||
|
||||
class Alignment(Enum):
|
||||
"""표 셀 정렬."""
|
||||
LEFT = "left"
|
||||
CENTER = "center"
|
||||
RIGHT = "right"
|
||||
NONE = "none"
|
||||
Reference in New Issue
Block a user