← 목록
기타 2026-07-12 3KB 읽기 2분

크라우니워드프로세서 기초도구 — 머리글바닥글.한선

개요

크라우니워드프로세서 기초도구 시리즈의 "머리글바닥글" 도메인을 완전 한선씨로 작성. 페이지 머리글/바닥글 텍스트·정렬·필드치환({페이지}{총페이지}{제목}{날짜})·홀짝다르게·첫페이지다르게·렌더링·높이계산·직렬화를 다룬다.

무엇을 했는지

  • 상태를 14요소 배열(참조형)로 설계: 기본 머리글/바닥글 텍스트+정렬, 홀짝다르게 플래그+짝수 오버라이드, 첫페이지다르게 플래그+첫페이지 오버라이드.
  • 구현 함수(15개 핵심 + 보조):
  • 상태생성 · 머리글설정 · 바닥글설정 · 머리글조회/머리글정렬조회/바닥글조회/바닥글정렬조회
  • 필드치환(텍스트,페이지,총페이지,제목,날짜) — {페이지}{총페이지}{제목}{날짜} 순차 치환
  • 홀짝다르게설정 · 첫페이지다르게설정
  • 머리글렌더/바닥글렌더(페이지n → 확정 텍스트, 우선순위: 첫페이지 > 홀짝 > 기본)
  • 높이계산(글꼴크기 기반, 문단배치.한선 줄높이 로직 이식)
  • 필드목록 · 필드검증(미지원 필드/닫히지 않은 중괄호 검출)
  • 삭제(6종 대상 텍스트 비움) · 직렬화/역직렬화("|" 구분, 값 내 "|"는 "%7C" 이스케이프)
  • 자체시험 30개 assert 전부 PASS (확인(이름,실제,기대) 헬퍼).
  • 실측 함정 재현+수정: 최초 작성 시 통과 = 통과 + 확인(...) 인라인 누산 패턴을 30곳 전부 사용 → 컴파일·실행은 성공했지만 개별 PASS는 다 찍히는데 합계만 "PASS 1/30"으로 소실(기존 메모리 feedback의 "누산=누산+함수호출() 인라인 금지" 트랩 실측 재확인). 변수 rN = 확인(...); 통과 = 통과 + rN 패턴으로 전량 수정 후 "PASS 30/30" 확정.
  • 관련 파일

    • /Users/ef/crowny-word/도구/머리글바닥글.한선 (신규 작성)
    • 이식 참조: /Users/ef/crowny-word/도구/문단배치.한선(줄높이 로직), /Users/ef/crowny-word/도구/문서파일.한선(전체치환류 패턴 참조)
    • 컴파일: /tmp/머리글바닥글.toau

    크라우니코드 학습

    • lookup/search 2회(HIT 0건, 무관 결과만) → 전량 신규 생성(15+함수)
    • learn add 4건: hanseon_필드치환_플레이스홀더치환, hanseon_머리글렌더_첫페이지홀짝우선순위, hanseon_치환_전체치환헬퍼, hanseon_직렬화역직렬화_파이프이스케이프

    잔여 이슈

    • 직렬화 값에 리터럴 %7C 문자열이 원래 포함돼 있으면 역직렬화 시 |로 오복원되는 알려진 한계(실무상 헤더/바닥글 텍스트엔 거의 없음, 필요 시 더 희귀한 이스케이프 시퀀스로 교체 가능).
    • 다른 9개 기존 도구 파일(텍스트버퍼 등)은 수정하지 않음(가드레일 준수).