1
0
mirror of https://github.com/simple-icons/simple-icons.git synced 2024-11-26 01:00:27 +02:00

Optimize titleToSlug function (#7073)

* Optimize `titleToSlug` function

* Use simpler regex initialization

Co-authored-by: LitoMore <LitoMore@users.noreply.github.com>

* Simpler regex definition

* Run prettier

Co-authored-by: LitoMore <LitoMore@users.noreply.github.com>
This commit is contained in:
Álvaro Mondéjar 2022-01-19 15:34:08 +01:00 committed by GitHub
parent 8185c5d974
commit cc649017cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,6 +7,27 @@ import path from 'node:path';
import { promises as fs } from 'node:fs'; import { promises as fs } from 'node:fs';
import { fileURLToPath } from 'node:url'; import { fileURLToPath } from 'node:url';
const TITLE_TO_SLUG_REPLACEMENTS = {
'+': 'plus',
'.': 'dot',
'&': 'and',
đ: 'd',
ħ: 'h',
ı: 'i',
ĸ: 'k',
ŀ: 'l',
ł: 'l',
ß: 'ss',
ŧ: 't',
};
const TITLE_TO_SLUG_CHARS_REGEX = RegExp(
`[${Object.keys(TITLE_TO_SLUG_REPLACEMENTS).join('')}]`,
'g',
);
const TITLE_TO_SLUG_RANGE_REGEX = /[^a-z0-9]/g;
/** /**
* Get the slug/filename for an icon. * Get the slug/filename for an icon.
* @param {Object} icon The icon data as it appears in _data/simple-icons.json * @param {Object} icon The icon data as it appears in _data/simple-icons.json
@ -26,19 +47,12 @@ export const svgToPath = (svg) => svg.match(/<path\s+d="([^"]*)/)[1];
export const titleToSlug = (title) => export const titleToSlug = (title) =>
title title
.toLowerCase() .toLowerCase()
.replace(/\+/g, 'plus') .replace(
.replace(/\./g, 'dot') TITLE_TO_SLUG_CHARS_REGEX,
.replace(/&/g, 'and') (char) => TITLE_TO_SLUG_REPLACEMENTS[char],
.replace(/đ/g, 'd') )
.replace(/ħ/g, 'h')
.replace(/ı/g, 'i')
.replace(/ĸ/g, 'k')
.replace(/ŀ/g, 'l')
.replace(/ł/g, 'l')
.replace(/ß/g, 'ss')
.replace(/ŧ/g, 't')
.normalize('NFD') .normalize('NFD')
.replace(/[^a-z0-9]/g, ''); .replace(TITLE_TO_SLUG_RANGE_REGEX, '');
/** /**
* Converts a slug into a variable name that can be exported. * Converts a slug into a variable name that can be exported.