Metadata-Version: 1.1
Name: emojificate
Version: 0.4.0
Summary: A Python implementation of a concept of using fallback images, alt text, title text and aria labels to represent emoji in HTML code in a more accessible method.
Home-page: https://github.com/glasnt/emojificate
Author: Katie McLaughlin
Author-email: katie@glasnt.com
License: New BSD
Description: emojificate
        ===========
        
        .. image:: https://github.com/glasnt/emojificate/workflows/pytest/badge.svg
            :target: https://github.com/glasnt/emojificate/actions?query=workflow%3Apytest
        
        Emojificate is a Python implementation of a concept of using fallback images, alt text, title text and aria labels to represent emoji in HTML code in a more accessible method.
        
        Usage
        -----
        
        To convert a string from the command line::
        
            $ python3 -m emojificate "I 💜 emoji 😊"
            I <img src="https://twemoji.maxcdn.com/v/12.1.4/72x72/1f49c.png" alt="💜"
            title="Purple Heart" aria-label="Emoji: Purple Heart"> emoji <img
            src="https://twemoji.maxcdn.com/v/12.1.4/72x72/1f60a.png" alt="😊"
            title="Smiling Face With Smiling Eyes" aria-label="Emoji: Smiling Face With
            Smiling Eyes">
        
        Or, if you've got a Django project, put ``emojificate`` into your ``INSTALLED_APPS``, and then use the following in a template::
        
            {% load emojificate %}
            This is some {{ user_content|emojificate }} that has emoji in it.
        
            {% emojified %}
            This is some template content that 💜 emoji as well.
            {% endemojified %}
        
        Implementation
        --------------
        
        TL;DR: Take a string, split it into tokens, and if a token is emoji, process it into a nice format.
        
        As of 0.4.0, string-splitting is now handled by [grapheme](https://github.com/alvinlindstam/grapheme).
        
        Given a list of tokens, we can leverage the native `unicodedata <https://docs.python.org/3/library/unicodedata.html>`__ to:
        
        * see if a token is a unicode Symbol (an emoji)
        * get the codepoint for the emoji, and
        * get the name of the emoji.
        
        If a token is a grapheme and not a character, there won't be a record of what it is in unicodedata. In that case emojificate defaults to a human-readable version of the shortcode provided by [`emoji`](https://github.com/carpedm20/emoji). 
        
        From there, we construct an ``<img>`` replacement for the emoji:
        
        * Use images from `twemoji <https://github.com/twitter/twemoji>`__, Twitter's emoji set (if the URL exists)
        * Have an ``alt`` parameter containing the original emoji. This allows for copying-pasting.
        * Use the name of the emoji in the ``title`` parameter. This allows for hover-tooltips.
        * Add an ``aria-label`` for screen-reader accessibility.
        
        For more information, see `Solve For Emoji <http://glasnt.com/blog/2016/08/06/solve-for-emoji.html>`__.
        
        Implementation in other languages
        ---------------------------------
        
        Ruby
        ~~~~~
        
        .. code-block:: ruby
        
            require 'gemoji'
        
            def cdn
                "https://twemoji.maxcdn.com/v/latest/72x72/"
            end
        
            def emojificate(string)
              string.split("").each do |s|
                  e = Emoji.find_by_unicode(s)
                  if e then
                       u = s.ord.to_s(16) # e.g. 1f431
                       d = e.description  # e.g. "cat face"
                       img = "<img src=\"#{cdn}/#{u}.png\" alt=\"#{s}\" title=\"#{d}\" aria-label=\"Emoji: #{d}\">"
                       print img
                   else
                       print s
                   end
               end
             end
        
Keywords: emoji accessibility a11y
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Text Processing :: Filters
Classifier: Topic :: Utilities
