1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- const regex = require('./regex.js')
- module.exports = BananaSlug
- const own = Object.hasOwnProperty
- function BananaSlug () {
- const self = this
- if (!(self instanceof BananaSlug)) return new BananaSlug()
- self.reset()
- }
- /**
- * Generate a unique slug.
- * @param {string} value String of text to slugify
- * @param {boolean} [false] Keep the current case, otherwise make all lowercase
- * @return {string} A unique slug string
- */
- BananaSlug.prototype.slug = function (value, maintainCase) {
- const self = this
- let slug = slugger(value, maintainCase === true)
- const originalSlug = slug
- while (own.call(self.occurrences, slug)) {
- self.occurrences[originalSlug]++
- slug = originalSlug + '-' + self.occurrences[originalSlug]
- }
- self.occurrences[slug] = 0
- return slug
- }
- /**
- * Reset - Forget all previous slugs
- * @return void
- */
- BananaSlug.prototype.reset = function () {
- this.occurrences = Object.create(null)
- }
- function slugger (string, maintainCase) {
- if (typeof string !== 'string') return ''
- if (!maintainCase) string = string.toLowerCase()
- return string.replace(regex, '').replace(/ /g, '-')
- }
- BananaSlug.slug = slugger
|