const handlebarsPlugin = require("@11ty/eleventy-plugin-handlebars"); const handlebars = require('handlebars'); const sass = require("sass"); const pluginRss = require("@11ty/eleventy-plugin-rss"); const handlebarsHelpers = require('handlebars-helpers') const markdownit = require('markdown-it') const md = markdownit() const htmlmin = require("html-minifier"); require('dotenv').config(); module.exports = function(eleventyConfig) { // Passthrough episodes directory to include both markdown and audio files eleventyConfig.addPassthroughCopy("content/episodes/*/*.mp3"); eleventyConfig.addPassthroughCopy("content/episodes/**/*.jpg"); eleventyConfig.addPassthroughCopy("content/episodes/**/*.webp"); eleventyConfig.addPassthroughCopy("content/episodes/**/*.png"); eleventyConfig.addPassthroughCopy("content/images/*.jpg"); eleventyConfig.addPassthroughCopy("content/images/*.webp"); eleventyConfig.addPassthroughCopy("content/feeds/*.jpg"); eleventyConfig.addPlugin(handlebarsPlugin); eleventyConfig.addPlugin(pluginRss); // handlebars helpers handlebars.registerHelper("formatSeasonEpisode", function(season, episode) { // Convert strings to integers and pad with zeros const seasonNumber = parseInt(season, 10).toString().padStart(2, '0'); const episodeNumber = parseInt(episode, 10).toString().padStart(2, '0'); // Return the formatted string return `S${seasonNumber}E${episodeNumber}`; // return `S${seasonNumber}E${episodeNumber}`; }); handlebarsHelpers({ handlebars }) eleventyConfig.addFilter("seasonEpisodeFormat", function (season, episode, separator="") { const seasonNumber = parseInt(season, 10).toString().padStart(2, '0'); const episodeNumber = parseInt(episode, 10).toString().padStart(2, '0'); return [seasonNumber, episodeNumber].join(separator) return value; }); eleventyConfig.addFilter("episodeNumber", function (s, episode) { return episode ? Number(episode) : Number(s.replace(/[^0-9]/,'')) }); eleventyConfig.addFilter("episodesInSeason", function (season) { return this.eleventy.collection.episode.filter(ep=>ep.season == season) return episode ? Number(episode) : Number(s.replace(/[^0-9]/,'')) }); // Shortcodes eleventyConfig.addPairedShortcode( "prologue", function(content) { return `