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.
 
 
 
 
 

80 lines
1.5 KiB

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;