Dobry den, z casu na cas sa mi podari toto: pisem text, kde vyuzivam ako anglicku, tak slovensku klavesnicu. Sem tam ich ale zabudnem prepnut a potom po chvili pisania pozriem na obrazovku a vidim napriklad:
syst0m uzavret7ch mno69n
To, co by sa mi velmi zislo, by bola funkcia, ktora by mi umoznovala toto: Oznacim si takyto spotvoreny text, kliknem (napriklad) Alt-S a tym sa mi v texte nahradi 0 za é, 7 za ý, 6 za ž a 9 za í. Vie niekto poradit, ako by som toto mohol v Automatori urobit? Alebo v niecom inom. Idealne by bolo, keby tato funkcia fungovala vo vsetkych aplikaciach, kde clovek pise texty – Pages, Mail, Latexian, atd.
No musel by si také nahradzovanie naprogramovať (alebo niekto iný). V Automatore vytvoríš nový Service, hore nastavíš ako vstup „text“ in „any application“ a „Output replaces selected text“.
Teraz už iba použiješ akciu Run Shell Script v Utilities sekcii) a spustíš hotový program, ktorý také nahradenie vykoná.
Edit: Ak si večer spomeniem, môžem ti taký program napísať ja v Objective-C.
iMartin: Dakujem, ale urcite sa tym nezatazuj, pokusim sa potrapit s tym. Je teda Objective-C nevyhnutny? Neda sa to riesit postupnostou prikazov typu replace “8” by “á”?
Tiez som prave pozeral na prikazy sed-u … Tak to skusim v Automatore.
Toto bude sk[3obn8 veta, na jej k=opii to otestujem.
Toto bude sk[šobná veta, na jej k=opii to otestujem.
Aha, vidim ze tam treba este nejake specialitky doplnit, ale to uz bude hracka. Srdecne dakujem.
edit: Trochu som sa potrapil s pismenom ň, kym som zistil, ze riesenim je sed s!\\\\!ň!g
Predsa len este jeden problem. Service na prevod en->sk sa mi podarilo urobit a funguje. Urobil som to pomocou prikazu
sed -e ‘s!1!+!g’ -e s!2!ľ!g -e s!3!š!g …. atd
Ked som ale chcel urobit aj opacny prevod, teda Service sk->en, tak prikaz
sed -e s!+!1!g -e s!ľ!2!g -e s!š!3!g …. atd
uz nefunguje. Lepsie povedane, ak na retazec 123 aplikujem service en->sk, tak dostanem +ľš, co je v poriadku. Ak na TOTO aplikujem sk->en, dostanem naspat 123, co je tiez v poriadku. Ale ak NAPISEM napriklad v maili +ľš a pouzijem sk->en, tak dostanem 1ľš. Skoda, bolo by fajn mat prevod obomi smermi. Chybu ale Automator nehlasi. Ako keby pismeno s diakritikou, ktore napisem do aplikacie nebolo to iste pismeno s diakritikou, ktore je v shell skripte.
Stale na to nemozem prist, ale mozno sa tu najde clovek, ktory hlbsie vidi do kodovania diakritiky v OS X. Mam nejasne tusenie, ze najprv by bolo treba vo workflow-e oznaceny retazec prekodovat do niecoho comu uz potom sed spravne rozumie, teda nieco ako prikaz
iconv -f CP1250 -t UTF-8
ale ani po mnohych pokusoch s tymto prikazom mi prevod (napriklad) ž na 6 nejde.
edit: Hotovo, iconv -f UTF-8 -t UTF-8-MAC je spravne riesenie.
+ mysis brat ako special character, tusiz musis pre doslovny znak + pouzit escape character:
\+
Teda spatna lomka. Tyka sa to aj inych special chars v regexoch ako . (1 luboolny znak), * (lubovolny pocet lub. znakov), / (lomka), $ (koniec riadka), | (or), ^ (zaciatok riadka), () (zatvorky, ulozenie do premennej), [] (sustava znakov, v zapise [^0-9] predstavuje znak ^ NOT operator, tudiz akykolvek znak okrem cisiel).