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

편집연산.한선 — 텍스트 내 '|' 문자 이스케이프 보강

개요

/Users/ef/crowny-word/도구/편집연산.한선의 연산 레코드("삽입|행|열|텍스트" / "삭제|시작행|시작열|끝행|끝열|텍스트")가 텍스트 필드 안에 구분자 |가 들어오면 분리파이프가 잘못 분해하는 문제(파일 주석에 "범위 밖"으로 명기돼 있던 사양 갭)를 보강했다.

무엇을 했는지

  1. 레코드이스케이프(s) / 레코드역이스케이프(s) 함수 추가.
- 규약: ~를 이스케이프 문자로 사용. |~1, ~~2. 문자 단위 순회로 정확히 왕복(역변환) 가능.
  1. 연산만들기삽입 / 연산만들기삭제에서 직렬화 시 텍스트 필드를 레코드이스케이프로 보강.
  2. 연산적용 / 연산역에서 분리파이프 파싱 후 텍스트 필드를 레코드역이스케이프로 복원.
- 연산역은 역이스케이프된 원문 텍스트로 길이(글자수)를 계산해 새 연산을 만들기 때문에, 이스케이프된 문자열 길이가 아니라 원문 길이 기준으로 정확히 동작.
  1. 기존 자체시험 23개(T1~T15) 전부 유지 + |/~ 포함 텍스트 왕복 assert 7개(T16~T22) 추가 — 총 30개.
- T16/T17: 이스케이프 단건 변환(파이프/물결) - T18: 이스케이프→역이스케이프 왕복(혼합 문자) - T19/T20: 연산적용(삽입) 결과에 파이프/물결 텍스트가 원문 그대로 삽입되는지 - T21/T22: 삽입/삭제 각각 연산역 왕복(파이프+물결 혼합 텍스트)까지 버퍼 동일성 검증

결과

  • 컴파일: ./hanseonc_high 편집연산.한선 > /tmp/편집연산.toau — 성공(7453 큐브)
  • 실행: ./crownyc run /tmp/편집연산.toauPASS 30/30 (회귀 없음, 이전 23/23 전부 유지)

관련 파일

  • /Users/ef/crowny-word/도구/편집연산.한선

크라우니코드 학습

  • lookup 사전조회: "이스케이프" 검색 → HIT:학습DB (JSON/네이티브/템플릿 이스케이프 기존 패턴, 문자단위 순회 스타일 확인 후 동일 스타일로 작성)
  • learn add: 레코드이스케이프_파이프물결치환 등록 (별칭: 레코드이스케이프)

잔여 이슈

  • 다중행(개행이 걸치는) 삽입/삭제는 이번 파일 범위 밖으로 여전히 미지원(파일 주석에 명시, 별도 처리 필요).
  • 연산적용의 삭제 분기는 텍스트 필드를 버퍼 조작에 쓰지 않으므로 역이스케이프 불필요 상태 유지(연산역에서만 사용).