Replace emoji code in text.
(
text: str,
default_variant: Optional[str] = None,
_emoji_sub: _EmojiSubMethod = re.compile(r"(:(\S*?)(?:(?:\-)(emoji|text))?:)").sub,
)
| 7 | |
| 8 | |
| 9 | def _emoji_replace( |
| 10 | text: str, |
| 11 | default_variant: Optional[str] = None, |
| 12 | _emoji_sub: _EmojiSubMethod = re.compile(r"(:(\S*?)(?:(?:\-)(emoji|text))?:)").sub, |
| 13 | ) -> str: |
| 14 | """Replace emoji code in text.""" |
| 15 | from ._emoji_codes import EMOJI |
| 16 | |
| 17 | get_emoji = EMOJI.__getitem__ |
| 18 | variants = {"text": "\ufe0e", "emoji": "\ufe0f"} |
| 19 | get_variant = variants.get |
| 20 | default_variant_code = variants.get(default_variant, "") if default_variant else "" |
| 21 | |
| 22 | def do_replace(match: Match[str]) -> str: |
| 23 | emoji_code, emoji_name, variant = match.groups() |
| 24 | try: |
| 25 | return get_emoji(emoji_name.lower()) + get_variant( |
| 26 | variant, default_variant_code |
| 27 | ) |
| 28 | except KeyError: |
| 29 | return emoji_code |
| 30 | |
| 31 | return _emoji_sub(do_replace, text) |
no test coverage detected