add: script to generate thumbnails
All checks were successful
Deploy on push / deploy (push) Has been skipped
All checks were successful
Deploy on push / deploy (push) Has been skipped
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const repoRoot = path.resolve(__dirname, "..");
|
||||
const mealsPath = path.join(repoRoot, "data", "meals.json");
|
||||
const { loadMeals, repoRoot } = require("./lib/meals");
|
||||
|
||||
const indexTemplatePath = path.join(repoRoot, "templates", "index.html");
|
||||
const indexOutputPath = path.join(repoRoot, "index.html");
|
||||
|
||||
@@ -17,28 +17,6 @@ function escapeHtml(value) {
|
||||
.replace(/"/g, """);
|
||||
}
|
||||
|
||||
function validateMeals(meals) {
|
||||
if (!Array.isArray(meals)) {
|
||||
throw new Error("data/meals.json must contain an array");
|
||||
}
|
||||
|
||||
for (const [index, meal] of meals.entries()) {
|
||||
if (!meal || typeof meal !== "object") {
|
||||
throw new Error(`Meal at index ${index} must be an object`);
|
||||
}
|
||||
|
||||
for (const field of ["id", "title", "description"]) {
|
||||
if (typeof meal[field] !== "string" || meal[field].length === 0) {
|
||||
throw new Error(`Meal ${index} is missing required string field "${field}"`);
|
||||
}
|
||||
}
|
||||
|
||||
if (meal.position !== undefined && typeof meal.position !== "string") {
|
||||
throw new Error(`Meal ${index} has a non-string "position" value`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function renderGalleryItem(meal, eol) {
|
||||
const attrs = [`class="thumbnail"`, `href="images/fulls/${meal.id}.jpg"`];
|
||||
|
||||
@@ -72,9 +50,7 @@ function replaceBlock(template, token, replacement) {
|
||||
function buildIndex() {
|
||||
const template = fs.readFileSync(indexTemplatePath, "utf8");
|
||||
const eol = detectEol(template);
|
||||
const meals = JSON.parse(fs.readFileSync(mealsPath, "utf8"));
|
||||
|
||||
validateMeals(meals);
|
||||
const meals = loadMeals();
|
||||
|
||||
return replaceBlock(template, "gallery_items", renderGallery(meals, eol));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user