« get me outta code hell

data: Artwork.unqualifiedDirectory, Artwork.fileExtension - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-04-06 15:41:27 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-04-10 16:02:39 -0300
commitf02db61b1da6b6a79a16550d9217cb3e1473ef98 (patch)
tree5efdd87a32be1a062b74f464215fed208a959061 /src/data
parenta1d87c3744cb938812cecffe87f7274fdec30ce4 (diff)
data: Artwork.unqualifiedDirectory, Artwork.fileExtension
Just the properties and fields here
Diffstat (limited to 'src/data')
-rw-r--r--src/data/things/artwork.js50
1 files changed, 48 insertions, 2 deletions
diff --git a/src/data/things/artwork.js b/src/data/things/artwork.js
index bf5753b8..2e8936a4 100644
--- a/src/data/things/artwork.js
+++ b/src/data/things/artwork.js
@@ -1,13 +1,15 @@
 import {input} from '#composite';
 import Thing from '#thing';
-import {isContributionList, isDate, validateReferenceList} from '#validators';
+import {isContributionList, isDate, isFileExtension, validateReferenceList}
+  from '#validators';
 import {parseContributors, parseDate} from '#yaml';
 
 import {withPropertyFromObject} from '#composite/data';
-import {contentString, simpleString, soupyFind, thing}
+import {contentString, directory, simpleString, soupyFind, thing}
   from '#composite/wiki-properties';
 
 import {
+  exitWithoutDependency,
   exposeConstant,
   exposeDependency,
   exposeDependencyOrContinue,
@@ -31,6 +33,10 @@ export class Artwork extends Thing {
   }) => ({
     // Update & expose
 
+    unqualifiedDirectory: directory({
+      name: input.value(null),
+    }),
+
     thing: thing(),
 
     label: simpleString(),
@@ -46,6 +52,43 @@ export class Artwork extends Thing {
       exposeDependency({dependency: '#date'}),
     ],
 
+    fileExtensionFromThingProperty: simpleString(),
+
+    fileExtension: [
+      {
+        compute: (continuation) => continuation({
+          ['#default']: 'jpg',
+        }),
+      },
+
+      exposeUpdateValueOrContinue({
+        validate: input.value(isFileExtension),
+      }),
+
+      exitWithoutDependency({
+        dependency: 'thing',
+        value: '#default',
+      }),
+
+      exitWithoutDependency({
+        dependency: 'fileExtensionFromThingProperty',
+        value: '#default',
+      }),
+
+      withPropertyFromObject({
+        object: 'thing',
+        property: 'fileExtensionFromThingProperty',
+      }),
+
+      exposeDependencyOrContinue({
+        dependency: '#value',
+      }),
+
+      exposeDependency({
+        dependency: '#default',
+      }),
+    ],
+
     artistContribsFromThingProperty: simpleString(),
     artistContribsArtistProperty: simpleString(),
 
@@ -119,6 +162,9 @@ export class Artwork extends Thing {
 
   static [Thing.yamlDocumentSpec] = {
     fields: {
+      'Directory': {property: 'unqualifiedDirectory'},
+      'File Extension': {property: 'fileExtension'},
+
       'Label': {property: 'label'},
       'Source': {property: 'source'},