12
15

https://mermaid.js.org/config/Tutorials.html

 

Tutorials | Mermaid

 

mermaid.js.org

๋งˆํฌ๋‹ค์šด ์ƒ์—์„œ mermaid ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋„ํ‘œ๋ฅผ ๋งค์šฐ ์ด์˜๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

ํ‹ฐ์Šคํ† ๋ฆฌ์—์„œ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ถ„๋“ค์€ https://choewy.tistory.com/155 ์˜ ๊ธ€์„ ์ฐธ์กฐํ•˜๋ฉด ๋œ๋‹ค.

 

ํ‹ฐ์Šคํ† ๋ฆฌ ์—๋””ํ„ฐ์—์„œ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ฉด html๋กœ ๋ Œ๋”๋ง๋˜๋Š”๋ฐ, mermaid๊ฐ€ javascript์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณผ์ •์„ ๋จผ์ € ๋ณด๋ฉด pre์˜ class ์ด๋ฆ„์ด mermaid ์ธ๊ฑธ ์žก์•„์„œ ์ฐจํŠธ๋กœ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>mermaid.initialize({startOnLoad:true});</script>

์ด๊ฑธ ํ‹ฐ์Šคํ† ๋ฆฌ ์Šคํ‚จ์˜ head ์•ˆ์— ๋„ฃ์–ด์ฃผ๋ฉด ๋ Œ๋”๋ง์ฒ˜๋ฆฌ๋Š” ๋๋‚ฌ๋‹ค.

 

๋ฌธ์ œ๋Š” ํ‹ฐ์Šคํ† ๋ฆฌ์˜ ์ฝ”๋“œ๋ธ”๋Ÿญ์€

<pre><code> </code></pre>

์ด๋Ÿฐ ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์—, pre์˜ class์ด๋ฆ„์ด ๋ถ™์„ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋‹ค. 

<pre class="mermaid">
            graph LR 
            A --- B 
            B-->C[fa:fa-ban forbidden] 
            B-->D(fa:fa-spinner);
    </pre>
            graph LR 
            A --- B 
            B-->C[fa:fa-ban forbidden] 
            B-->D(fa:fa-spinner);
    

mermaid๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด ์œ„ ์ฝ”๋“œ๋ฅผ HTML์ฝ”๋“œ๋ธ”๋Ÿญ ์‚ฝ์ž…์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์–ธ์ œ๊นŒ์ง€ ๋งค๋ฒˆ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†๋‹ค...

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

์•„์˜ˆ ์ฝ”๋“œ๋ธ”๋Ÿญ์˜ ์–ธ์–ด๋กœ Delphi๋ฅผ ์„ ํƒํ• ๋•Œ๋ฅผ mermaid๋กœ ๋ฐ”๊ฟ”๋ณด๋Š” ์ž‘์—…์„ ํ•ด๋ณด์ž. Delphi๋ผ๋Š” ์–ธ์–ด๋Š” ์•„์˜ˆ ์“ธ์ผ์ด ์—†์„ ๊ฒƒ ๊ฐ™์•„ ์ด๊ฑฐ๋กœ ์„ ํƒํ–ˆ๋‹ค.

document.addEventListener('DOMContentLoaded', () => {
  const elements = document.querySelectorAll('pre.delphi');

  for (const element of elements) {
    const div = document.createElement('div');
    div.innerHTML = element.textContent;
    div.className = 'mermaid';

    const pre = element.parentElement;
    pre.style.textAlign = 'center';
    pre.removeChild(element);
    pre.appendChild(div);
  }
});

๋‹ค๋ฅธ ๋ธ”๋กœ๊ทธ์—์„œ ์žˆ๋˜๊ฑธ ์กฐ๊ธˆ ์ˆ˜์ •ํ•ด๋ดค๋‹ค. pre ํƒœ๊ทธ์˜ class์ด๋ฆ„์ด delphi์ธ๊ฑธ ์žก๋Š” ์ฝ”๋“œ..๋ผ๊ณ  ์ดํ•ดํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด elements๊ฐ€ <code></code> ๋ฉ์–ด๋ฆฌ ๋“ค๋กœ ๋“ค์–ด๊ฐˆ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •์ด ๋” ํ•„์š”ํ•˜๋‹ค.

document.addEventListener('DOMContentLoaded', () => {
  const elements = document.querySelectorAll('pre.delphi');

  for (const element of elements) {
  	const codeElement = element.querySelector('code');
    const div = document.createElement('div');
    div.innerHTML = codeElement.textContent;
    div.className = 'mermaid';

    const pre = codeElement.parentElement;
    pre.style.textAlign = 'center';
    pre.removeChild(codeElement);
    pre.appendChild(div);
  }
});

์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑํ•ด๋ดค๋‹ค.

์ด์ œ ํ•œ๋ฒˆ ์ ์šฉํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

graph LR 
            A --- B 
            B-->C[fa:fa-ban forbidden] 
            B-->D(fa:fa-spinner);
graph LR             
A --- B             
B-->C[fa:fa-ban forbidden]             
B-->D(fa:fa-spinner);

์•„์ฃผ ์ž˜ ๋˜๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ ์šฉ๋ฐฉ๋ฒ•์€

<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {  
    const elements = document.querySelectorAll('pre.delphi');   
    for (const element of elements) {  	
        const codeElement = element.querySelector('code');    
        const div = document.createElement('div');    
        div.innerHTML = codeElement.textContent;    
        div.className = 'mermaid';     
        
        const pre = codeElement.parentElement;    
        pre.style.textAlign = 'center';    
        pre.removeChild(codeElement);    
        pre.appendChild(div);  
        }
    });
</script>

์ด ์ฝ”๋“œ๋ฅผ ํ‹ฐ์Šคํ† ๋ฆฌ <head></head> ํƒœ๊ทธ ์•ˆ์— ๋„ฃ๊ณ , ์•ˆ์“ฐ๋Š” ์ฝ”๋“œ๋ธ”๋Ÿญ ์–ธ์–ด๋ฅผ ์ง€์ •ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^
๋ฐ˜์‘ํ˜•
COMMENT