Slugify all note URLS

This commit is contained in:
Ole Eskild Steensen 2022-03-01 10:28:23 +01:00
parent 406ae3de6b
commit 7113398174
4 changed files with 21 additions and 23 deletions

View File

@ -1,11 +1,11 @@
module.exports = function(eleventyConfig) {
const slugify = require("@sindresorhus/slugify");
const markdownIt = require("markdown-it");
module.exports = function (eleventyConfig) {
let markdownIt = require("markdown-it");
let markdownLib = markdownIt({
breaks: true,
html: true
}).use(function (md) {
}).use(function(md) {
//https://github.com/DCsunset/markdown-it-mermaid-plugin
const origRule = md.renderer.rules.fence.bind(md.renderer.rules);
md.renderer.rules.fence = (tokens, idx, options, env, slf) => {
@ -27,11 +27,11 @@ module.exports = function (eleventyConfig) {
return origRule(tokens, idx, options, env, slf);
};
const defaultRender = md.renderer.rules.link_open || function (tokens, idx, options, env, self) {
const defaultRender = md.renderer.rules.link_open || function(tokens, idx, options, env, self) {
return self.renderToken(tokens, idx, options);
};
md.renderer.rules.link_open = function (tokens, idx, options, env, self) {
md.renderer.rules.link_open = function(tokens, idx, options, env, self) {
const aIndex = tokens[idx].attrIndex('target');
const classIndex = tokens[idx].attrIndex('class');
@ -57,8 +57,10 @@ module.exports = function (eleventyConfig) {
eleventyConfig.setLibrary("md", markdownLib);
eleventyConfig.addFilter('link', function (str) {
return str && str.replace(/\[\[(.*?)\]\]/g, '<a class="internal-link" href="/notes/$1">$1</a>');
eleventyConfig.addFilter('link', function(str) {
return str && str.replace(/\[\[(.*?)\]\]/g, function(match, p1) {
return `<a class="internal-link" href="/notes/${slugify(p1)}">${p1}</a>`;
});
})
return {

19
package-lock.json generated
View File

@ -11,6 +11,7 @@
"dependencies": {
"@azure/storage-blob": "^12.8.0",
"@octokit/core": "^3.5.1",
"@sindresorhus/slugify": "^1.1.0",
"dotenv": "^10.0.0",
"markdown-it": "^12.3.2"
},
@ -363,7 +364,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz",
"integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==",
"dev": true,
"dependencies": {
"@sindresorhus/transliterate": "^0.1.1",
"escape-string-regexp": "^4.0.0"
@ -379,7 +379,6 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz",
"integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==",
"dev": true,
"dependencies": {
"escape-string-regexp": "^2.0.0",
"lodash.deburr": "^4.1.0"
@ -395,7 +394,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
"integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
"dev": true,
"engines": {
"node": ">=8"
}
@ -1361,7 +1359,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"engines": {
"node": ">=10"
},
@ -2307,8 +2304,7 @@
"node_modules/lodash.deburr": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz",
"integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=",
"dev": true
"integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s="
},
"node_modules/lodash.isfinite": {
"version": "3.3.2",
@ -4459,7 +4455,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz",
"integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==",
"dev": true,
"requires": {
"@sindresorhus/transliterate": "^0.1.1",
"escape-string-regexp": "^4.0.0"
@ -4469,7 +4464,6 @@
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz",
"integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==",
"dev": true,
"requires": {
"escape-string-regexp": "^2.0.0",
"lodash.deburr": "^4.1.0"
@ -4478,8 +4472,7 @@
"escape-string-regexp": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
"integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
"dev": true
"integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="
}
}
},
@ -5278,8 +5271,7 @@
"escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
},
"esprima": {
"version": "4.0.1",
@ -5993,8 +5985,7 @@
"lodash.deburr": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz",
"integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=",
"dev": true
"integrity": "sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s="
},
"lodash.isfinite": {
"version": "3.3.2",

View File

@ -18,7 +18,8 @@
"dependencies": {
"@azure/storage-blob": "^12.8.0",
"@octokit/core": "^3.5.1",
"@sindresorhus/slugify": "^1.1.0",
"dotenv": "^10.0.0",
"markdown-it": "^12.3.2"
}
}
}

View File

@ -1,3 +1,7 @@
---
title: "/{{ page.fileSlug }}/"
permalink: "notes/{{ page.fileSlug | slugify }}/"
---
<!DOCTYPE html>
<html lang="en">
<head>