Add GitHub emojis support (#158)
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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 */
|
||||||
|
|||||||
1814
source/app/mocks/api/github/rest/emojis/get.mjs
Normal file
1814
source/app/mocks/api/github/rest/emojis/get.mjs
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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",
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user