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> ํ๊ทธ ์์ ๋ฃ๊ณ , ์์ฐ๋ ์ฝ๋๋ธ๋ญ ์ธ์ด๋ฅผ ์ง์ ํด์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^