Advertisement
imring

Morse

Jan 5th, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.40 KB | None | 0 0
  1. function morza(rus, chars)
  2.   local tab
  3.   if rus then
  4.     tab = {
  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.       ['..--'] = 'ю',
  36.       ['.-.-'] = 'я'
  37.     }
  38.   else
  39.     tab = {
  40.       ['.-'] = 'a',
  41.       ['-...'] = 'b',
  42.       ['.--'] = 'w',
  43.       ['--.'] = 'g',
  44.       ['-..'] = 'd',
  45.       ['.'] = 'e',
  46.       ['...-'] = 'v',
  47.       ['--..'] = 'z',
  48.       ['..'] = 'i',
  49.       ['.---'] = 'j',
  50.       ['-.-'] = 'k',
  51.       ['.-..'] = 'l',
  52.       ['--'] = 'm',
  53.       ['-.'] = 'n',
  54.       ['---'] = 'o',
  55.       ['.--.'] = 'p',
  56.       ['.-.'] = 'r',
  57.       ['...'] = 's',
  58.       ['-'] = 't',
  59.       ['..-'] = 'u',
  60.       ['..-.'] = 'f',
  61.       ['....'] = 'h',
  62.       ['-.-.'] = 'c',
  63.       ['---.'] = 'ö',
  64.       ['----'] = 'ch',
  65.       ['--.-'] = 'q',
  66.       ['--.--'] = 'ñ',
  67.       ['-.--'] = 'y',
  68.       ['-..-'] = 'x',
  69.       ['..-..'] = 'é',
  70.       ['..--'] = 'ü',
  71.       ['.-.-'] = 'ä'
  72.     }
  73.   end
  74.   tab['.----'] = '1'
  75.   tab['..---'] = '2'
  76.   tab['...--'] = '3'
  77.   tab['....-'] = '4'
  78.   tab['.....'] = '5'
  79.   tab['-....'] = '6'
  80.   tab['--...'] = '7'
  81.   tab['---..'] = '8'
  82.   tab['----.'] = '9'
  83.   tab['-----'] = '0'
  84.   tab['......'] = '.'
  85.   tab['.-.-.-'] = ','
  86.   tab['...---'] = ':'
  87.   tab['-.-.-.'] = ';'
  88.   tab['-.--.-'] = '()'
  89.   tab['.----.'] = '\''
  90.   tab['.-..-.'] = '"'
  91.   tab['-....-'] = '−'
  92.   tab['-..-.'] = '/'
  93.   tab['..--..'] = '?'
  94.   tab['--..--'] = '!'
  95.   tab['.--.-.'] = '@'
  96.   return tab[chars] or ''
  97. end
  98.  
  99. if not _ARGS then return '!!morse [rus/eng]; [morse code]' end
  100.  
  101. local b, c = string.match(AnsiToUtf8(_ARGS), '(.-); (.*)')
  102. if not b then return 'Error' end
  103.  
  104. local n = ''
  105. for w in string.gmatch(c, '%S+%s?%s?') do
  106.   local w, d = string.gsub(w, '%s', '')
  107.   n = n .. morza(b == 'rus', w)
  108.   if d == 2 then n = n .. ' ' end
  109. end
  110.  
  111. return n
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement