UNPKG

transliteration

Version:

Unicode to ACSII transliteration / slugify module. Works in node.js, web browser and command line.

36 lines (31 loc) 1.03 kB
import transliterate from './transliterate'; import { escapeRegExp, mergeOptions } from './utils'; // Slugify const defaultOptions = { lowercase: true, separator: '-', replace: [], replaceAfter: [], ignore: [], }; let configOptions = {}; const slugify = (str, options) => { const opt = options ? mergeOptions(defaultOptions, options) : mergeOptions(defaultOptions, configOptions); // remove leading and trailing separators const sep = escapeRegExp(opt.separator); opt.replaceAfter.push([/[^a-zA-Z0-9]+/g, opt.separator], [new RegExp(`^(${sep})+|(${sep})+$`, 'g'), '']); const transliterateOptions = { replaceAfter: opt.replaceAfter, replace: opt.replace, ignore: opt.ignore }; let slug = transliterate(str, transliterateOptions); if (opt.lowercase) { slug = slug.toLowerCase(); } return slug; }; slugify.config = (options) => { if (options === undefined) { return configOptions; } configOptions = mergeOptions(defaultOptions, options); return configOptions; }; export default slugify;