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

19
package-lock.json generated
View File

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

View File

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

View File

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