generify slugify method
This commit is contained in:
65
.eleventy.js
65
.eleventy.js
@ -12,22 +12,11 @@ module.exports = function (eleventyConfig) {
|
|||||||
eleventyConfig.addPassthroughCopy("./src/_assets/js");
|
eleventyConfig.addPassthroughCopy("./src/_assets/js");
|
||||||
|
|
||||||
eleventyConfig.addShortcode("albumtile", function (title, embedLink, coverImage) {
|
eleventyConfig.addShortcode("albumtile", function (title, embedLink, coverImage) {
|
||||||
// hugely overcomplicated universal slug method
|
var slug = slugify(title);
|
||||||
var slug = title
|
|
||||||
.toLowerCase()
|
|
||||||
.trim()
|
|
||||||
// remove accents
|
|
||||||
.normalize('NFD')
|
|
||||||
.replace(/[\u0300-\u036f]/g, '')
|
|
||||||
// replace invalid characters with spaces
|
|
||||||
.replace(/[^a-z0-9\s-]/g, ' ')
|
|
||||||
.trim()
|
|
||||||
// replace multiple spaces or hyphens with a hyphen
|
|
||||||
.replace(/[\s-]+/g, '-');
|
|
||||||
|
|
||||||
return `<div>
|
return `<div>
|
||||||
<a class="hide" href="${embedLink}" target="${slug}">
|
<a class="hide" href="${embedLink}" target="${slug}">
|
||||||
<img class="album-tile-cover-image" src="${coverImage}">
|
<img class="album-tile-cover-image" src="${coverImage}">
|
||||||
</a>
|
</a>
|
||||||
<iframe class="album-tile-iframe" name="${slug}" src="about:blank" seamless></iframe>
|
<iframe class="album-tile-iframe" name="${slug}" src="about:blank" seamless></iframe>
|
||||||
<b>${title}</b>
|
<b>${title}</b>
|
||||||
@ -42,18 +31,8 @@ module.exports = function (eleventyConfig) {
|
|||||||
var imageString = "";
|
var imageString = "";
|
||||||
var linkString = "";
|
var linkString = "";
|
||||||
var videoString = "";
|
var videoString = "";
|
||||||
|
|
||||||
var slug = title
|
var slug = slugify(title);
|
||||||
.toLowerCase()
|
|
||||||
.trim()
|
|
||||||
// remove accents
|
|
||||||
.normalize('NFD')
|
|
||||||
.replace(/[\u0300-\u036f]/g, '')
|
|
||||||
// replace invalid characters with spaces
|
|
||||||
.replace(/[^a-z0-9\s-]/g, ' ')
|
|
||||||
.trim()
|
|
||||||
// replace multiple spaces or hyphens with a hyphen
|
|
||||||
.replace(/[\s-]+/g, '-');
|
|
||||||
|
|
||||||
if (Array.isArray(link)) {
|
if (Array.isArray(link)) {
|
||||||
if (typeof link[0] === 'string') {
|
if (typeof link[0] === 'string') {
|
||||||
@ -72,14 +51,14 @@ module.exports = function (eleventyConfig) {
|
|||||||
imageString = `<a href="#img_${slug}"><img src="${image}"/></a>
|
imageString = `<a href="#img_${slug}"><img src="${image}"/></a>
|
||||||
<a href="#_${slug}" class="lightbox trans" id="img_${slug}"><img src="${image}"/></a><br>`
|
<a href="#_${slug}" class="lightbox trans" id="img_${slug}"><img src="${image}"/></a><br>`
|
||||||
}
|
}
|
||||||
|
|
||||||
if (video) {
|
if (video) {
|
||||||
videoString = `<video autoplay loop muted controls poster="${video.poster}">
|
videoString = `<video autoplay loop muted controls poster="${video.poster}">
|
||||||
<source src="${video.link}" type="video/mp4"></source>
|
<source src="${video.link}" type="video/mp4"></source>
|
||||||
<img src="${video.poster}"></img>
|
<img src="${video.poster}"></img>
|
||||||
</video><br>`
|
</video><br>`
|
||||||
}
|
}
|
||||||
|
|
||||||
return `<hr>
|
return `<hr>
|
||||||
<p>
|
<p>
|
||||||
<strong>${title}</strong><br>
|
<strong>${title}</strong><br>
|
||||||
@ -89,7 +68,7 @@ module.exports = function (eleventyConfig) {
|
|||||||
${description}
|
${description}
|
||||||
</p>`
|
</p>`
|
||||||
});
|
});
|
||||||
|
|
||||||
// make a list of all tags besides "post" and add them to the collection
|
// make a list of all tags besides "post" and add them to the collection
|
||||||
eleventyConfig.addCollection("tagsList", function (collectionApi) {
|
eleventyConfig.addCollection("tagsList", function (collectionApi) {
|
||||||
const tagsList = new Set();
|
const tagsList = new Set();
|
||||||
@ -105,12 +84,12 @@ module.exports = function (eleventyConfig) {
|
|||||||
const sortedTagsList = new Set(Array.from(tagsList).sort());
|
const sortedTagsList = new Set(Array.from(tagsList).sort());
|
||||||
return sortedTagsList;
|
return sortedTagsList;
|
||||||
});
|
});
|
||||||
|
|
||||||
// limit filter
|
// limit filter
|
||||||
eleventyConfig.addFilter("limit", function (array, limit) {
|
eleventyConfig.addFilter("limit", function (array, limit) {
|
||||||
return array.slice(0, limit);
|
return array.slice(0, limit);
|
||||||
});
|
});
|
||||||
|
|
||||||
// minify all html files
|
// minify all html files
|
||||||
eleventyConfig.addTransform("htmlmin", function (content) {
|
eleventyConfig.addTransform("htmlmin", function (content) {
|
||||||
if (this.page.outputPath && this.page.outputPath.endsWith(".html")) {
|
if (this.page.outputPath && this.page.outputPath.endsWith(".html")) {
|
||||||
@ -142,7 +121,7 @@ module.exports = function (eleventyConfig) {
|
|||||||
return data.permalink;
|
return data.permalink;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// When `eleventyExcludeFromCollections` is true, the file is not included in any collections
|
// When `eleventyExcludeFromCollections` is true, the file is not included in any collections
|
||||||
eleventyConfig.addGlobalData("eleventyComputed.eleventyExcludeFromCollections", function () {
|
eleventyConfig.addGlobalData("eleventyComputed.eleventyExcludeFromCollections", function () {
|
||||||
return (data) => {
|
return (data) => {
|
||||||
@ -154,7 +133,7 @@ module.exports = function (eleventyConfig) {
|
|||||||
return data.eleventyExcludeFromCollections;
|
return data.eleventyExcludeFromCollections;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
eleventyConfig.on("eleventy.before", ({ runMode }) => {
|
eleventyConfig.on("eleventy.before", ({ runMode }) => {
|
||||||
// Set the environment variable
|
// Set the environment variable
|
||||||
if (runMode === "serve" || runMode === "watch") {
|
if (runMode === "serve" || runMode === "watch") {
|
||||||
@ -171,4 +150,18 @@ module.exports = function (eleventyConfig) {
|
|||||||
includes: "_includes",
|
includes: "_includes",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var slugify = function (preSlug) {
|
||||||
|
return preSlug
|
||||||
|
.toLowerCase()
|
||||||
|
.trim()
|
||||||
|
// remove accents
|
||||||
|
.normalize('NFD')
|
||||||
|
.replace(/[\u0300-\u036f]/g, '')
|
||||||
|
// replace invalid characters with spaces
|
||||||
|
.replace(/[^a-z0-9\s-]/g, ' ')
|
||||||
|
.trim()
|
||||||
|
// replace multiple spaces or hyphens with a hyphen
|
||||||
|
.replace(/[\s-]+/g, '-');
|
||||||
|
}
|
Reference in New Issue
Block a user