« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/util/sugar.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/sugar.js')
-rw-r--r--src/util/sugar.js14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/util/sugar.js b/src/util/sugar.js
index c836d0c..24ae863 100644
--- a/src/util/sugar.js
+++ b/src/util/sugar.js
@@ -30,6 +30,20 @@ export function* splitArray(array, fn) {
   }
 }
 
+// Null-accepting function to check if an array is empty. Accepts null (and
+// treats as empty) as a shorthand for "hey, check if this property is an array
+// with/without stuff in it" for objects where properties that are PRESENT but
+// don't currently have a VALUE are null (instead of undefined).
+export function empty(arrayOrNull) {
+  if (arrayOrNull === null) {
+    return true;
+  } else if (Array.isArray(arrayOrNull)) {
+    return arrayOrNull.length === 0;
+  } else {
+    throw new Error(`Expected array or null`);
+  }
+}
+
 // Sums the values in an array, optionally taking a function which maps each
 // item to a number (handy for accessing a certain property on an array of like
 // objects). This also coalesces null values to zero, so if the mapping function