first
This commit is contained in:
33
node_modules/@sindresorhus/transliterate/index.js
generated
vendored
Normal file
33
node_modules/@sindresorhus/transliterate/index.js
generated
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
import escapeStringRegexp from 'escape-string-regexp';
|
||||
import builtinReplacements from './replacements.js';
|
||||
|
||||
const doCustomReplacements = (string, replacements) => {
|
||||
for (const [key, value] of replacements) {
|
||||
// TODO: Use `String#replaceAll()` when targeting Node.js 16.
|
||||
string = string.replace(new RegExp(escapeStringRegexp(key), 'g'), value);
|
||||
}
|
||||
|
||||
return string;
|
||||
};
|
||||
|
||||
export default function transliterate(string, options) {
|
||||
if (typeof string !== 'string') {
|
||||
throw new TypeError(`Expected a string, got \`${typeof string}\``);
|
||||
}
|
||||
|
||||
options = {
|
||||
customReplacements: [],
|
||||
...options
|
||||
};
|
||||
|
||||
const customReplacements = new Map([
|
||||
...builtinReplacements,
|
||||
...options.customReplacements
|
||||
]);
|
||||
|
||||
string = string.normalize();
|
||||
string = doCustomReplacements(string, customReplacements);
|
||||
string = string.normalize('NFD').replace(/\p{Diacritic}/gu, '').normalize();
|
||||
|
||||
return string;
|
||||
}
|
||||
Reference in New Issue
Block a user