Una delle prime operazioni necessarie iniziando a programmare è la lettura di file di testo.
Vediamo ora come fare con AppleScript. Leggere un file tramite il sottosistema Unix Il modo più semplice di leggere un file di testo è senz’altro quello di farlo leggere a Unix:
on readFile( unixPath )
return (do shell script "cat '" & unixPath & "'")
end
Chiaramente non è la più elegante delle strade, ma è comunque da tenere in considerazione.
Altri modi, nativi AppleScript, sono i seguenti. Lettura di un file di testo con AppleScript La strada principale passa per "open for access":
on readFile( unixPath )
set foo to (open for access (POSIX file unixPath ))
set txt to (read foo for (get eof foo))
close access foo
return txt
end readFile
"open for access" vuole un oggetto file del Finder, che otteniamo tramite l'espressione "POSIX file unixPath".
Questa sintassi funziona perfettamente... ma legge i file di testo nell'encoding "Mac OS Roman", mentre spesso questi testi sono in UTF-8 o UTF-16.
Leggere un file di testo UTF-16:
on readFile( unixPath )
set foo to (open for access (POSIX file unixPath ))
set txt to (read foo for (get eof foo) as Unicode text)
close access foo
return txt
end readFile
Leggere un file di testo UTF-8:
on readFile( unixPath )
set foo to (open for access (POSIX file unixPath ))
set txt to (read foo for (get eof foo) as «class utf8»)
close access foo
return txt
end readFile
Tutte le righe di un file di testo Una delle cose più semplici:
set listVariable to every paragraph of textVariable
Chiaramente la variabile listVariable non è agganciata al testo, dopo averla manipolata potremo comunque facilmente ricreare il testo unito:
set textVariable to (listVariable) as text
Cerca e Sostituisci AppleScript non implemente le regular expressions (a meno di aggiungere moduli di linguaggio), ma c’è un modo semplice per effettuare la ricerca e sostituzione di testo statico in una stringa:
display dialog( my searchAndReplace("Ciao mamma", "ma", "no") )
on searchAndReplace( txt, srch, rpl )
set oldtid to AppleScript's text item delimiters
set AppleScript's text item delimiters to {srch}
set temp to every text item of txt
set AppleScript's text item delimiters to {rpl}
set temp to (temp as string)
set AppleScript's text item delimiters to oldtid
return temp
end searchAndReplace
Sembra complicato, in realtà è velocissimo ed estremamente pratico. To be continued... ...
|