feature: add morse code
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import re
|
||||
|
||||
from mistletoe.span_token import SpanToken
|
||||
|
||||
|
||||
class Morse(SpanToken):
|
||||
"""
|
||||
Morse code span token ("[morse:moe]").
|
||||
Generates morse code from a text.
|
||||
"""
|
||||
@staticmethod
|
||||
def convert_to_morse_code(text):
|
||||
dit = 1
|
||||
dah = 2
|
||||
space = 3
|
||||
|
||||
morse_code = {
|
||||
"a": [dit, dah],
|
||||
"b": [dah, dit, dit, dit],
|
||||
"c": [dah, dit, dah, dit],
|
||||
"d": [dah, dit, dit],
|
||||
"e": [dit],
|
||||
"f": [dit, dit, dah, dit],
|
||||
"g": [dah, dah, dit],
|
||||
"h": [dit, dit, dit, dit],
|
||||
"i": [dit, dit],
|
||||
"j": [dit, dah, dah, dah],
|
||||
"k": [dah, dit, dah],
|
||||
"l": [dit, dah, dit, dit],
|
||||
"m": [dah, dah],
|
||||
"n": [dah, dit],
|
||||
"o": [dah, dah, dah],
|
||||
"p": [dit, dah, dah, dit],
|
||||
"q": [dah, dah, dit, dah],
|
||||
"r": [dit, dah, dit],
|
||||
"s": [dit, dit, dit],
|
||||
"t": [dah],
|
||||
"u": [dit, dit, dah],
|
||||
"v": [dit, dit, dit, dah],
|
||||
"w": [dit, dah, dah],
|
||||
"x": [dah, dit, dit, dah],
|
||||
"y": [dah, dit, dah, dah],
|
||||
"z": [dah, dah, dit, dit],
|
||||
"ä": [dit, dah, dit, dah],
|
||||
"ö": [dah, dah, dah, dit],
|
||||
"ü": [dit, dit, dah, dah],
|
||||
"ß": [dit, dit, dit, dah, dah, dit, dit],
|
||||
"0": [dah, dah, dah, dah, dah],
|
||||
"1": [dit, dah, dah, dah, dah],
|
||||
"2": [dit, dit, dah, dah, dah],
|
||||
"3": [dit, dit, dit, dah, dah],
|
||||
"4": [dit, dit, dit, dit, dah],
|
||||
"5": [dit, dit, dit, dit, dit],
|
||||
"6": [dah, dit, dit, dit, dit],
|
||||
"7": [dah, dah, dit, dit, dit],
|
||||
"8": [dah, dah, dah, dit, dit],
|
||||
"9": [dah, dah, dah, dah, dit],
|
||||
".": [dit, dah, dit, dah, dit, dah],
|
||||
",": [dah, dah, dit, dit, dah, dah],
|
||||
":": [dah, dah, dah, dit, dit, dit],
|
||||
";": [dah, dit, dah, dit, dah, dit],
|
||||
"?": [dit, dit, dah, dah, dit, dit],
|
||||
"!": [dah, dit, dah, dit, dah, dah],
|
||||
"-": [dah, dit, dit, dit, dit, dah],
|
||||
"_": [dit, dit, dah, dah, dit, dah],
|
||||
"(": [dah, dit, dah, dah, dit],
|
||||
")": [dah, dit, dah, dah, dit, dah],
|
||||
"'": [dit, dah, dah, dah, dah, dit],
|
||||
"=": [dah, dit, dit, dit, dah],
|
||||
"+": [dit, dah, dit, dah, dit],
|
||||
"/": [dah, dit, dit, dah, dit],
|
||||
"@": [dit, dah, dah, dit, dah, dit],
|
||||
"ar": [dit, dah, dit, dah, dit],
|
||||
"bk": [dah, dit, dit, dit, dah, dit, dah],
|
||||
"sk": [dit, dit, dit, dah, dit, dah],
|
||||
"correction": [dit, dit, dit, dit, dit, dit, dit, dit],
|
||||
" ": [space]
|
||||
}
|
||||
|
||||
result = []
|
||||
|
||||
for char in text:
|
||||
if char.lower() in morse_code:
|
||||
result.append(morse_code[char.lower()])
|
||||
|
||||
return result
|
||||
|
||||
parse_inner = False
|
||||
pattern = re.compile(r'"\[morse:\s*(.+)\]"')
|
||||
Reference in New Issue
Block a user