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:
25
ctstruct/renderers/json_renderer.py
Normal file
25
ctstruct/renderers/json_renderer.py
Normal file
@@ -0,0 +1,25 @@
|
||||
"""
|
||||
ctstruct/renderers/json_renderer.py
|
||||
CTTree → JSON 렌더러
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from ..tree import CTTree
|
||||
from .base import BaseRenderer
|
||||
|
||||
|
||||
class JSONRenderer(BaseRenderer):
|
||||
"""CTTree 를 JSON 문자열로 직렬화."""
|
||||
|
||||
def __init__(self, indent: int = 2, ensure_ascii: bool = False) -> None:
|
||||
self.indent = indent
|
||||
self.ensure_ascii = ensure_ascii
|
||||
|
||||
def render(self, tree: CTTree) -> str:
|
||||
return json.dumps(
|
||||
tree.to_dict(),
|
||||
indent=self.indent,
|
||||
ensure_ascii=self.ensure_ascii,
|
||||
)
|
||||
Reference in New Issue
Block a user