- CTNode에 6개 신규 필드 추가 - header : 머리글 (노드 블록 앞 텍스트) - footer : 꼬리글 (노드 블록 뒤 텍스트) - prefix : 접두사 (content 직전 인라인) - suffix : 접미사 (content 직후 인라인) - data_type : 값의 자료형 힌트 (DataType enum) - value : 해석된 값 (Any — str/int/float/bool/list/dict 등) - types.py: DataType enum 추가 (UNSET, STRING~CODE, CUSTOM) - node.py: full_text() 메서드 추가 (6개 필드 순서대로 조합) - tree.py: to_dict / from_dict 직렬화에 신규 필드 포함 - 테스트: test_node_fields.py 신규 추가 (15개 케이스) - 전체 테스트 42/42 통과
93 lines
3.9 KiB
Python
93 lines
3.9 KiB
Python
"""
|
|
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"
|
|
|
|
|
|
class DataType(Enum):
|
|
"""
|
|
CTNode.value 의 자료형 힌트.
|
|
|
|
파서·렌더러가 값을 해석할 때 참조하는 타입 태그입니다.
|
|
추후 타입이 추가될 수 있으며, 미지정 시 UNSET 을 사용합니다.
|
|
"""
|
|
|
|
UNSET = "unset" # 자료형 미지정 (기본값)
|
|
|
|
# ── 스칼라 ────────────────────────────────────────────────
|
|
STRING = "string" # 문자열
|
|
INTEGER = "integer" # 정수
|
|
FLOAT = "float" # 부동소수점
|
|
BOOLEAN = "boolean" # 참/거짓
|
|
NULL = "null" # 빈 값
|
|
|
|
# ── 날짜/시간 ─────────────────────────────────────────────
|
|
DATE = "date" # 날짜 (YYYY-MM-DD)
|
|
DATETIME = "datetime" # 날짜+시간 (ISO 8601)
|
|
TIME = "time" # 시간 (HH:MM:SS)
|
|
|
|
# ── 컬렉션 ────────────────────────────────────────────────
|
|
LIST = "list" # 배열/목록
|
|
DICT = "dict" # 키-값 맵
|
|
SET = "set" # 집합
|
|
|
|
# ── 텍스트 특화 ───────────────────────────────────────────
|
|
MARKDOWN = "markdown" # Markdown 서식 문자열
|
|
HTML = "html" # HTML 서식 문자열
|
|
JSON = "json" # JSON 직렬화 문자열
|
|
CODE = "code" # 소스 코드 문자열
|
|
|
|
# ── 확장 ──────────────────────────────────────────────────
|
|
CUSTOM = "custom" # 사용자 정의 타입
|