UNPKG

@bennerinformatics/ember-fw-gc

Version:

A set of components, controllers, routes, and helpers used in all Group-Control managed FW App System applications

60 lines (47 loc) 1.33 kB
// code taken from https://github.com/Flet/github-slugger var whitespace = /\s/g; function GithubSlugger () { var self = this; if (!(self instanceof GithubSlugger)) return new GithubSlugger(); self.reset(); } /** * Generate a unique slug. * @param {string} value String of text to slugify * @return {string} A unique slug string */ GithubSlugger.prototype.slug = function (value) { var self = this; var slug = slugger(value); var occurrences = self.occurrences[slug]; if (self.occurrences.hasOwnProperty(slug)) { occurrences++; } else { occurrences = 0; } self.occurrences[slug] = occurrences; if (occurrences) { slug = slug + '-' + occurrences; } return slug; }; /** * Reset - Forget all previous slugs * @return void */ GithubSlugger.prototype.reset = function () { this.occurrences = {}; }; function lower (string) { return string.toLowerCase(); } function slugger (string) { var re = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,.\/:;<=>?@\[\]^`{|}~]/g; var maintainCase = false; var replacement = '-'; if (typeof string !== 'string') return ''; if (!maintainCase) string = string.replace(/[A-Z]+/g, lower); return string.trim() .replace(re, '') .replace(whitespace, replacement); }