Skip to content

Commit b11877e

Browse files
committed
[Emoji] Add the gitlab locale
1 parent 3f2ed0f commit b11877e

File tree

9 files changed

+2275
-0
lines changed

9 files changed

+2275
-0
lines changed

src/Symfony/Component/Emoji/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ CHANGELOG
55
---
66

77
* Add the component
8+
* Add the `gitlab` locale to `EmojiTransliterator`

src/Symfony/Component/Emoji/EmojiTransliterator.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ final class EmojiTransliterator extends \Transliterator
2222
private const QUICK_CHECK = "\xA9\xAE\xE2\xE3\xF0";
2323
private const REVERSEABLE_IDS = [
2424
'emoji-github' => 'github-emoji',
25+
'emoji-gitlab' => 'gitlab-emoji',
2526
'emoji-slack' => 'slack-emoji',
2627
'github-emoji' => 'emoji-github',
28+
'gitlab-emoji' => 'emoji-gitlab',
2729
'slack-emoji' => 'emoji-slack',
2830
];
2931

src/Symfony/Component/Emoji/Resources/bin/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
update: ## Update sources
55
@composer update
66
@curl https://api.github.com/emojis > vendor/github-emojis.json
7+
@curl https://gitlab.com/gitlab-org/gitlab/-/raw/master/fixtures/emojis/index.json > vendor/gitlab-emojis.json
78
@curl https://raw.githubusercontent.com/iamcal/emoji-data/master/emoji.json > vendor/slack-emojis.json
89
@curl -L https://unicode.org/Public/emoji/latest/emoji-test.txt > vendor/emoji-test.txt
910

src/Symfony/Component/Emoji/Resources/bin/build.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
Builder::saveRules(Builder::buildRules($emojisCodePoints));
2222
Builder::saveRules(Builder::buildStripRules($emojisCodePoints));
2323
Builder::saveRules(Builder::buildGitHubRules($emojisCodePoints));
24+
Builder::saveRules(Builder::buildGitlabRules($emojisCodePoints));
2425
Builder::saveRules(Builder::buildSlackRules($emojisCodePoints));
2526

2627
final class Builder
@@ -156,6 +157,35 @@ public static function buildGitHubRules(array $emojisCodePoints): iterable
156157
return ['emoji-github' => $maps, 'github-emoji' => array_flip($maps)];
157158
}
158159

160+
public static function buildGitlabRules(array $emojisCodePoints): iterable
161+
{
162+
$emojis = json_decode((new Filesystem())->readFile(__DIR__.'/vendor/gitlab-emojis.json'), true, flags: JSON_THROW_ON_ERROR);
163+
164+
$ignored = [];
165+
$maps = [];
166+
167+
foreach ($emojis as $emojiItem) {
168+
$emojiCodePoints = strtolower($emojiItem['unicode']);
169+
if (!array_key_exists($emojiCodePoints, $emojisCodePoints)) {
170+
$ignored[] = [
171+
'emojiCodePoints' => $emojiCodePoints,
172+
'name' => $emojiItem['name'],
173+
];
174+
continue;
175+
}
176+
$emoji = $emojisCodePoints[$emojiCodePoints];
177+
if (!self::testEmoji($emoji, 'gitlab', $emojiCodePoints)) {
178+
continue;
179+
}
180+
$codePointsCount = mb_strlen($emoji);
181+
$maps[$codePointsCount][$emoji] = $emojiItem['shortname'];
182+
}
183+
184+
$maps = self::createRules($maps);
185+
186+
return ['emoji-gitlab' => $maps, 'gitlab-emoji' => array_flip($maps)];
187+
}
188+
159189
public static function buildSlackRules(array $emojisCodePoints): iterable
160190
{
161191
$emojis = json_decode((new Filesystem())->readFile(__DIR__.'/vendor/slack-emojis.json'), true, flags: JSON_THROW_ON_ERROR);

0 commit comments

Comments
 (0)