-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmorse_encoder.py
35 lines (31 loc) · 1.67 KB
/
morse_encoder.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
__encoder = {'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':'--..', '1':'.----', '2':'..---', '3':'...--', '4':'....-',
'5':'.....', '6':'-....', '7':'--...', '8':'---..', '9':'----.',
'0':'-----', ' ':'/', '\n':'//', '.':'.-.-.-', ',':'--..--',
'?':'..--..', '\'':'.----.', '!':'-.-.--', '/':'-..-.', '(':'-.--.',
')':'-.--.-', '&':'.-...', ':':'---...', ';':'-.-.-.', '=':'-...-',
'+':'.-.-.', '-':'-....-', '_':'..--.-', '\"':'.-..-.', '$':'...-..-',
'@':'.--.-.'}
__pre_wrapper = 'int pin = 13;\n\nvoid setup() {\n\tpinMode(pin, OUTPUT);\n}\n\nvoid loop() {\n'
__post_wrapper = '\n}\n\nvoid dot() { digitalWrite(pin, HIGH); delay(250); digitalWrite(pin, LOW); delay(250); }\n\nvoid dash() { digitalWrite(pin, HIGH); delay(1000); digitalWrite(pin, LOW); delay(250); }\nvoid gap() { digitalWrite(pin, LOW);delay(1000);}\n'
def encode(text):
"""Encodes a single line of text into the Morse alphabet."""
output = ''
for character in text.lower():
output += __encoder.get(character, '')
return output
def emit(encoded_text):
output = __pre_wrapper
for char in encoded_text:
if char == '.':
output += '\tdot();\n'
elif char == '-':
output += '\tdash();\n'
elif char == '/':
output += '\tgap();\n'
output += __post_wrapper
return output