From 28e52e9ce03b8a6aef93f02c709eacbe89b39fd9 Mon Sep 17 00:00:00 2001 From: gm Date: Wed, 3 Jun 2026 01:30:11 +0900 Subject: [PATCH] =?UTF-8?q?feat(ui):=20JSON=EC=97=90=20nextSep/childSep/na?= =?UTF-8?q?meNewline=20=ED=8F=AC=ED=95=A8=20=EB=B0=8F=20=EB=B3=B5=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit toJSON() serNode에 nextSep, childSep, nameNewline 필드 추가. parseJsonSection에서 해당 필드 읽어 노드에 복원. JSON slim/full 양쪽 모두 포함됨 (값이 null이 아니므로 stripNulls 통과). Co-Authored-By: Claude Sonnet 4.6 --- ui/builder.html | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ui/builder.html b/ui/builder.html index 10e6210..abd40a2 100644 --- a/ui/builder.html +++ b/ui/builder.html @@ -852,7 +852,10 @@ function toJSON(slim=false){ footer:node.settings.footer??null, prefix:node.settings.prefix??null, suffix:node.settings.suffix??null, - attributes:attrs,children + attributes:attrs,children, + nextSep:node.nextSep??'blank', + childSep:node.childSep??'blank', + nameNewline:node.nameNewline??true, }); depth--; return r; @@ -957,6 +960,10 @@ function parseJsonSection(sec){ const mark=sec.attributes?.mark??''; const n=mkNode(mark, sec.content??''); + if(sec.nextSep!==undefined) n.nextSep=sec.nextSep; + if(sec.childSep!==undefined) n.childSep=sec.childSep; + if(sec.nameNewline!==undefined) n.nameNewline=sec.nameNewline; + if(sec.header) n.settings.header=sec.header; if(sec.footer) n.settings.footer=sec.footer; if(sec.prefix) n.settings.prefix=sec.prefix;