/****************************************************************************** * * * * Copyright (C) 1997-2018 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * * Documents produced by Doxygen are derivative works derived from the * input used in their production; they are not affected by this license. * */ /*! \page emojisup Emoji support The [Unicode consortium](http://www.unicode.org/) has defined a set of [emoji](https://en.wikipedia.org/wiki/Emoji) with the corresponding unicode sequences. Doxygen supports the subset of emoji characters as used by GitHub (based on the list https://api.github.com/emojis). An emoji is created using the \ref cmdemoji "\\emoji" command. For example `\emoji smile` (or `\emoji :smile:`) both produce \emoji smile. \section emojirep Representation For the different doxygen output types there is an output defined: - Unicode code sequence, the actual representation is depending on the possibilities of the fonts loaded: - HTML - DocBook - RTF, converted to UTF-16 representation. - Image - \LaTeX, in case the image can be found (see \ref emojiimage "Emoji image retrieval") otherwise the plain emoji text (i.e. `::`) is displayed - plain emoji text (i.e. `::`) - man - perl - For XML there is a dedicated `` tag with name and unicode attributes. \section emojiimage Emoji image retrieval In the list of images can be downloaded via the following Python script: \code{.py} # script to download the emoticons from GitHub and to produce a table for # inclusion in doxygen. Works with python 2.7+ and 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): 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): with open(dir_name+'/'+image_name,'wb') as file: print('%s/%s: fetching %s' % (cur_item,num_items,image_name)) file.write(urlrequest.urlopen(url).read()) else: 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() group = parser.add_mutually_exclusive_group() group.add_argument('-d','--dir',help='directory to place images in') group.add_argument('-t','--table',help='generate code fragment',action='store_true') args = parser.parse_args() if args.table: produce_table() else: download_images(args.dir) \endcode When invoking it with the `-d image_dir` option the images will by downloaded in the `image_dir` directory. By means of the doxygen configuration parameter \ref cfg_latex_emoji_directory "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 ` \htmlonly Go to the next section or return to the index. \endhtmlonly */