nuxtpress
Version:
NuxtPress is a professional blog module for nuxt.js
21 lines (19 loc) • 654 B
JavaScript
const removeDiacritics = require('diacritics').remove;
// eslint-disable-next-line no-control-regex
const rControl = /[\u0000-\u001f]/g;
const rSpecial = /[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'<>,.?/]+/g;
module.exports = function slugify(str) {
return removeDiacritics(str)
// Remove control characters
.replace(rControl, '')
// Replace special characters
.replace(rSpecial, '-')
// Remove continous separators
.replace(/-{2,}/g, '-')
// Remove prefixing and trailing separtors
.replace(/^-+|-+$/g, '')
// ensure it doesn't start with a number (#121)
.replace(/^(\d)/, '_$1')
// lowercase
.toLowerCase();
};