diff --git a/web-ui/html/workshop-app.html b/web-ui/html/workshop-app.html index 7ea65cd..0353b05 100644 --- a/web-ui/html/workshop-app.html +++ b/web-ui/html/workshop-app.html @@ -1337,13 +1337,27 @@ function renderMd(text){ const items=grp.split('\n').map(line=>'
  • '+line.replace(/^[-*]\s+/,'')+'
  • ').join(''); return lead+''; }); + // 표 — 연속하는 파이프 라인(구분행 |---| 포함)을 로. 표 지원이 없어 파이프 문자열이 + // 평문으로 뭉개져 한 줄에 다 붙어 보였다(09-24 실측: 카메라 모듈 스펙 표가 그대로 복사됨). + // 구분행이 없으면 표가 아니라고 보고 그대로 둔다. + s=s.replace(/(?:\|.*\n?)+/g, grp=>{ + const lines=grp.replace(/\n$/,'').split('\n').filter(l=>l.trim()); + if(lines.length<2 || !/^\|[\s:|-]+$/.test(lines[1])) return grp; + const mkRow=(line,tag)=>{ + const cs=line.replace(/^\s*\||\|\s*$/g,'').split('|') + .map(c=>'<'+tag+' style="border:1px solid var(--rb-border,#d5d0c8);padding:2px 8px;text-align:left;font-weight:'+(tag==='th'?'600':'400')+'">'+c.trim()+'').join(''); + return ''+cs+''; + }; + return '
    ' + +mkRow(lines[0],'th')+lines.slice(2).map(l=>mkRow(l,'td')).join('')+'
    '; + }); // 단락 — 빈 줄 단위로 split. 이미 블록 태그(

    /