Prise en charge des emojis
Le consortium Unicode a défini un ensemble d'emojis avec les séquences Unicode correspondantes. Doxygen prend en charge le sous-ensemble de caractères emoji utilisé par GitHub (sur la base de la liste https://api.github.com/emojis). Un emoji est créé à l'aide de la commande \emoji. Par exemple, \emoji smile ou \emoji :smile: produisent tous deux 😄.
Représentation
Pour les différents types de sortie Doxygen, une sortie est définie :
- Séquence de code Unicode, la représentation réelle dépend des possibilités des polices chargées :
- HTML
- DocBook
- RTF, converti en représentation UTF-16.
- Image
, au cas où l'image peut être trouvée (voir Récupération d'image Emoji) sinon le texte emoji brut (c'est-à-dire :<texte>:) est affiché
- texte emoji brut (c'est-à-dire
:<texte>:)- man
- perl
- Pour XML, il existe une balise
<emoji>dédiée avec des attributs name et unicode.
Récupération d'images emoji
Dans la liste des images, elles peuvent être téléchargées via le script Python suivant :
# script pour télécharger les émoticônes depuis GitHub et pour produire un tableau pour
# inclusion dans Doxygen. Fonctionne avec Python 2.7+ et Python 3.x
import json
import os
import argparse
import re
try:
import urllib.request as urlrequest
except ImportError:
import urllib as urlrequest
unicode_re = re.compile(r'.*?/unicode/(.*?).png\?.*')
def get_emojis():
response = urlrequest.urlopen('https://api.github.com/emojis')
raw_data = response.read()
return json.loads(raw_data)
def download_images(dir_name, silent):
if not os.path.exists(dir_name):
os.makedirs(dir_name)
json_data = get_emojis()
num_items = len(json_data)
cur_item=0
for image,url dans sorted(json_data.items()):
image_name = image+'.png'
cur_item=cur_item+1
if url.find('/unicode/')==-1 or not os.path.isfile(dir_name+'/'+image_name):
success = True
with open(dir_name+'/'+image_name,'wb') as file :
if no silent :
print('%s/%s : récupération de %s' % (cur_item,num_items,image_name))
try :
file.write(urlrequest.urlopen(url).read())
except :
print('Unable to fetch %s' % (image_name))
success = False
if not success:
os.remove(dir_name+'/'+image_name)
else:
if not silent:
print('%s/%s: skipping %s' % (cur_item,num_items,image_name))
def produce_table():
json_data = get_emojis()
lines = []
for image,url in sorted(json_data.items()):
match = unicode_re.match(url)
if match:
unicodes = match.group(1).split('-')
unicodes_html = ''.join(["&#x"+x+";" for x in unicodes])
image_str = "\":"+image+":\","
unicode_str = "\""+unicodes_html+"\""
lines.append(' { %-42s %-38s }' % (image_str,unicode_str))
out_str = ',\n'.join(lines)
print("{")
print(out_str)
print("};")
if __name__=="__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-d','--dir',help='directory to place images in')
parser.add_argument('-t','--table',help='generate code fragment',action='store_true')
parser.add_argument('-s','--silent',help='silent mode',action='store_true')
args = parser.parse_args()
if args.table:
produce_table()
if args.dir:
download_images(args.dir, args.silent)
Lors de l'appel du script avec l'option -d image_dir, les images seront téléchargées dans le répertoire image_dir.
Lors de l'appel du script avec l'option -s, aucun message de progression n'est affiché pendant la récupération des images, sauf lorsque la récupération d'une image échoue.
Le répertoire demandé peut être sélectionné au moyen du paramètre de configuration Doxygen LATEX_EMOJI_DIRECTORY.
Pour plus de commodité, un fichier zip contenant le résultat de l'exécution du script peut également être téléchargé à partir de https://www.doxygen.nl/dl/github_emojis.zip.
Pour un aperçu des emoji pris en charge, vous pouvez exécuter la commande :
doxygen -f emoji <outputFileName>.