diff --git a/.eleventy.js b/.eleventy.js index 56e8da1..b90175d 100644 --- a/.eleventy.js +++ b/.eleventy.js @@ -1,6 +1,8 @@ +const slugify = require("@sindresorhus/slugify"); +const markdownIt = require("markdown-it"); +const fs = require('fs'); +const fm = require('front-matter') module.exports = function(eleventyConfig) { - const slugify = require("@sindresorhus/slugify"); - const markdownIt = require("markdown-it"); let markdownLib = markdownIt({ breaks: true, @@ -56,10 +58,25 @@ module.exports = function(eleventyConfig) { eleventyConfig.setLibrary("md", markdownLib); - - eleventyConfig.addFilter('link', function(str) { + eleventyConfig.addTransform('link', function(str) { return str && str.replace(/\[\[(.*?)\]\]/g, function(match, p1) { - return `${p1}`; + const linksplit = p1.split("|"); + const fileName = linksplit[0]; + + let permalink = linksplit.length > 1 ? linksplit[0] : `/notes/${slugify(linksplit[0])}`; + const title = linksplit.length > 1 ? p1.split("|")[1] : p1; + + try { + const file = fs.readFileSync(`./src/site/notes/${fileName}.md`, 'utf8'); + const fmdata = fm(file); + if (fmdata.attributes.permalink) { + permalink = fmdata.attributes.permalink; + } + } catch { + //Ignore if file doesn't exist + } + + return `${title}`; }); }) diff --git a/package-lock.json b/package-lock.json index a830ce5..2663273 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@octokit/core": "^3.5.1", "@sindresorhus/slugify": "^1.1.0", "dotenv": "^10.0.0", + "front-matter": "^4.0.2", "markdown-it": "^12.3.2" }, "devDependencies": { @@ -520,7 +521,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -1370,7 +1370,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1548,6 +1547,14 @@ "node": ">= 0.6" } }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dependencies": { + "js-yaml": "^3.13.1" + } + }, "node_modules/fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", @@ -2065,7 +2072,6 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3625,8 +3631,7 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "node_modules/statuses": { "version": "1.3.1", @@ -4579,7 +4584,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -5276,8 +5280,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "etag": { "version": "1.8.1", @@ -5409,6 +5412,14 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, + "front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "requires": { + "js-yaml": "^3.13.1" + } + }, "fs-extra": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", @@ -5808,7 +5819,6 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -7065,8 +7075,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "statuses": { "version": "1.3.1", diff --git a/package.json b/package.json index 1c3293b..052969a 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@octokit/core": "^3.5.1", "@sindresorhus/slugify": "^1.1.0", "dotenv": "^10.0.0", + "front-matter": "^4.0.2", "markdown-it": "^12.3.2" } -} \ No newline at end of file +} diff --git a/src/site/_includes/layouts/note.njk b/src/site/_includes/layouts/note.njk index d05b8b6..d4d3b6f 100644 --- a/src/site/_includes/layouts/note.njk +++ b/src/site/_includes/layouts/note.njk @@ -14,7 +14,7 @@ permalink: "notes/{{ page.fileSlug | slugify }}/"
← Back to garden entry - {{ content | link | safe}} + {{ content | safe}}
diff --git a/src/site/_includes/layouts/versionednote.njk b/src/site/_includes/layouts/versionednote.njk index d49732c..3c6665b 100644 --- a/src/site/_includes/layouts/versionednote.njk +++ b/src/site/_includes/layouts/versionednote.njk @@ -9,7 +9,7 @@ {%- if item.tags !== 'Garden' -%} ← Back to Garden Entry {%endif%} - {{ item.content | link | safe}} + {{ item.content | safe}} \ No newline at end of file diff --git a/src/site/index.njk b/src/site/index.njk index 2c8bccf..d64b63a 100644 --- a/src/site/index.njk +++ b/src/site/index.njk @@ -8,7 +8,7 @@ {%include "components/notegrowthhistory.njk"%}
{%- for garden in collections.gardenEntry -%} - {{garden.templateContent | link | safe }} + {{garden.templateContent | safe }} {%- endfor -%}