summaryrefslogtreecommitdiff
path: root/node_modules/@sindresorhus/transliterate/index.js
diff options
context:
space:
mode:
authorShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
committerShipwreckt <me@shipwreckt.co.uk>2025-10-31 20:02:14 +0000
commit7a52ddeba2a68388b544f529d2d92104420f77b0 (patch)
tree15ddd47457a2cb4a96060747437d36474e4f6b4e /node_modules/@sindresorhus/transliterate/index.js
parent53d6ae2b5568437afa5e4995580a3fb679b7b91b (diff)
Changed from static to 11ty!
Diffstat (limited to 'node_modules/@sindresorhus/transliterate/index.js')
-rw-r--r--node_modules/@sindresorhus/transliterate/index.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/node_modules/@sindresorhus/transliterate/index.js b/node_modules/@sindresorhus/transliterate/index.js
new file mode 100644
index 0000000..739ebbe
--- /dev/null
+++ b/node_modules/@sindresorhus/transliterate/index.js
@@ -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;
+}