UNPKG

ds-algo-study

Version:

Just experimenting with publishing a package

34 lines (30 loc) 727 B
/** * 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; }; };