- 문자를 기다리는 단계(TEXT · MTEXT · 표 칸 · 지시선)에서 숨은 input 에 초점 · compositionupdate/end 로 글자 받음 - 조합 중 키(isComposing · 229 · Process)는 단축키 처리에서 건너뜀 · 명령줄도 같음 - 명령 단계는 초점을 풀어 한글 자판이어도 영문 명령 그대로 - 입력 해석 패턴을 input-patterns.ts 로 나눔(700줄 상한) - 검증 창구 entities 에 label · 시나리오 ui_checks/44-8_CAD_한글입력.js Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UoSr2sqvYtBf1dtQdus88s
18 lines
938 B
TypeScript
18 lines
938 B
TypeScript
/** 명령 입력 해석 — 숫자 · 좌표 · 극좌표 꼴 */
|
|
import { Point } from '@flatten-js/core';
|
|
|
|
export const NUMBER_REGEXP = /^[0-9]+([.][0-9]+)?$/;
|
|
/** 부호 있는 실수 한 개 (좌표는 음수가 될 수 있다) */
|
|
const SIGNED = '(-?[0-9]+(?:[.][0-9]+)?)';
|
|
export const ABSOLUTE_POINT_REGEXP = new RegExp(`^${SIGNED}[ ]*,[ ]*${SIGNED}$`);
|
|
export const RELATIVE_POINT_REGEXP = new RegExp(`^@${SIGNED}[ ]*,[ ]*${SIGNED}$`);
|
|
/** 극좌표 — 거리<각도(도). `@`가 붙으면 직전 점 기준 */
|
|
export const ABSOLUTE_POLAR_REGEXP = new RegExp(`^${SIGNED}[ ]*<[ ]*${SIGNED}$`);
|
|
export const RELATIVE_POLAR_REGEXP = new RegExp(`^@${SIGNED}[ ]*<[ ]*${SIGNED}$`);
|
|
|
|
/** 거리·각도(도)를 x·y 변위로 바꾼다 */
|
|
export function polarToPoint(distance: number, degrees: number): Point {
|
|
const radians = (degrees * Math.PI) / 180;
|
|
return new Point(distance * Math.cos(radians), distance * Math.sin(radians));
|
|
}
|