« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/content-function.js6
-rw-r--r--src/content/dependencies/linkTemplate.js5
-rw-r--r--tap-snapshots/test/snapshots/linkTemplate.js.test.cjs14
-rw-r--r--test/snapshots/linkTemplate.js28
4 files changed, 50 insertions, 3 deletions
diff --git a/src/content-function.js b/src/content-function.js
index 0a217800..377eecc9 100644
--- a/src/content-function.js
+++ b/src/content-function.js
@@ -279,7 +279,9 @@ export function flattenRelationsTree({
     }
   }
 
-  recursive(relationsTree);
+  if (relationsTree) {
+    recursive(relationsTree);
+  }
 
   return {
     root,
@@ -335,7 +337,7 @@ export function quickEvaluate({
   extraDependencies: allExtraDependencies,
 
   name,
-  args,
+  args = [],
 }) {
   const treeInfo = getRelationsTree(allContentDependencies, name, ...args);
   const flatTreeInfo = flattenRelationsTree(treeInfo);
diff --git a/src/content/dependencies/linkTemplate.js b/src/content/dependencies/linkTemplate.js
index 94b90652..acac99be 100644
--- a/src/content/dependencies/linkTemplate.js
+++ b/src/content/dependencies/linkTemplate.js
@@ -26,7 +26,10 @@ export default {
         }
 
         if (appendIndexHTML) {
-          if (/^(?!https?:\/\/).+\/$/.test(href)) {
+          if (
+            /^(?!https?:\/\/).+\/$/.test(href) &&
+            href.endsWith('/')
+          ) {
             href += 'index.html';
           }
         }
diff --git a/tap-snapshots/test/snapshots/linkTemplate.js.test.cjs b/tap-snapshots/test/snapshots/linkTemplate.js.test.cjs
new file mode 100644
index 00000000..e3c3356b
--- /dev/null
+++ b/tap-snapshots/test/snapshots/linkTemplate.js.test.cjs
@@ -0,0 +1,14 @@
+/* IMPORTANT
+ * This snapshot file is auto-generated, but designed for humans.
+ * It should be checked into source control and tracked carefully.
+ * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
+ * Make sure to inspect the output below.  Do not ignore changes!
+ */
+'use strict'
+exports[`test/snapshots/linkTemplate.js TAP linkTemplate > output 1`] = `
+<a class="dog" id="cat1" href="https://hsmusic.wiki/media/cool%20file.pdf#fooey" style="--primary-color: #123456ff; --dim-color: #12345677">My Cool Link</a>
+`
+
+exports[`test/snapshots/linkTemplate.js TAP linkTemplate > output 2`] = `
+<a href="/c*lzone/myCoolPath/ham/pineapple/tomato/index.html"></a>
+`
diff --git a/test/snapshots/linkTemplate.js b/test/snapshots/linkTemplate.js
new file mode 100644
index 00000000..0dcf5b61
--- /dev/null
+++ b/test/snapshots/linkTemplate.js
@@ -0,0 +1,28 @@
+import t from 'tap';
+
+import {testContentFunctions} from './_support.js';
+
+testContentFunctions(t, 'linkTemplate', (t, evaluate) => {
+  evaluate.snapshot({
+    name: 'linkTemplate',
+    extraDependencies: {
+      getColors: c => ({primary: c + 'ff', dim: c + '77'}),
+    },
+  },
+    v => v
+      .slot('color', '#123456')
+      .slot('href', 'https://hsmusic.wiki/media/cool file.pdf')
+      .slot('hash', 'fooey')
+      .slot('attributes', {class: 'dog', id: 'cat1'})
+      .slot('content', 'My Cool Link'));
+
+  evaluate.snapshot({
+    name: 'linkTemplate',
+    extraDependencies: {
+      to: (...path) => '/c*lzone/' + path.join('/') + '/',
+      appendIndexHTML: true,
+    },
+  },
+    v => v
+      .slot('path', ['myCoolPath', 'ham', 'pineapple', 'tomato']));
+});