Doxygen: Emoji support (original) (raw)

The Unicode Consortium has defined a set of emoji with the corresponding Unicode sequences. Doxygen supports the subset of emoji characters used by GitHub (based on the list https://api.github.com/emojis). An emoji is created using the \emoji command. For example \emoji smile or \emoji :smile: both produce 😄.

Representation

For the different Doxygen output types there is an output defined:

Emoji image retrieval

In the list, images can be downloaded via the following Python script:

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 in 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 not silent:

print('%s/%s: fetching %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)

When invoking the script with the -d image_dir option, the images will be downloaded to the image_dir directory.

When invoking the script with the -s option, no progress messages are shown while fetching the images, except when fetching an image fails.

By means of the Doxygen configuration parameter LATEX_EMOJI_DIRECTORY the requested directory can be selected.

For convenience a zip with the result of running the script can also be downloaded from https://www.doxygen.nl/dl/github_emojis.zip

For an overview of the supported emoji one can issue the command:
doxygen -f emoji

Go to the next section or return to theindex.