In un AppleScript, come posso chiamare / riutilizzare una subroutine da un altro AppleScript?

2

snippet 1a

on removeText(searchText, sourceText)
set prevTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to searchText
set sourceText to text items of sourceText

set text item delimiters of AppleScript to ""
set sourceText to "" & sourceText
set text item delimiters of AppleScript to prevTIDs

return sourceText
end removeText

snippet 2a

on removeText(searchText, sourceText)
set prevTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to searchText
set sourceText to text items of sourceText

set text item delimiters of AppleScript to ""
set sourceText to "" & sourceText
set text item delimiters of AppleScript to prevTIDs

return sourceText
end removeText

set theSentence to "I love Windows and I will always love Windows."
set theSentence to removeText("Windows", theSentence)

Ho trovato che questa subroutine (snippet 1a) è a portata di mano nel frammento 2a e vuole riutilizzarla chiamando il suo nome. Ho cercato su google come fare. Quindi ho salvato lo snippet 1a come /Users/henry/Library/Script\ Libraries/text.scpt e nel frammento 2a ho sostituito

snippet 1b

on removeText(searchText, sourceText)
set prevTIDs to text item delimiters of AppleScript
set text item delimiters of AppleScript to searchText
set sourceText to text items of sourceText

set text item delimiters of AppleScript to ""
set sourceText to "" & sourceText
set text item delimiters of AppleScript to prevTIDs

return sourceText
end removeText

con

snippet 3

use script "text"

e ho ottenuto snippet 2b e poi ho eseguito lo snippet 2b, ma ho ricevuto un errore che diceva «script» doesn’t understand the “removeText” message.

Riferimento: "use statement" (fai riferimento alla parte trovata cercando use script "Happy Fun Ball" in link )

Quindi sono tornato su google e ne ho trovato uno che suggeriva di salvare lo snippet 1a come "un'applicazione di script".

Riferimento 2: in fondo al link

Nell'esempio che segue, è

snippet 4

tell application "NonStayOpen"
launch
stringTest("Some example text.")
end tell

quindi ho esportato lo snippet 1a come /Users/henry/Library/Script\ Libraries/text.app e ho scritto snippet 2c

snippet 2c

tell application "text"
launch
set theSentence to "I love Windows and I will always love Windows."
set theSentence to removeText("Windows", theSentence)
end tell

Poi l'ho eseguito e ho ricevuto un errore {} doesn't match the parameters {searchText, sourceText} for removeText.

In seguito, ho provato prima ad aggiungere removeText(searchText, sourceText) a snippet 1a (ottenendo snippet 1c ) e l'ho esportato per sostituire /Users/henry/Library/Script\ Libraries/text.app , ma ho ricevuto un errore durante l'esecuzione, fallito;

in secondo luogo per sostituire removeText(searchText, sourceText) con removeText() nel snippet 1a (ottenendo snippet 1d ) ed esportarlo per sostituire /Users/henry/Library/Script\ Libraries/text.app ma ha ottenuto un errore durante l'esecuzione, non è riuscito.

In snippet 2a, come posso chiamare / riutilizzare una subroutine (snippet 1a) da un altro AppleScript o "applicazione di script" (vedi riferimento 2)?

    
posta lsfalimis 17.06.2014 - 13:48
fonte

1 risposta

2

Salva questo come text.scpt in Librerie di script cartella

on removeText(searchText, sourceText)
    set {TID, text item delimiters} to {text item delimiters, searchText}
    set sourceText to text items of sourceText
    set text item delimiters of AppleScript to ""
    set sourceText to sourceText as text
    set text item delimiters to TID
    return sourceText
end removeText

Chiamalo così in un altro script:

set theSentence to "I love Windows and I will always love Windows."
tell script "text" to set theSentence to removeText("Windows", theSentence)
    
risposta data 17.06.2014 - 15:59
fonte

Leggi altre domande sui tag