diff --git a/.eleventy.js b/.eleventy.js index ed81672..030c747 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,46 +1,73 @@ -const fs = require("fs"); -const path = require("path"); -const i18n = require('./_data/i18n.js'); +import fs from "fs"; +import path from "path"; -module.exports = function(eleventyConfig) { - eleventyConfig.addCollection("post", function(collectionApi) { - return collectionApi.getFilteredByGlob("./posts/*").sort((a, b) => b.date - a.date); +import syntaxHighlight from "@11ty/eleventy-plugin-syntaxhighlight"; +import safeLinks from "@sardine/eleventy-plugin-external-links"; +import pluginGitCommitDate from "eleventy-plugin-git-commit-date"; +import recentChanges from "eleventy-plugin-recent-changes"; +import Webmentions from "eleventy-plugin-webmentions"; // configure later +import pluginInlineLinkFavicon from "eleventy-plugin-inline-link-favicon"; + +// import i18n from "./_data/i18n.js"; + +export default function (eleventyConfig) { + eleventyConfig.setQuietMode(true); + eleventyConfig.addPlugin(syntaxHighlight); + eleventyConfig.addPlugin(safeLinks); + eleventyConfig.addPlugin(pluginGitCommitDate); + eleventyConfig.addPlugin(recentChanges, { + commits: 10, }); - eleventyConfig.addCollection("misc", (api) => - api.getFilteredByTag("misc") - ); + eleventyConfig.addPlugin(pluginInlineLinkFavicon); + + eleventyConfig.addCollection("post", function (collectionApi) { + return collectionApi + .getFilteredByGlob("./posts/*") + .sort((a, b) => b.date - a.date); + }); + + eleventyConfig.addCollection("misc", (api) => api.getFilteredByTag("misc")); + eleventyConfig.addFilter("getTranslation", (page, lang) => { const dir = path.dirname(page.inputPath); const file = path.join(dir, `${lang}.json`); - + if (fs.existsSync(file)) { return JSON.parse(fs.readFileSync(file, "utf-8")); } - + return {}; }); + eleventyConfig.addCollection("88x31", () => { - return fs.readdirSync("static/images/88x31") - .map(file => ({ - url: `/static/images/88x31/${file}`, - fileSlug: file - })); + return fs + .readdirSync("static/images/88x31") + .map((file) => ({ + url: `/static/images/88x31/${file}`, + fileSlug: file, + })); }); eleventyConfig.addPassthroughCopy("static"); - eleventyConfig.addNunjucksFilter("alternateLanguages", function(collection, postId, currentLanguageKey) { - return collection.filter(post => - post.data.postId === postId && post.data.langKey !== currentLanguageKey - ) - .map(post => ({ - lang: post.data.langKey, - url: post.url, - title: post.data.title - })) - }); + eleventyConfig.addNunjucksFilter( + "alternateLanguages", + function (collection, postId, currentLanguageKey) { + return collection + .filter( + (post) => + post.data.postId === postId && + post.data.langKey !== currentLanguageKey + ) + .map((post) => ({ + lang: post.data.langKey, + url: post.url, + title: post.data.title, + })); + } + ); - eleventyConfig.addFilter("absoluteUrl", function(url) { + eleventyConfig.addFilter("absoluteUrl", function (url) { const base = "https://adrianvic.github.io"; const prefix = process.env.GITHUB_ACTIONS ? "" : "/tenkuma/web"; return base + prefix + url; @@ -52,24 +79,65 @@ module.exports = function(eleventyConfig) { year: "numeric", month: "numeric", day: "numeric", - timeZone: "America/Sao_Paulo" + timeZone: "America/Sao_Paulo", }); }); - eleventyConfig.addNunjucksFilter("smartTitle", function(str) { + eleventyConfig.addNunjucksFilter("smartTitle", function (str) { if (!str) return ""; - const smallWords = ["a","an","and","at","but","by","for","in","nor","of","on","or","so","the","to","up","yet", - "e","de","do","da","dos","das","a","o","um","uma","em","por","para","com","no","na","nos"]; - return str.toLowerCase().split(" ").map((word, i) => { - if (i === 0) return word.charAt(0).toUpperCase() + word.slice(1); - return smallWords.includes(word) ? word : word.charAt(0).toUpperCase() + word.slice(1); - }).join(" "); + const smallWords = [ + "a", + "an", + "and", + "at", + "but", + "by", + "for", + "in", + "nor", + "of", + "on", + "or", + "so", + "the", + "to", + "up", + "yet", + "e", + "de", + "do", + "da", + "dos", + "das", + "a", + "o", + "um", + "uma", + "em", + "por", + "para", + "com", + "no", + "na", + "nos", + ]; + + return str + .toLowerCase() + .split(" ") + .map((word, i) => { + if (i === 0) return word.charAt(0).toUpperCase() + word.slice(1); + return smallWords.includes(word) + ? word + : word.charAt(0).toUpperCase() + word.slice(1); + }) + .join(" "); }); return { pathPrefix: process.env.GITHUB_ACTIONS ? "" : "/tenkuma/web", dir: { - output: "docs" - } + output: "docs", + }, }; -}; +} diff --git a/_data/i18n.js b/_data/i18n.cjs similarity index 99% rename from _data/i18n.js rename to _data/i18n.cjs index af27cab..39d68e5 100644 --- a/_data/i18n.js +++ b/_data/i18n.cjs @@ -92,7 +92,8 @@ module.exports = { previous: "previous", next: "next", about: "about", - thisWebsiteDoesNotTrackYou: "This website does not track you." + thisWebsiteDoesNotTrackYou: "This website does not track you.", + mrnandoChannel: "Mr. Nando's channel" }, pt: { language: "português", @@ -160,6 +161,7 @@ module.exports = { previous: "anterior", next: "próximo", about: "sobre", - thisWebsiteDoesNotTrackYou: "Esse website não rastreia você." + thisWebsiteDoesNotTrackYou: "Esse website não rastreia você.", + mrnandoChannel: "Canal do Mr. Nando" } }; \ No newline at end of file diff --git a/_data/languages.js b/_data/languages.cjs similarity index 100% rename from _data/languages.js rename to _data/languages.cjs diff --git a/_includes/base.njk b/_includes/base.njk index 66a5297..22a8d31 100644 --- a/_includes/base.njk +++ b/_includes/base.njk @@ -14,6 +14,7 @@
{{ subtitle or "Fanasy is not a crime, find your castle in the sky." }}