mirror of https://github.com/zulip/zulip.git
build_emoji: Add infrastructure for google-blob and twitter emojisets.
This commit is contained in:
parent
5c9c8194a1
commit
88bfb9778b
|
@ -12,6 +12,8 @@
|
||||||
"css-hot-loader": "1.3.9",
|
"css-hot-loader": "1.3.9",
|
||||||
"css-loader": "0.28.11",
|
"css-loader": "0.28.11",
|
||||||
"emoji-datasource-google": "4.0.4",
|
"emoji-datasource-google": "4.0.4",
|
||||||
|
"emoji-datasource-google-blob": "npm:emoji-datasource-google@3.0.0",
|
||||||
|
"emoji-datasource-twitter": "4.0.4",
|
||||||
"error-stack-parser": "2.0.1",
|
"error-stack-parser": "2.0.1",
|
||||||
"expose-loader": "0.7.5",
|
"expose-loader": "0.7.5",
|
||||||
"file-loader": "1.1.11",
|
"file-loader": "1.1.11",
|
||||||
|
|
|
@ -7,7 +7,7 @@ import shutil
|
||||||
import sys
|
import sys
|
||||||
import ujson
|
import ujson
|
||||||
|
|
||||||
from typing import Any, Dict, List
|
from typing import Any, Dict, List, Optional
|
||||||
|
|
||||||
from emoji_setup_utils import generate_emoji_catalog, generate_codepoint_to_name_map, \
|
from emoji_setup_utils import generate_emoji_catalog, generate_codepoint_to_name_map, \
|
||||||
get_emoji_code, generate_name_to_codepoint_map, emoji_names_for_picker, \
|
get_emoji_code, generate_name_to_codepoint_map, emoji_names_for_picker, \
|
||||||
|
@ -155,19 +155,28 @@ def setup_emoji_farms(cache_path: str, emoji_data: List[Dict[str, Any]]) -> None
|
||||||
dst_file = os.path.join(target_emoji_farm, img_file_name)
|
dst_file = os.path.join(target_emoji_farm, img_file_name)
|
||||||
shutil.copy2(src_file, dst_file)
|
shutil.copy2(src_file, dst_file)
|
||||||
|
|
||||||
def setup_emoji_farm(emojiset: str, emoji_data: List[Dict[str, Any]]) -> None:
|
def setup_emoji_farm(emojiset: str,
|
||||||
|
emoji_data: List[Dict[str, Any]],
|
||||||
|
alt_name: Optional[str]=None) -> None:
|
||||||
|
# `alt_name` is an optional parameter that we use to avoid duplicating below
|
||||||
|
# code. It is only used while setting up google-blob emojiset as it is just
|
||||||
|
# a wrapper for an older version of emoji-datasource package due to which we
|
||||||
|
# need to use 'google' at some places in this code. It has no meaning for other
|
||||||
|
# emojisets and is just equivalent to `emojiset`.
|
||||||
|
alt_name = alt_name or emojiset
|
||||||
|
|
||||||
# Copy individual emoji images from npm packages.
|
# Copy individual emoji images from npm packages.
|
||||||
src_emoji_farm = os.path.join(
|
src_emoji_farm = os.path.join(
|
||||||
NODE_MODULES_PATH, 'emoji-datasource-' + emojiset, 'img', emojiset, '64')
|
NODE_MODULES_PATH, 'emoji-datasource-' + emojiset, 'img', alt_name, '64')
|
||||||
target_emoji_farm = os.path.join(cache_path, 'images-' + emojiset + '-64')
|
target_emoji_farm = os.path.join(cache_path, 'images-' + emojiset + '-64')
|
||||||
run(['mkdir', '-p', target_emoji_farm])
|
run(['mkdir', '-p', target_emoji_farm])
|
||||||
print("Copying individual image files...")
|
print("Copying individual image files...")
|
||||||
for emoji_dict in emoji_data:
|
for emoji_dict in emoji_data:
|
||||||
if emoji_dict['has_img_' + emojiset]:
|
if emoji_dict['has_img_' + alt_name]:
|
||||||
ensure_emoji_image(emoji_dict, src_emoji_farm, target_emoji_farm)
|
ensure_emoji_image(emoji_dict, src_emoji_farm, target_emoji_farm)
|
||||||
skin_variations = emoji_dict.get('skin_variations', {})
|
skin_variations = emoji_dict.get('skin_variations', {})
|
||||||
for skin_tone, img_info in skin_variations.items():
|
for skin_tone, img_info in skin_variations.items():
|
||||||
if img_info['has_img_' + emojiset]:
|
if img_info['has_img_' + alt_name]:
|
||||||
ensure_emoji_image(img_info, src_emoji_farm, target_emoji_farm)
|
ensure_emoji_image(img_info, src_emoji_farm, target_emoji_farm)
|
||||||
|
|
||||||
# Copy zulip.png to the emoji farm.
|
# Copy zulip.png to the emoji farm.
|
||||||
|
@ -176,7 +185,7 @@ def setup_emoji_farms(cache_path: str, emoji_data: List[Dict[str, Any]]) -> None
|
||||||
|
|
||||||
# Copy spritesheets.
|
# Copy spritesheets.
|
||||||
emoji_data_path = os.path.join(NODE_MODULES_PATH, 'emoji-datasource-' + emojiset)
|
emoji_data_path = os.path.join(NODE_MODULES_PATH, 'emoji-datasource-' + emojiset)
|
||||||
input_sprite_sheet = os.path.join(emoji_data_path, 'img', emojiset, 'sheets-256', '64.png')
|
input_sprite_sheet = os.path.join(emoji_data_path, 'img', alt_name, 'sheets-256', '64.png')
|
||||||
output_sprite_sheet = os.path.join(cache_path, 'sheet-%s-64.png' % (emojiset,))
|
output_sprite_sheet = os.path.join(cache_path, 'sheet-%s-64.png' % (emojiset,))
|
||||||
run(['cp', input_sprite_sheet, output_sprite_sheet])
|
run(['cp', input_sprite_sheet, output_sprite_sheet])
|
||||||
|
|
||||||
|
@ -188,9 +197,18 @@ def setup_emoji_farms(cache_path: str, emoji_data: List[Dict[str, Any]]) -> None
|
||||||
|
|
||||||
generate_sprite_css_files(cache_path, emoji_data, emojiset)
|
generate_sprite_css_files(cache_path, emoji_data, emojiset)
|
||||||
|
|
||||||
for emojiset in ['google']:
|
# Setup standard emojisets.
|
||||||
|
for emojiset in ['google', 'twitter']:
|
||||||
setup_emoji_farm(emojiset, emoji_data)
|
setup_emoji_farm(emojiset, emoji_data)
|
||||||
|
|
||||||
|
# Setup old google "blobs" emojiset.
|
||||||
|
GOOGLE_BLOB_EMOJI_DATA_PATH = os.path.join(NODE_MODULES_PATH,
|
||||||
|
'emoji-datasource-google-blob',
|
||||||
|
'emoji.json')
|
||||||
|
with open(GOOGLE_BLOB_EMOJI_DATA_PATH) as fp:
|
||||||
|
blob_emoji_data = ujson.load(fp)
|
||||||
|
setup_emoji_farm('google-blob', blob_emoji_data, 'google')
|
||||||
|
|
||||||
def setup_old_emoji_farm(cache_path: str,
|
def setup_old_emoji_farm(cache_path: str,
|
||||||
emoji_map: Dict[str, str],
|
emoji_map: Dict[str, str],
|
||||||
emoji_data: List[Dict[str, Any]]) -> None:
|
emoji_data: List[Dict[str, Any]]) -> None:
|
||||||
|
|
|
@ -3057,10 +3057,18 @@ elliptic@^6.0.0:
|
||||||
minimalistic-assert "^1.0.0"
|
minimalistic-assert "^1.0.0"
|
||||||
minimalistic-crypto-utils "^1.0.0"
|
minimalistic-crypto-utils "^1.0.0"
|
||||||
|
|
||||||
|
"emoji-datasource-google-blob@npm:emoji-datasource-google@3.0.0":
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/emoji-datasource-google/-/emoji-datasource-google-3.0.0.tgz#d6f77b56385338e10667d2b150dbe9f9b5a4e921"
|
||||||
|
|
||||||
emoji-datasource-google@4.0.4:
|
emoji-datasource-google@4.0.4:
|
||||||
version "4.0.4"
|
version "4.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/emoji-datasource-google/-/emoji-datasource-google-4.0.4.tgz#87392c07255e172e578107a9f1a3b6755907eb01"
|
resolved "https://registry.yarnpkg.com/emoji-datasource-google/-/emoji-datasource-google-4.0.4.tgz#87392c07255e172e578107a9f1a3b6755907eb01"
|
||||||
|
|
||||||
|
emoji-datasource-twitter@4.0.4:
|
||||||
|
version "4.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/emoji-datasource-twitter/-/emoji-datasource-twitter-4.0.4.tgz#83bd4bd719205d41d2da1d7f346a093db429f036"
|
||||||
|
|
||||||
emojis-list@^2.0.0:
|
emojis-list@^2.0.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
|
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
|
||||||
|
|
Loading…
Reference in New Issue