feat(repocard): parse emojis in description (#67)

* feat: add remove_emojis option

Removes emojis in repo card description

* feat: parse emojis

* feat: rename remove_emojis to show_emojis option for consistency

* docs: update docs

Co-authored-by: anuraghazra <hazru.anurag@gmail.com>
This commit is contained in:
Mario Lubenka 2020-07-24 15:26:26 +02:00 committed by GitHub
parent 7973805cf7
commit 3a9ded0a09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 3 deletions

View File

@ -53,7 +53,7 @@ module.exports = async (req, res) => {
}
res.setHeader("Cache-Control", `public, max-age=${cacheSeconds}`);
res.send(
renderRepoCard(repoData, {
title_color,

View File

@ -19,7 +19,8 @@
"jest": "^26.1.0"
},
"dependencies": {
"dotenv": "^8.2.0"
"dotenv": "^8.2.0",
"emoji-name-map": "^1.2.8"
},
"husky": {
"hooks": {

View File

@ -5,6 +5,7 @@ const {
FlexLayout,
} = require("../src/utils");
const icons = require("./icons");
const toEmoji = require("emoji-name-map");
const renderRepoCard = (repo, options = {}) => {
const {
@ -34,8 +35,14 @@ const renderRepoCard = (repo, options = {}) => {
const shiftText = langName.length > 15 ? 0 : 30;
let desc = description || "No description provided";
// parse emojis to unicode
desc = desc.replace(/:\w+:/gm, (emoji) => {
return toEmoji.get(emoji) || "";
});
if (desc.length > 55) {
desc = `${description.slice(0, 55)}..`;
desc = `${desc.slice(0, 55)}..`;
}
// returns theme based colors with proper overrides and defaults

View File

@ -73,6 +73,18 @@ describe("Test renderRepoCard", () => {
);
});
it("should render emojis", () => {
document.body.innerHTML = renderRepoCard({
...data_repo.repository,
description: "This is a text with a :poop: poo emoji",
});
// poop emoji may not show in all editors but it's there between "a" and "poo"
expect(document.getElementsByClassName("description")[0]).toHaveTextContent(
"This is a text with a 💩 poo emoji"
);
});
it("should shift the text position depending on language length", () => {
document.body.innerHTML = renderRepoCard({
...data_repo.repository,