feat(774-1): 다시 긋기 = 중간 노드 고름으로 켬 · 다른 중간 노드에 이어야 끝

- 노드 속성 판 · 우클릭 = 중간 노드에 [다시 긋기](선 토막 고름의 [다시 긋기] 뺌) · B05 긋기 중 중간 노드 누름 = 그대로 켬
- 끝 = 같은 선 다른 중간 노드만(rejoinMiss) · 시작 노드 · 끝점 = 못 찍음 + 안내(계속 긋기) · 빈 곳 = 점 찍고 계속
- 고리: 시작 노드 · 이을 중간 노드 · 마우스 올린 중간 노드(paintRejoin · --draw-map-*) · 옛 구간 흐림(dim) 뺌
- 시험: test_771_2 에 끝 판정 · 중간 노드 대조 더함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-03 20:31:21 +09:00
co-authored by Claude Opus 5.5
parent ea6207d587
commit 2a67a7092d
7 changed files with 127 additions and 98 deletions
@@ -3,6 +3,7 @@
중간 노드에서 그은 점이 같은 선 다른 노드에 닿음 = 두 노드 사이 옛 구간을 새 점으로 갈음 · 한 줄 그대로 ·
거꾸로(앞 노드에 닿음) = 점 차례 뒤집어 넣음 · 같은 노드 = 까닭 글(꼴 그대로) · 끝점에 닿음 = 끝까지 갈음 ·
노드 기록 = 꼭짓점과 같은 길이.
774-1(요구 616) 끝 판정 `rejoinMiss` = 다른 중간 노드만 끝 · 시작 노드 · 끝점 = 계속 긋기 까닭 글 · 시작 = 중간 노드만.
./venv/Scripts/python.exe -m pytest resources/tester/test_771_2_rejoin_span.py -q
"""
@@ -36,6 +37,10 @@ writeFileSync(
tail: span.rejoinSpan(n, 0, 2, 4, [[300, 50]]),
recorded: span.rejoinSpan(n, 0, 3, 1, [[250, 50], [150, 50]], [L, S]),
same_text: span.REJOIN_SAME,
miss: [[2, 1], [2, 3], [2, 2], [2, 0], [2, 4], [1, 3]].map(([s, v]) => span.rejoinMiss(5, s, v)),
middle: [0, 1, 2, 3, 4].map((v) => span.isMiddleNode(5, v)),
tip_text: span.REJOIN_TIP,
hold_text: span.REJOIN_HOLD,
}),
);
"""
@@ -108,3 +113,12 @@ def test_backward_records(tmp_path: Path) -> None:
assert nodes[2] is None
assert nodes[3]["kind"] == "slope"
assert nodes[4]["kind"] == "free"
def test_end_only_other_middle_node(tmp_path: Path) -> None:
"""774-1 — 다른 중간 노드 = 끝(null) · 시작 노드 · 머리 · 꼬리 끝점 = 계속 긋기 글 · 시작 = 중간 노드만."""
r = _run_ts(tmp_path)
tip, hold = r["tip_text"], r["hold_text"]
assert r["miss"] == [None, None, hold, tip, tip, None]
assert "중간 노드" in tip and "중간 노드" in hold
assert r["middle"] == [False, True, True, True, False]