// 🧸📔 Bjørn ∷ build.js
// ====================================================================
//
-// Copyright © 2022 Lady [@ Lady’s Computer].
+// Copyright © 2022‐2023 Lady [@ Lady’s Computer].
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// There is no content placeholder.
/* do nothing */
}
+ globalThis.bjørnTransformEntryHTML?.(document, metadata);
} else {
// This is not an XHTML template.
/* do nothing */
.href("./feed.atom")``,
);
}
+ globalThis.bjørnTransformHead?.(head, metadata, type);
};
/**
/* do nothing */
}
}
+ globalThis.bjørnTransformMetadata?.(result, documentType);
return validateMetadata(result, documentType);
};
}
};
+{ // Set up global variables for use in hooks.
+ //
+ // Bjørn is principally built to be run from the command line (as a
+ // shell script) rather than conforming to typical Ecmascript module
+ // patterns. However, it recognizes hooks through various
+ // specially‐named properties on `globalThis`. After defining these
+ // hooks, a script can use a *dynamic* `import("./path/to/build.js")`
+ // to run the Bjørn build steps.
+ //
+ // To make writing scripts which make use of these hooks easier,
+ // infrastructural dependencies and useful functions are provided on
+ // `globalThis` so that wrapping scripts don’t have to attempt to
+ // manage the dependencies themselves.
+ //
+ // Note that the `Lemon/window` polyfill will already have
+ // established some D·O·M‐related global properties by the time this
+ // runs, so they don’t need to be redeclared here.
+ globalThis.Lemon = Lemon;
+ globalThis.Bjørn = {
+ addContent,
+ getLanguage,
+ setLanguage,
+ };
+}
+
await (async () => { // this is the run script
const writes = [];
/* do nothing */
}
}
+ globalThis.bjørnTransformFeedHTML?.(feedTemplate, feedMetadata);
writes.push(
Deno.writeTextFile(
"index.xhtml",
);
// Save the feed Atom file.
+ globalThis.bjørnTransformFeedAtom?.(document, feedMetadata);
writes.push(
Deno.writeTextFile(
"feed.atom",