mirror of
https://github.com/squidfunk/mkdocs-material.git
synced 2024-06-14 11:52:32 +03:00
Reverted emoji.py integration to be moved out to separate package
This commit is contained in:
@@ -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
|
files containing the short names and emoji associated with each supported
|
||||||
index.
|
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"
|
!!! warning "Legal disclaimer"
|
||||||
|
|
||||||
Material has no affiliation with [JoyPixles][15] or [Twemoji][14], both
|
Material has no affiliation with [JoyPixles][15] or [Twemoji][14], both
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -103,8 +103,8 @@ markdown_extensions:
|
|||||||
- pymdownx.critic
|
- pymdownx.critic
|
||||||
- pymdownx.details
|
- pymdownx.details
|
||||||
- pymdownx.emoji:
|
- pymdownx.emoji:
|
||||||
emoji_index: !!python/name:material.emoji.material
|
emoji_index: !!python/name:pymdownx.emoji.twemoji
|
||||||
emoji_generator: !!python/name:material.emoji.to_svg
|
emoji_generator: !!python/name:pymdownx.emoji.to_svg
|
||||||
# - pymdownx.highlight:
|
# - pymdownx.highlight:
|
||||||
# linenums_style: pymdownx-inline
|
# linenums_style: pymdownx-inline
|
||||||
- pymdownx.inlinehilite
|
- pymdownx.inlinehilite
|
||||||
|
|||||||
67
src/emoji.py
67
src/emoji.py
@@ -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
|
|
||||||
Reference in New Issue
Block a user