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

크라우니워드프로세서 기초도구 — 표고급.한선

개요

크라우니워드프로세서 기초도구 시리즈에 표(테이블) 고급 조작 도구 표고급.한선을 완전 한선씨로 신규 작성. 셀병합·행/열 삽입삭제·셀속성(테두리/정렬/배경)·열폭·셀주소파싱·표수식(SUM/AVG/CNT)·표정렬·직렬화v2 전부 구현.

무엇을 했는지

  • 데이터 표현: 표 = 단일 직렬화 문자열 "행수,열수~셀0|셀1|...~병합레코드;...~속성레코드;...~열폭0,열폭1,..." — 표를 불변 문자열로 취급해 "배열은 참조형" 별칭 함정을 원천 회피(내부 배열은 매 함수 호출마다 새로 파싱·생성).
  • 병합레코드 "시작행,시작열,끝행,끝열", 속성레코드 "행,열,종류,값"(종류=테두리/정렬/배경) 구분자 직렬화 설계.
  • 기존 완성 도구 서식런.한선에서 나누기/합치기 헬퍼를 Read 후 이식(가져오기 없이 코드 복사).
  • 함수 15개 명세 전부 구현 + 보조헬퍼 다수: 표생성/표셀값/표셀설정, 셀병합/병합해제, 행삽입/행삭제, 열삽입/열삭제(병합·속성 좌표 자동 시프트 포함), 셀테두리/셀정렬/셀배경(+조회), 열폭설정/자동폭, 셀주소파싱("B2"→[1,1], "AA1"→열26), 표수식(=SUM/AVG/CNT, "A1:A3" 범위), 표정렬(열 기준 숫자 버블정렬), 표직렬화v2/역직렬화, 검증.
  • 코드값(문자→코드포인트) 함수의 존재가 불확실하다는 가드레일 경고에 따라, 셀주소 열문자 파싱은 코드값 의존 없이 A~Z 26개 명시적 문자열 비교 테이블로 안전하게 구현.
  • 표정렬은 행 순서가 바뀌므로 행기반 병합/속성 레코드를 정렬 후 초기화하도록 설계(파일 주석에 제약 명기).

자체시험

검사: PASS 35/35 — 첫 컴파일·실행에서 전부 통과(추가 수정 불필요).

컴파일/실행

cd /Users/ef/CrownyOS/crownyc
./hanseonc_high /Users/ef/crowny-word/도구/표고급.한선 > /tmp/표고급.toau 2>/tmp/표고급.err
./crownyc run /tmp/표고급.toau

관련 파일 경로

  • /Users/ef/crowny-word/도구/표고급.한선 (신규, 이 작업 산출물)
  • 이식 참조: /Users/ef/crowny-word/도구/서식런.한선(나누기/합치기), /Users/ef/crowny-word/도구/커서선택.한선(자체시험 컨벤션)

크라우니코드

  • lookup search: "표"/"셀병합"/"표수식"/"직렬화" 4회 — 전부 MISS(표 도메인 패턴 미보유), 서식런.한선 기존 파일에서 나누기/합치기 헬퍼 이식으로 대체
  • learn add 3건: 셀병합범위, 셀주소파싱엑셀, 표수식범위계산

잔여 이슈

  • 셀/속성 값에 구분자(| ; ~ ,) 포함 시 이스케이프 미지원(설계상 제약, 파일 헤더 주석에 명기)
  • 표정렬 시 행기반 병합/속성이 소실됨(재정렬 후 재설정 필요) — 사용처에서 인지 필요
  • 대용량 표(행수*열수가 배열 1023 상한 근접)는 미검증 — 필요시 샤딩 설계 추가 검토