Urara-Blog/node_modules/.pnpm-store/v3/files/04/eff081a964b82849532823ee7eb251bc6fb15b384303836d67aaf0a1d755816ef1857186b95cba93dbca708d3246034c180f63a39b74600baa36ecfa69be9f
2022-08-14 01:14:53 +08:00

50 lines
1.1 KiB
Text

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