diff --git a/.gitignore b/.gitignore index 8d8e73d..01f8e7a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ _site/ *.log .env docker-compose.yml + +# Local browser fixtures for document-based development +src/posts/*.md diff --git a/eleventy.config.js b/eleventy.config.js index 82aa7c7..9589e97 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -5,6 +5,9 @@ import { filters } from "./src/_filters/index.js"; import { postComparator, isPostPublic } from "./src/_utils/sort-posts.js"; export default function (eleventyConfig) { + // Build ignored local post fixtures without making them Git-tracked. + eleventyConfig.setUseGitIgnore(false); + // 1. Static Asset Passthrough Copy eleventyConfig.addPassthroughCopy({ "src/assets": "assets" }); @@ -66,7 +69,6 @@ export default function (eleventyConfig) { return [...tagSet].sort(); }); - // 6. Dev Server Options (dynamic port binding) eleventyConfig.setServerOptions({ port: parseInt(process.env.PORT || "8080", 10) diff --git a/src/_filters/index.js b/src/_filters/index.js index 53e3640..9504cf7 100644 --- a/src/_filters/index.js +++ b/src/_filters/index.js @@ -62,13 +62,44 @@ export const extractHeadings = (htmlContent) => { return headings; }; +const leadingTerminalPreviewHeading = /^\s*]*\bid=(["'])terminal-preview\1[^>]*>[\s\S]*?<\/h1>/i; + +const terminalPreviewBounds = (htmlContent) => { + if (!htmlContent || typeof htmlContent !== "string") return null; + + const heading = htmlContent.match(leadingTerminalPreviewHeading); + if (!heading) return null; + + const contentAfterHeading = htmlContent.slice(heading[0].length); + const nextArticleHeading = contentAfterHeading.search(/ terminalPreviewBounds(htmlContent)?.preview || ""; + +export const removeTerminalPreview = (htmlContent) => { + if (!htmlContent || typeof htmlContent !== "string") return ""; + return terminalPreviewBounds(htmlContent)?.article || htmlContent; +}; + export const filters = { postDate, isoDate, limit, filterTagList, readingTime, - extractHeadings + extractHeadings, + extractTerminalPreview, + removeTerminalPreview }; export default filters; diff --git a/src/_includes/layouts/post.njk b/src/_includes/layouts/post.njk index 1d6ba59..5366f0e 100644 --- a/src/_includes/layouts/post.njk +++ b/src/_includes/layouts/post.njk @@ -11,7 +11,7 @@