morse.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. var upperCase = require('./upperCase');
  2. var invert = require('./invert');
  3. exports = {
  4. encode: function(txt) {
  5. var len = txt.length;
  6. var ret = Array(len);
  7. for (var i = 0; i < len; i++) {
  8. var c = upperCase(txt[i]);
  9. ret[i] = map[c] || '?';
  10. }
  11. return ret.join(' ');
  12. },
  13. decode: function(morse) {
  14. var ret = morse.split(' ');
  15. for (var i = 0, len = ret.length; i < len; i++) {
  16. ret[i] = decodeMap[ret[i]] || ' ';
  17. }
  18. return ret.join('');
  19. }
  20. };
  21. var map = {
  22. A: '.-',
  23. B: '-...',
  24. C: '-.-.',
  25. D: '-..',
  26. E: '.',
  27. F: '..-.',
  28. G: '--.',
  29. H: '....',
  30. I: '..',
  31. J: '.---',
  32. K: '-.-',
  33. L: '.-..',
  34. M: '--',
  35. N: '-.',
  36. O: '---',
  37. P: '.--.',
  38. Q: '--.-',
  39. R: '.-.',
  40. S: '...',
  41. T: '-',
  42. U: '..-',
  43. V: '...-',
  44. W: '.--',
  45. X: '-..-',
  46. Y: '-.--',
  47. Z: '--..',
  48. Á: '.--.-',
  49. Ä: '.-.-',
  50. É: '..-..',
  51. Ñ: '--.--',
  52. Ö: '---.',
  53. Ü: '..--',
  54. '1': '.----',
  55. '2': '..---',
  56. '3': '...--',
  57. '4': '....-',
  58. '5': '.....',
  59. '6': '-....',
  60. '7': '--...',
  61. '8': '---..',
  62. '9': '----.',
  63. '0': '-----',
  64. ',': '--..--',
  65. '.': '.-.-.-',
  66. '?': '..--..',
  67. ';': '-.-.-',
  68. ':': '---...',
  69. '/': '-..-.',
  70. '-': '-....-',
  71. "'": '.----.',
  72. '()': '-.--.-',
  73. _: '..--.-',
  74. '@': '.--.-.',
  75. ' ': '.......'
  76. };
  77. var decodeMap = invert(map);
  78. module.exports = exports;