ts-prime
Version:
A utility library for JavaScript and Typescript.
40 lines (39 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var normalizeString_1 = require("./normalizeString");
/**
* Converts any string to slug
* @param str the string
* @signature
* P.slugify(str);
* @example
* P.slugify("Super ball cup") // => super-ball-cup
* @category String
*/
function slugify(str) {
var qw = str
.split(' ')
.map(function (q) { return normalizeString_1.normalizeString(q); })
.join('-');
str = qw.replace(/^\s+|\s+$/g, '');
// Make the string lowercase
str = str.toLowerCase();
// Remove accents, swap ñ for n, etc
var from = 'ÁÄÂÀÃÅČÇĆĎÉĚËÈÊẼĔȆÍÌÎÏŇÑÓÖÒÔÕØŘŔŠŤÚŮÜÙÛÝŸŽáäâàãåčçćďéěëèêẽĕȇíìîïňñóöòôõøðřŕšťúůüùûýÿžþÞĐđ߯a·/_,:;';
var to = 'AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa------';
for (var i = 0, l = from.length; i < l; i++) {
str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
}
// Remove invalid chars
str = str
.replace(/[^a-z0-9 -]/g, '')
// Collapse whitespace and replace by -
.replace(/\s+/g, '-')
// Collapse dashes
.replace(/-+/g, '-');
if (str[str.length - 1] === '-') {
return str.slice(0, str.length - 1);
}
return str;
}
exports.slugify = slugify;