diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-04-14 20:59:17 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-04-16 14:29:30 -0300 |
commit | 3453dc831989829f996a2ef3cefa408b94ca70d6 (patch) | |
tree | 06a1e5a71559d47bf937a6a755b5859148195db5 /src/common-util | |
parent | 5219733b44256f0cdc393e2e2597306545a45eea (diff) |
data: CommentaryEntry
Fully integrated, all in one commit! Wow!
Diffstat (limited to 'src/common-util')
-rw-r--r-- | src/common-util/wiki-data.js | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/common-util/wiki-data.js b/src/common-util/wiki-data.js index 0aa18ddb..37f5d69e 100644 --- a/src/common-util/wiki-data.js +++ b/src/common-util/wiki-data.js @@ -107,6 +107,35 @@ export const commentaryRegexCaseSensitiveOneShot = export const oldStyleLyricsDetectionRegex = /^<i>.*:<\/i>/m; +export function matchContentEntries(sourceText, caseSensitiveRegex) { + const matchEntries = []; + + let previousMatchEntry = null; + let previousEndIndex = null; + + for (const {0: matchText, index: startIndex, groups: matchEntry} + of sourceText.matchAll(caseSensitiveRegex)) { + if (previousMatchEntry) { + previousMatchEntry.body = sourceText.slice(previousEndIndex, startIndex); + } + + matchEntries.push(matchEntry); + + previousMatchEntry = matchEntry; + previousEndIndex = startIndex + matchText.length; + } + + if (previousMatchEntry) { + previousMatchEntry.body = sourceText.slice(previousEndIndex); + } + + return matchEntries; +} + +export function matchCommentaryEntries(sourceText) { + return matchContentEntries(sourceText, commentaryRegexCaseSensitive) +} + export function filterAlbumsByCommentary(albums) { return albums .filter((album) => [album, ...album.tracks].some((x) => x.commentary)); |