ds-algo-study
Version:
Just experimenting with publishing a package
34 lines (30 loc) • 727 B
JavaScript
/**
* Slugger generates header id
*/
module.exports = class Slugger {
constructor() {
this.seen = {};
}
/**
* Convert string to unique id
*/
slug(value) {
let slug = value
.toLowerCase()
.trim()
// remove html tags
.replace(/<[!\/a-z].*?>/ig, '')
// remove unwanted chars
.replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, '')
.replace(/\s/g, '-');
if (this.seen.hasOwnProperty(slug)) {
const originalSlug = slug;
do {
this.seen[originalSlug]++;
slug = originalSlug + '-' + this.seen[originalSlug];
} while (this.seen.hasOwnProperty(slug));
}
this.seen[slug] = 0;
return slug;
};
};