- 전역 namesPerLine 제거 → 그룹별 개별 설정으로 전환
- 각 이름 그룹 카드에 두 가지 옵션 추가:
- 구분자: 공백 / ", " / " / " / 줄바꿈(↵) 칩 + 직접 입력
- 한 줄 N개: 0=제한없음, 줄바꿈 모드 시 자동 비활성화
- mkGrp() 헬퍼로 그룹 기본값(sep=' ', namesPerLine=0) 통일
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 구분자 설정 카드에 '한 줄 N개' 입력란 추가
- 0 = 제한 없음 (기존 동작 유지)
- N > 0 이면 이름을 N개씩 줄 분할, 카테고리 prefix는 첫 줄에만
- localStorage 저장/복원 포함
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- JSONRenderer(slim=True): null·기본값·빈 attributes 필드 제거
- EmojiMarkupRenderer: CTTree → 이모지 마크업 텍스트 왕복 변환 지원
- title_mark / section_marks 커스터마이징 가능
- names_per_line 옵션으로 줄당 이름 수 제한
- EmojiMarkupParser: 구분자를 생성자 파라미터로 주입 가능
- section_marks 길이 제한 없음 (임의 깊이 섹션 지원)
- 긴 마커 우선 매칭으로 prefix 충돌 방지
- 테스트 39개 추가 (커스텀 구분자·렌더러·slim 검증)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ✅ → root title, 🔹 → SECTION(level=1), 🔸 → SECTION(level=2)
- (카테고리) 이름들 → LIST with category attribute + LIST_ITEM children
- 카테고리 없는 이름 줄은 빈 줄/새 섹션 전까지 동일 LIST로 묶음
- 22개 테스트 추가 (구조, 명단, 엣지케이스)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 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 통과