# Copyright (c) Microsoft Corporation.
# Licensed under the MIT license.
import random
from pyrit.prompt_converter.word_level_converter import WordLevelConverter
[docs]
class EmojiConverter(WordLevelConverter):
"""
Converts English text to randomly chosen circle or square character emojis.
Inspired by https://github.com/BASI-LABS/parseltongue/blob/main/src/utils.ts
"""
#: Dictionary mapping letters to their corresponding emojis.
emoji_dict = {
"a": ["π
", "π
°οΈ", "π°"],
"b": ["π
", "π
±οΈ", "π±"],
"c": ["π
", "π
²", "π²"],
"d": ["π
", "π
³", "π³"],
"e": ["π
", "π
΄", "π΄"],
"f": ["π
", "π
΅", "π΅"],
"g": ["π
", "π
Ά", "πΆ"],
"h": ["π
", "π
·", "π·"],
"i": ["π
", "π
Έ", "πΈ"],
"j": ["π
", "π
Ή", "πΉ"],
"k": ["π
", "π
Ί", "πΊ"],
"l": ["π
", "π
»", "π»"],
"m": ["π
", "π
Ό", "πΌ"],
"n": ["π
", "π
½", "π½"],
"o": ["π
", "π
ΎοΈ", "πΎ"],
"p": ["π
", "π
ΏοΈ", "πΏ"],
"q": ["π
", "π", "π
"],
"r": ["π
‘", "π", "π
"],
"s": ["π
’", "π", "π
"],
"t": ["π
£", "π", "π
"],
"u": ["π
€", "π", "π
"],
"v": ["π
₯", "π
", "π
"],
"w": ["π
¦", "π", "π
"],
"x": ["π
§", "π", "π
"],
"y": ["π
¨", "π", "π
"],
"z": ["π
©", "π", "π
"],
}
[docs]
async def convert_word_async(self, word: str) -> str:
word = word.lower()
result = []
for char in word:
if char in EmojiConverter.emoji_dict:
result.append(random.choice(EmojiConverter.emoji_dict[char]))
else:
result.append(char)
return "".join(result)