(*
LineNumbers 0.9
Numeroi käyttäjän osoittaman tekstitiedoston kappaleet juoksevalla numeroinnilla.
Aja skripti joko skriptieditoristasi tai kaksoisosoittamalla, jos olet tallentanut sen ohjelmaksi.
Alkuperäiseen tekstitiedostoon ei tehdä muutoksia.
Rivinumeroitu tulostiedosto tallennetaan Työpöydälle.
Vaatimukset: AppleScript ladattuna käynnistyksessä, Standard additions.
Testattu AppleScript 1.3.4:llä ja toimii hitaasti.
Jos alkuperäisessä tiedostossa on yli 32 kt dataa, numerointi saattaa keskeytyä.
2001 Tuomas Rosberg <vanhentunut>
Lähdekoodi on ilmaista ja tarkoitettu yleiseen käyttöön (public domain).
Sitä lainattessa kirjoittajan nimi on mainittava.
Koodilla ei ole mitään takuuta, ja sen sisältävää ohjelmaa käyttävät
toimivat omalla vastuullaan.
*)
property fileSpec : "" -- Tulostiedoston polku.
tell application "Finder"
set fileSpec to (startup disk as string) & "Desktop Folder:aFile.txt"
try
alias fileSpec -- Onko tulostiedosto ennestään olemassa?
on error
-- Tulostiedostoa ei ole olemassa, joten sellainen luodaan, sisällöksi tyhjää.
open for access file fileSpec with write permission
close access file fileSpec
end try
end tell
choose file of type "TEXT" with prompt "Valitse tekstitiedosto."
set originalFile to result
if originalFile is not "" then
-- Tulostiedoston tyhjennys:
open for access file fileSpec with write permission
set theFile to result
write "" starting at 1 to theFile
close access file fileSpec
--
open for access originalFile
set originalText to result -- Avoin tiedosto.
set counter to 0
-- Numerointi rivi kerrallaan:
repeat
try
set aParagraph to read originalText until return
if (count of aParagraph) is 1 then -- Kappale sisältää yksinäisen rivinvaihdon, ei numeroida sitä.
else -- Kappale sisältää tekstiäkin.
set counter to counter + 1
set lineNum to counter as string
-- Muotoillaan rivin numerointia:
if (count of lineNum) < 2 then
set lineNum to "0" & lineNum
end if
set aParagraph to lineNum & space & aParagraph
my writeFile(aParagraph) -- Kirjoitetaan rivi tulostiedostoon.
end if
on error -- Tultiin tiedoston loppuun tai joku potkaisi tuolin alta.
exit repeat
end try
end repeat
--
close access originalFile -- Muistetaan sulkea avoimet tiedostot.
tell application "Finder"
set fileName to name of originalFile & ".txt"
set name of file fileSpec to fileName
open file fileName
end tell
end if
-- Tulostiedoston avaus, kirjoitus sen loppuun ja sulku:
on writeFile(aContent)
open for access file fileSpec with write permission
set theFile to result
set theEnd to (get eof theFile) + 1
write aContent starting at theEnd to theFile
close access file fileSpec
end writeFile