16
16
from __future__ import annotations
17
17
18
18
import argparse
19
- import json
20
19
import os
21
- import random
22
- import re
23
20
import sys
24
21
25
22
from em_keyboard import _version
@@ -55,6 +52,8 @@ def try_copy_to_clipboard(text: str) -> bool:
55
52
56
53
57
54
def parse_emojis (filename : str | os .PathLike [str ] = EMOJI_PATH ) -> EmojiDict :
55
+ import json
56
+
58
57
return json .load (open (filename , encoding = "utf-8" ))
59
58
60
59
@@ -80,8 +79,7 @@ def do_find(lookup: EmojiDict, terms: tuple[str, ...]) -> list[tuple[str, str]]:
80
79
81
80
def clean_name (name : str ) -> str :
82
81
"""Clean emoji name replacing specials chars by underscore"""
83
- special_chars = "[-. ]" # square brackets are part of the regex
84
- return re .sub (special_chars , "_" , name ).lower ()
82
+ return name .replace ("-" , "_" ).replace ("." , "_" ).replace (" " , "_" ).lower ()
85
83
86
84
87
85
def cli () -> None :
@@ -101,13 +99,18 @@ def cli() -> None:
101
99
args = parser .parse_args ()
102
100
no_copy = args .no_copy
103
101
102
+ if not args .name and not args .random :
103
+ sys .exit ("Error: the 'name' argument is required" )
104
+
104
105
# Grab the lookup dictionary.
105
106
lookup = parse_emojis ()
106
107
107
108
if os .path .isfile (CUSTOM_EMOJI_PATH ):
108
109
lookup .update (parse_emojis (CUSTOM_EMOJI_PATH ))
109
110
110
111
if args .random :
112
+ import random
113
+
111
114
emoji , keywords = random .choice (list (lookup .items ()))
112
115
name = keywords [0 ]
113
116
if not no_copy :
@@ -117,9 +120,6 @@ def cli() -> None:
117
120
print (f"Copied! { emoji } { name } " if copied else f"{ emoji } { name } " )
118
121
sys .exit (0 )
119
122
120
- if not args .name :
121
- sys .exit ("Error: the 'name' argument is required" )
122
-
123
123
names = tuple (map (clean_name , args .name ))
124
124
125
125
# Marker for if the given emoji isn't found.
0 commit comments