You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.5 KiB
81 lines
1.5 KiB
2 years ago
|
var upperCase = require('./upperCase');
|
||
|
var invert = require('./invert');
|
||
|
exports = {
|
||
|
encode: function(txt) {
|
||
|
var len = txt.length;
|
||
|
var ret = Array(len);
|
||
|
for (var i = 0; i < len; i++) {
|
||
|
var c = upperCase(txt[i]);
|
||
|
ret[i] = map[c] || '?';
|
||
|
}
|
||
|
return ret.join(' ');
|
||
|
},
|
||
|
decode: function(morse) {
|
||
|
var ret = morse.split(' ');
|
||
|
for (var i = 0, len = ret.length; i < len; i++) {
|
||
|
ret[i] = decodeMap[ret[i]] || ' ';
|
||
|
}
|
||
|
return ret.join('');
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var map = {
|
||
|
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': '-----',
|
||
|
',': '--..--',
|
||
|
'.': '.-.-.-',
|
||
|
'?': '..--..',
|
||
|
';': '-.-.-',
|
||
|
':': '---...',
|
||
|
'/': '-..-.',
|
||
|
'-': '-....-',
|
||
|
"'": '.----.',
|
||
|
'()': '-.--.-',
|
||
|
_: '..--.-',
|
||
|
'@': '.--.-.',
|
||
|
' ': '.......'
|
||
|
};
|
||
|
var decodeMap = invert(map);
|
||
|
|
||
|
module.exports = exports;
|