#!/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.5" ZNAKI_DODATKOWE_PLUSMINUS = [ '-3', '-2', '-1', '0', '+1', '+2', '+3', 'd-3', 'd-2', 'd-1', 'd0', 'd+1', 'd+2', 'd+3' ] #57344 to numer wolnej przestrzeni na prywatne glify dla -3 -2 -1 i dalej ... ZNAKI_DODATKOWE_UNICODE = [ '', '', '', '', '', '', '', '', '', '', '', '', '', '' ] ZNAKI_DODATKOWE_KLAWIATURA = [ '6', '5', '4', '0', '1', '2', '3', '}', ']', '9', '7', '8', '[', '{' ] #Inicjując podajemy jak domyślnie określamy dodatkowe litery def initialize(jak='unicode') @poprzedni = nil #Tu przechowujemy grupę do jakiej należy poprzedni znak lub nil jeśli nie było poprzedniej grupy @d = ZNAKI_DODATKOWE_UNICODE * 5 if jak == 'plusminus' then @d = ZNAKI_DODATKOWE_PLUSMINUS * 5 end if jak == 'klawiatura' then @d = ZNAKI_DODATKOWE_KLAWIATURA * 5 end #jeśli 'jak' jest inne to kodowanie jest domyślne 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", "t", "t", "t", "t", "t", "t", "t", "t", "t", "t", "t", "t", "t", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "e", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "o", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l", "l"] 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