Add GitHub emojis support (#158)

This commit is contained in:
Simon Lecoq
2021-02-27 14:39:51 +01:00
committed by GitHub
parent dd29f304fc
commit 42cbc6f1cd
8 changed files with 1863 additions and 3 deletions

View File

@@ -57,6 +57,8 @@
let rendered = await ejs.render(image, {...data, s:imports.s, f:imports.format, style, fonts}, {views, async:true}) let rendered = await ejs.render(image, {...data, s:imports.s, f:imports.format, style, fonts}, {views, async:true})
if (q["config.twemoji"]) if (q["config.twemoji"])
rendered = await imports.svg.twemojis(rendered) rendered = await imports.svg.twemojis(rendered)
if (q["config.gemoji"])
rendered = await imports.svg.gemojis(rendered, {rest})
const {resized, mime} = await imports.svg.resize(rendered, {paddings:q["config.padding"] || conf.settings.padding, convert}) const {resized, mime} = await imports.svg.resize(rendered, {paddings:q["config.padding"] || conf.settings.padding, convert})
rendered = resized rendered = resized

View File

@@ -167,6 +167,7 @@
/**Render twemojis */ /**Render twemojis */
async twemojis(rendered) { async twemojis(rendered) {
//Load emojis //Load emojis
console.debug("metrics/svg/twemojis > rendering twemojis")
const emojis = new Map() const emojis = new Map()
for (const {text:emoji, url} of twemojis.parse(rendered)) { for (const {text:emoji, url} of twemojis.parse(rendered)) {
if (!emojis.has(emoji)) if (!emojis.has(emoji))
@@ -177,6 +178,20 @@
rendered = rendered.replace(new RegExp(emoji, "g"), twemoji) rendered = rendered.replace(new RegExp(emoji, "g"), twemoji)
return rendered return rendered
}, },
/**Render github emojis */
async gemojis(rendered, {rest}) {
//Load gemojis
console.debug("metrics/svg/gemojis > rendering gemojis")
const emojis = new Map()
for (const [emoji, url] of Object.entries((await rest.emojis.get()).data).map(([key, value]) => [`:${key}:`, value])) {
if (((!emojis.has(emoji)))&&(new RegExp(emoji, "g").test(rendered)))
emojis.set(emoji, `<img class="gemoji" src="data:image/png;base64,${await imgb64(url)}" height="16" width="16" alt="">`)
}
//Apply replacements
for (const [emoji, gemoji] of emojis)
rendered = rendered.replace(new RegExp(emoji, "g"), gemoji)
return rendered
},
} }
/**Wait */ /**Wait */

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
console.debug("metrics/compute/mocks > mocking rest api result > rest.repos.getByUsername") console.debug("metrics/compute/mocks > mocking rest api result > rest.repos.getByUsername")
return ({ return ({
status:200, status:200,
url:`'https://api.github.com/users/${username}/`, url:`https://api.github.com/users/${username}/`,
headers:{ headers:{
server:"GitHub.com", server:"GitHub.com",
status:"200 OK", status:"200 OK",

View File

@@ -39,6 +39,22 @@ Omitted one will be appended using default order.
config_order: base.header, isocalendar, languages, stars config_order: base.header, isocalendar, languages, stars
``` ```
### 🥳 Render GitHub custom emojis
GitHub provide additional emojis which are not registered in Unicode standard (:octocat:, :shipit:, :trollface:, ...).
You can choose to render (or not) [GitHub emojis](https://github.com/github/gemoji).
It may increase filesize since it replace special strings by base64 images.
#### Examples workflows
```yaml
- uses: lowlighter/metrics@latest
with:
# ... other options
config_gemoji: yes
```
### 🙂 Using twemojis instead of emojis ### 🙂 Using twemojis instead of emojis
You can choose to use [twemojis](https://github.com/twitter/twemoji) instead of regular emojis so rendered metrics are more consistent across all platforms. You can choose to use [twemojis](https://github.com/twitter/twemoji) instead of regular emojis so rendered metrics are more consistent across all platforms.

View File

@@ -96,6 +96,13 @@ inputs:
type: boolean type: boolean
default: no default: no
# Render GitHub custom emojis (like ":octocat:", see full list at https://api.github.com/emojis)
# May increase filesize
config_gemoji:
description: Use GitHub custom emojis
type: boolean
default: yes
# Enable SVG CSS animations # Enable SVG CSS animations
config_animations: config_animations:
description: SVG CSS animations description: SVG CSS animations

View File

@@ -16,6 +16,12 @@
token: MOCKED_TOKEN token: MOCKED_TOKEN
config_twemoji: yes config_twemoji: yes
- name: Use gemoji
uses: lowlighter/metrics@latest
with:
token: MOCKED_TOKEN
config_gemoji: yes
- name: Disable animations - name: Disable animations
uses: lowlighter/metrics@latest uses: lowlighter/metrics@latest
with: with:

View File

@@ -738,8 +738,8 @@
} }
} }
/* Twemoji */ /* Twemoji and GitHub emoji */
.twemoji { .twemoji, .gemoji {
height: 1em; height: 1em;
width: 1em; width: 1em;
margin-bottom: -.125em; margin-bottom: -.125em;