diff options
| author | Mistivia <i@mistivia.com> | 2025-02-05 15:39:41 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-02-05 15:39:41 +0800 |
| commit | 365c471cfea10e781b87a63e5b6b4e28a17e2bfc (patch) | |
| tree | 310414e9ada881446413ecebb15646fb06a47ed8 /src/utils.js | |
| parent | 473e284e3eba96a4845c4a1a6c155dfac1f7cb68 (diff) | |
impl main panel
Diffstat (limited to 'src/utils.js')
| -rw-r--r-- | src/utils.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/utils.js b/src/utils.js index e69de29..05e519d 100644 --- a/src/utils.js +++ b/src/utils.js @@ -0,0 +1,48 @@ +function parseYdk(ydkContent) { + const lines = ydkContent.split('\n'); + const deck = { + main: [], + extra: [], + side: [], + }; + let currentSection = null; + for (const line of lines) { + const trimmedLine = line.trim(); + if (!trimmedLine || trimmedLine.startsWith('#') && !['#main', '#extra'].includes(trimmedLine)) { + continue; + } + if (trimmedLine === '#main') { + currentSection = 'main'; + } else if (trimmedLine === '#extra') { + currentSection = 'extra'; + } else if (trimmedLine === '!side') { + currentSection = 'side'; + } else if (currentSection) { + const cardId = parseInt(trimmedLine, 10); + if (!isNaN(cardId)) { + deck[currentSection].push(String(cardId)); + } + } + } + return deck; +} + +function genYdk(deck) { + let ydkContent = '#created by ygodeck.mistivia.com\n'; + + ydkContent += '#main\n'; + ydkContent += deck.main.join('\n') + '\n'; + + ydkContent += '#extra\n'; + ydkContent += deck.extra.join('\n') + '\n'; + + ydkContent += '!side\n'; + ydkContent += deck.side.join('\n') + '\n'; + + return ydkContent; +} + +export { + parseYdk, + genYdk, +}; |
