#!/usr/bin/env ruby # encoding: utf-8 # Funkcja zamiana() odpowiada na co zamienić literę. Na początku przekazu # należy zresetować transmisję. class Texol VERSION = "0.1.1" ZNAKI_DODATKOWE = [ '-3', '-2', '-1', '0', '+1', '+2', '+3', 'd-3', 'd-2', 'd-1', 'd0', 'd+1', 'd+2', 'd+3' ] #Inicjując podajemy jak domyślnie określamy dodatkowe litery def initialize(jak="plusminus") @poprzedni = nil #Tu przechowujemy grupę do jakiej należy poprzedni znak lub nil jeśli nie było poprzedniej grupy end def start() @poprzedni = nil end #d-1 to znak -1 ale z kreską, duża litera def znak(znakutf8) g = [ 'm', 'j', 'a', 't', 'w', 'u', 'k', 'M', 'J', 'A', 'T', 'W', 'U', 'K', 's', 'n', 'z', 'e', 'c', 'i', 'h', 'S', 'N', 'Z', 'E', 'C', 'I', 'H', 'ś', 'v', 'ź', 'x', 'ń', 'ć', 'q', 'Ś', 'V', 'Ź', 'X', 'Ń', 'Ć', 'Q', 'y', 'b', 'r', 'o', 'd', 'p', 'ł', 'Y', 'B', 'R', 'O', 'D', 'P', 'Ł', 'ę', 'ó', 'f', 'l', 'ż', 'ą', 'g', 'Ę', 'Ó', 'F', 'L', 'Ż', 'Ą', 'G' ] s = ( ['t'] * 14 ) + ( ['e'] * 14 ) + ( ['x'] * 14 ) + ( ['o'] * 14 ) + ( ['l'] * 14 ) d = [ '-3', '-2', '-1', '0', '+1', '+2', '+3', 'd-3', 'd-2', 'd-1', 'd0', 'd+1', 'd+2', 'd+3', '-3', '-2', '-1', '0', '+1', '+2', '+3', 'd-3', 'd-2', 'd-1', 'd0', 'd+1', 'd+2', 'd+3', '-3', '-2', '-1', '0', '+1', '+2', '+3', 'd-3', 'd-2', 'd-1', 'd0', 'd+1', 'd+2', 'd+3', '-3', '-2', '-1', '0', '+1', '+2', '+3', 'd-3', 'd-2', 'd-1', 'd0', 'd+1', 'd+2', 'd+3', '-3', '-2', '-1', '0', '+1', '+2', '+3', 'd-3', 'd-2', 'd-1', 'd0', 'd+1', 'd+2', 'd+3' ] g.each_with_index{|z,i| if znakutf8 == z then if @poprzedni == s[i] then return d[i] else @poprzedni = s[i]; return znakutf8 end end } #inne znaki start() return znakutf8 end #zwracamy gotowy napis zamieniony już jak trzeba def napis(n) self.start() n.split(//).map{|e| self.znak(e)}.join end def tablica(n) self.start() n.split(//).map{|e| self.znak(e)} end #koniec obiektu Texol end