« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/composite
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/composite')
-rw-r--r--src/data/composite/wiki-data/withParsedLyricsEntries.js35
1 files changed, 31 insertions, 4 deletions
diff --git a/src/data/composite/wiki-data/withParsedLyricsEntries.js b/src/data/composite/wiki-data/withParsedLyricsEntries.js
index 28e4c9b5..d13bfbaa 100644
--- a/src/data/composite/wiki-data/withParsedLyricsEntries.js
+++ b/src/data/composite/wiki-data/withParsedLyricsEntries.js
@@ -1,8 +1,8 @@
 import {input, templateCompositeFrom} from '#composite';
-import find from '#find';
 import {stitchArrays} from '#sugar';
 import {isLyrics} from '#validators';
-import {commentaryRegexCaseSensitive} from '#wiki-data';
+import {commentaryRegexCaseSensitive, oldStyleLyricsDetectionRegex}
+  from '#wiki-data';
 
 import {
   fillMissingListItems,
@@ -11,10 +11,25 @@ import {
   withUnflattenedList,
 } from '#composite/data';
 
+import inputSoupyFind from './inputSoupyFind.js';
 import processContentEntryDates from './processContentEntryDates.js';
 import withParsedContentEntries from './withParsedContentEntries.js';
 import withResolvedReferenceList from './withResolvedReferenceList.js';
 
+function constituteLyricsEntry(text) {
+  return {
+    artists: [],
+    artistDisplayText: null,
+    annotation: null,
+    date: null,
+    secondDate: null,
+    dateKind: null,
+    accessDate: null,
+    accessKind: null,
+    body: text,
+  };
+}
+
 export default templateCompositeFrom({
   annotation: `withParsedLyricsEntries`,
 
@@ -25,6 +40,19 @@ export default templateCompositeFrom({
   outputs: ['#parsedLyricsEntries'],
 
   steps: () => [
+    {
+      dependencies: [input('from')],
+      compute: (continuation, {
+        [input('from')]: lyrics,
+      }) =>
+        (oldStyleLyricsDetectionRegex.test(lyrics)
+          ? continuation()
+          : continuation.raiseOutput({
+              ['#parsedLyricsEntries']:
+                [constituteLyricsEntry(lyrics)],
+            })),
+    },
+
     withParsedContentEntries({
       from: input('from'),
       caseSensitiveRegex: input.value(commentaryRegexCaseSensitive),
@@ -65,8 +93,7 @@ export default templateCompositeFrom({
 
     withResolvedReferenceList({
       list: '#flattenedList',
-      data: 'artistData',
-      find: input.value(find.artist),
+      find: inputSoupyFind.input('artist'),
       notFoundMode: input.value('null'),
     }),