1
0
mirror of https://github.com/squidfunk/mkdocs-material.git synced 2024-11-12 01:50:52 +01:00

Reverted emoji.py integration to be moved out to separate package

This commit is contained in:
squidfunk 2020-04-08 17:40:36 +02:00
parent 15961dffa8
commit cb99a22fdf
4 changed files with 2 additions and 165 deletions

View File

@ -201,35 +201,6 @@ To view all the available short names and emoji available, see
files containing the short names and emoji associated with each supported
index.
In addition, you can access all the Material icons and Fontawesome icons by using
Material for MkDocs's custom emoji index. It extends the Twemoji index with new
short names that access any of the included icons. To use the custom index, you
need to use the following options when including the Emoji extension:
```
- pymdownx.emoji:
emoji_index: !!python/name:material.emoji.material
emoji_generator: !!python/name:material.emoji.to_svg
```
Then we can access any of the icons:
=== "Markdown"
```
We can use Material Icons :material-airplane:.
We can also use Fontawesome Icons :fontawesome-solid-ambulance:.
That's not all, we can also use Octicons :octicons-octoface:.
```
=== "Results"
We can use Material Icons :material-airplane:.
We can also use Fontawesome Icons :fontawesome-solid-ambulance:.
That's not all, we can also use Octicons :octicons-octoface:.
!!! warning "Legal disclaimer"
Material has no affiliation with [JoyPixles][15] or [Twemoji][14], both

View File

@ -1,67 +0,0 @@
"""
Emoji extras for Material.
Override the Twemoji Index with an extended version that includes short names for Material icons, Fontawesome, etc.
"""
import os
import glob
import copy
from pymdownx import twemoji_db
from pymdownx.emoji import TWEMOJI_SVG_CDN, add_attriubtes
import codecs
import xml.etree.ElementTree as etree
RESOURCES = os.path.dirname(os.path.abspath(__file__))
def material():
"""Provide a copied Twemoji index with additional codes for Material included icons."""
# Copy the Twemoji index
index = {
"name": 'twemoji',
"emoji": copy.deepcopy(twemoji_db.emoji),
"aliases": copy.deepcopy(twemoji_db.aliases)
}
# Find our icons
icon_path = os.path.join(RESOURCES, '.icons')
norm_base = icon_path.replace('\\', '/') + '/'
for result in glob.glob(icon_path.replace('\\', '/') + '/**/*.svg', recursive=True):
name = ':{}:'.format(result.replace('\\', '/').replace(norm_base, '', 1).replace('/', '-').lstrip('.')[:-4])
if name not in index['emoji'] and name not in index['aliases']:
# Easiest to just store the path and pull it out from the index
index["emoji"][name] = {'name': name, 'path': result}
return index
def to_svg(index, shortname, alias, uc, alt, title, category, options, md):
"""Return SVG element."""
is_unicode = uc is not None
if is_unicode:
svg_path = TWEMOJI_SVG_CDN
attributes = {
"class": options.get('classes', index),
"alt": alt,
"src": "%s%s.svg" % (
options.get('image_path', svg_path),
uc
)
}
if title:
attributes['title'] = title
add_attriubtes(options, attributes)
return etree.Element("img", attributes)
else:
el = etree.Element('span', {"class": options.get('classes', index)})
svg_path = md.inlinePatterns['emoji'].emoji_index['emoji'][shortname]['path']
with codecs.open(svg_path, 'r', encoding='utf-8') as f:
el.text = md.htmlStash.store(f.read())
return el

View File

@ -103,8 +103,8 @@ markdown_extensions:
- pymdownx.critic
- pymdownx.details
- pymdownx.emoji:
emoji_index: !!python/name:material.emoji.material
emoji_generator: !!python/name:material.emoji.to_svg
emoji_index: !!python/name:pymdownx.emoji.twemoji
emoji_generator: !!python/name:pymdownx.emoji.to_svg
# - pymdownx.highlight:
# linenums_style: pymdownx-inline
- pymdownx.inlinehilite

View File

@ -1,67 +0,0 @@
"""
Emoji extras for Material.
Override the Twemoji Index with an extended version that includes short names for Material icons, Fontawesome, etc.
"""
import os
import glob
import copy
from pymdownx import twemoji_db
from pymdownx.emoji import TWEMOJI_SVG_CDN, add_attriubtes
import codecs
import xml.etree.ElementTree as etree
RESOURCES = os.path.dirname(os.path.abspath(__file__))
def material():
"""Provide a copied Twemoji index with additional codes for Material included icons."""
# Copy the Twemoji index
index = {
"name": 'twemoji',
"emoji": copy.deepcopy(twemoji_db.emoji),
"aliases": copy.deepcopy(twemoji_db.aliases)
}
# Find our icons
icon_path = os.path.join(RESOURCES, '.icons')
norm_base = icon_path.replace('\\', '/') + '/'
for result in glob.glob(icon_path.replace('\\', '/') + '/**/*.svg', recursive=True):
name = ':{}:'.format(result.replace('\\', '/').replace(norm_base, '', 1).replace('/', '-').lstrip('.')[:-4])
if name not in index['emoji'] and name not in index['aliases']:
# Easiest to just store the path and pull it out from the index
index["emoji"][name] = {'name': name, 'path': result}
return index
def to_svg(index, shortname, alias, uc, alt, title, category, options, md):
"""Return SVG element."""
is_unicode = uc is not None
if is_unicode:
svg_path = TWEMOJI_SVG_CDN
attributes = {
"class": options.get('classes', index),
"alt": alt,
"src": "%s%s.svg" % (
options.get('image_path', svg_path),
uc
)
}
if title:
attributes['title'] = title
add_attriubtes(options, attributes)
return etree.Element("img", attributes)
else:
el = etree.Element('span', {"class": options.get('classes', index)})
svg_path = md.inlinePatterns['emoji'].emoji_index['emoji'][shortname]['path']
with codecs.open(svg_path, 'r', encoding='utf-8') as f:
el.text = md.htmlStash.store(f.read())
return el