From 7bfa3cc75b7401cef9c17509e5544407e9fcfc2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Tue, 17 Mar 2026 13:57:52 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[rd]=20=ED=81=B4=EC=BD=94=E2=86=92?= =?UTF-8?q?=EC=8A=AC=EB=9E=99=20=EB=B3=80=ED=99=98=EA=B8=B0=20=ED=96=89?= =?UTF-8?q?=EA=B0=84=20=EA=B0=80=EB=8F=85=EC=84=B1=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 표(table) 행을 제외한 일반 행 사이에 빈 줄 추가 - 제목, 구분선 뒤에도 빈 줄 삽입 - 표 영역은 기존처럼 밀집 유지 --- .../views/rd/cc-to-slack/index.blade.php | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/resources/views/rd/cc-to-slack/index.blade.php b/resources/views/rd/cc-to-slack/index.blade.php index 676a5c7e..e4285069 100644 --- a/resources/views/rd/cc-to-slack/index.blade.php +++ b/resources/views/rd/cc-to-slack/index.blade.php @@ -169,6 +169,7 @@ function convertToSlack(text) { let result = []; let inCodeBlock = false; let codeLines = []; + let inTable = false; for (let i = 0; i < lines.length; i++) { let line = lines[i]; @@ -176,6 +177,7 @@ function convertToSlack(text) { if (line.trimStart().match(/^```/)) { if (!inCodeBlock) { inCodeBlock = true; + inTable = false; codeLines = []; continue; } else { @@ -193,6 +195,28 @@ function convertToSlack(text) { continue; } + // 표 구분선(|---|---|) 스킵 + if (line.trim().match(/^\|[\s\-:|]+\|$/)) { + inTable = true; + continue; + } + + // 표 행 + if (line.trim().match(/^\|.*\|$/)) { + inTable = true; + let cells = line.split('|').filter(c => c.trim() !== ''); + result.push(cells.map(c => c.trim()).join(' | ')); + continue; + } + + // 표 영역 종료 후 빈 줄 삽입 + if (inTable) { + inTable = false; + if (result.length > 0 && result[result.length - 1] !== '') { + result.push(''); + } + } + if (line.trim() === '') { if (result.length > 0 && result[result.length - 1] !== '') { result.push(''); @@ -202,27 +226,20 @@ function convertToSlack(text) { if (line.trim().match(/^[-]{3,}$/)) { result.push('———'); + result.push(''); continue; } let headingMatch = line.match(/^(#{1,6})\s+(.+)$/); if (headingMatch) { result.push('*' + headingMatch[2].trim() + '*'); - continue; - } - - if (line.trim().match(/^\|[\s\-:|]+\|$/)) { - continue; - } - - if (line.trim().match(/^\|.*\|$/)) { - let cells = line.split('|').filter(c => c.trim() !== ''); - result.push(cells.map(c => c.trim()).join(' | ')); + result.push(''); continue; } line = convertInlineMarkdown(line); result.push(line); + result.push(''); } if (inCodeBlock && codeLines.length > 0) {