Newsgroup: it.comp.macintosh
Titolo: [AS] Rimpiazzo di sigle

Ciao a tutti
Ho un consistente numero di file di testo che contengono liriche di
brani musicali con incluse le sigle degli accordi. Volevo sostituire
solamente tutte le sigle degli accordi rimpiazzandole con altre di una
tonalita' sotto. Con la mia scarsissima conoscenza di Apple script ho
provato a fare un droplet di questo genere:
on open fileList
        tell application "Tex-Edit Plus"
                launch
                repeat with oneFile in fileList
                        open oneFile
                        replace window 1 from "Do" to "Sib"
                        replace window 1 from "Reb" to "Si"
                        replace window 1 from "Re" to "Do"
                        replace window 1 from "Mib" to "Reb"
                        replace window 1 from "Mi" to "Re"
                        replace window 1 from "Fa" to "Mib"
                        replace window 1 from "Solb" to "Mi"
                        replace window 1 from "Sol" to "Fa"
                        replace window 1 from "Lab" to "Solb"
                        replace window 1 from "La" to "Sol"
                        replace window 1 from "Sib" to "Lab"
                        replace window 1 from "Si" to "La"
                        close window 1 saving yes
                end repeat
        end tell
end open
fila tutto liscio a parte la sostituzione dell'accordo "Do" to "Sib",
infatti il "Do" viene prima sostituito con il "Sib" pero' poi viene di
nuovo sostituito con il "Lab". Sto impazzendo cercando di capirne il
perche', qualche idea/spunto?
TYA (System 7.6.1)

 perche', qualche idea/spunto?
Controlla se per caso i "reb" diventano "la":
sia "sib" che "si" vengono rimpiazzati dopo aver rimpiazzato.
-- 
Per contattarmi:
http://formmailto.com/saltydog

 sia "sib" che "si" vengono rimpiazzati dopo aver rimpiazzato
quindi non si puo' risolvere?
grazie

mauri...@SPAMMINTOSHadriacom.it (Maurizio Tecli) wrote in message news:<1fretrq.nqmbr4k4cohwN%mauri...@SPAMMINTOSHadriacom.it>...

Beh, il perché potrebbe essere "perché glielo dici tu": lui prima
sostiuisce i "Do" con i "Sib", ma poi si ritrova il comando in cui
deve sostituire i "Sib" con i "Lab". Una soluzione poco elegante
potrebbe essere quella di fare un doppio passaggio per evitare
ambiguità; mi spiego meglio:
-prima passata:          replace window 1 from "Do" to "A"
                         replace window 1 from "Reb" to "B"
                         replace window 1 from "Re" to "C"
                         replace window 1 from "Mib" to "D"
                         replace window 1 from "Mi" to "E"
                         replace window 1 from "Fa" to "F"
                         replace window 1 from "Solb" to "G"
                         replace window 1 from "Sol" to "H"
                         replace window 1 from "Lab" to "I"
                         replace window 1 from "La" to "J"
                         replace window 1 from "Sib" to "K"
                         replace window 1 from "Si" to "L"
-seconda passata:        replace window 1 from "A" to "Sib"
                         replace window 1 from "B" to "Si"
                         replace window 1 from "C" to "Do"
                         replace window 1 from "D" to "Reb"
                         replace window 1 from "E" to "Re"
                         replace window 1 from "F" to "Mib"
                         replace window 1 from "G" to "Mi"
                         replace window 1 from "H" to "Fa"
                         replace window 1 from "I" to "Solb"
                         replace window 1 from "J" to "Sol"
                         replace window 1 from "K" to "Lab"
                         replace window 1 from "L" to "La"
Ho usato A, B, C, ... ma potresti usare qualsiasi cosa, come "tizio",
"caio", "sempronio", ... purchè alla fine il doppio passaggio coincida
con il passaggio originale:
Do->Sib = Do->Tizio + Tizio->Sib
In questo modo eviti che un elemento sostituito in una delle prime
righe venga ri-sostituito per il comando di una riga successiva
(perché "tizio" non c'è nel file originale ma compare solo dopo la
prima passata).
Un metodo più elegante potrebbe essere quello di trovare una sequenza
che evita richiami ricorsivi, ma mi sa che essendo un giro chiuso non
è possibile, e a quest'ora non ho voglia di pensare ad altre soluzioni
:)
ciao ciao

 matching". Meglio che niente. :)
ho la 2.1 e ci sono queste opzioni, ma che significa "whole words
matching"?
ciao e grazie

 Do->Sib = Do->Tizio + Tizio->Sib
good solution!, mi resta di trovare il modo (ahi ahi non conosco molto
la sintassi) di eseguire i due passaggi all'interno dello stesso script
grazie infinite, ciao :-)

 puoi fare la ricerca di " Si " e sostituire con " La ", etc.
ho risolto, funziona tutto bene grazie ai vostri suggerimenti
di nuovo grazie e bacioni :-)