From 8b0842eb80642742d9050e0ccbeb1cbbbed417db Mon Sep 17 00:00:00 2001 From: gm Date: Wed, 3 Jun 2026 02:01:24 +0900 Subject: [PATCH] =?UTF-8?q?feat(ui):=20prefix/suffix=EC=97=90=EC=84=9C=20\?= =?UTF-8?q?n=20\t=20\r=20=EC=9D=B4=EC=8A=A4=EC=BC=80=EC=9D=B4=ED=94=84=20?= =?UTF-8?q?=EC=8B=9C=ED=80=80=EC=8A=A4=20=EC=A7=80=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit unesc(): 입력값 \n→실제줄바꿈, \t→탭, \r→CR reesc(): 상태값을 표시용 이스케이프 문자열로 역변환 renderSetting 입력 필드에 적용, placeholder에 사용법 표시. Co-Authored-By: Claude Sonnet 4.6 --- ui/builder.html | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ui/builder.html b/ui/builder.html index e6d548e..2f320f2 100644 --- a/ui/builder.html +++ b/ui/builder.html @@ -473,6 +473,9 @@ function removeAttr(nid, key){ function refresh(){ rebuildMaps(); renderPanel(); updatePreview(); save(); } function focusNew(sel){ setTimeout(()=>{ const els=document.querySelectorAll(sel); if(els.length) els[els.length-1].focus(); },40); } function esc(s){ return String(s??'').replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"') } +// 입력값의 \n \t → 실제 문자 / 실제 문자 → 표시용 이스케이프 +function unesc(s){ return s.replace(/\\n/g,'\n').replace(/\\t/g,'\t').replace(/\\r/g,'\r') } +function reesc(s){ return s.replace(/\r/g,'\\r').replace(/\n/g,'\\n').replace(/\t/g,'\\t') } // ════════════════════════════════════════════════════════ // 렌더링 @@ -616,8 +619,8 @@ function renderSetting(nid, key, val){ return `
${key} - +
`; }