1
0
mirror of https://github.com/simple-icons/simple-icons.git synced 2024-12-26 01:13:41 +02:00
simple-icons/scripts/utils.js
Eric Cornelissen 8431fd9683
Simplify how scripts get icon slugs (#5066)
* Accept icon rather than title in `iconToSlug`

This removes the need in (most of the) calls to this function to
seperately check if there is a custom slug already defined for the icon.

* Rename `titleToSlug` to `getIconSlug`

* Revert unnecessary style change

* Update function documentation

* Keep `titleToSlug` and add `getIconSlug` helper

Unfortunately `this` is not available because we're using arrow syntax
for these functions, but refering to `titleToSlug` through
`module.exports` works fine as well.

* Fix parameter name in `getIconSlug` docs
2021-02-22 14:15:37 +01:00

50 lines
1.3 KiB
JavaScript

/**
* @fileoverview
* Some common utilities for scripts.
*/
module.exports = {
/**
* Get the slug/filename for an icon.
* @param {Object} icon The icon data as it appears in _data/simple-icons.json
*/
getIconSlug: icon => icon.slug || module.exports.titleToSlug(icon.title),
/**
* Converts a brand title into a slug/filename.
* @param {String} title The title to convert
*/
titleToSlug: title => (
title.toLowerCase()
.replace(/\+/g, "plus")
.replace(/^\./, "dot-")
.replace(/\.$/, "-dot")
.replace(/\./g, "-dot-")
.replace(/^&/, "and-")
.replace(/&$/, "-and")
.replace(/&/g, "-and-")
.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")
.replace(/[\u0300-\u036f]/g, "")
.replace(/[^a-z0-9\-]/g, "")
),
/**
* Converts a brand title in HTML/SVG friendly format into a brand title (as
* it is seen in simple-icons.json)
* @param {String} htmlFriendlyTitle The title to convert
*/
htmlFriendlyToTitle: htmlFriendlyTitle => (
htmlFriendlyTitle
.replace(/'/g, "’")
.replace(/&/g, "&")
),
}