Em um AppleScript, como eu chamo / reuso uma sub-rotina de outro AppleScript?

1

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)

Eu encontrei esta sub-rotina (trecho 1a) é útil no snippet 2a e quero reutilizá-lo chamando seu nome. Eu pesquisei como fazer. Então salvei o snippet 1a como /Users/henry/Library/Script\ Libraries/text.scpt e no snippet 2a substituí

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

com

snippet 3

use script "text"

e recebi snippet 2b e, em seguida, executei o snippet 2b, mas recebi um erro dizendo «script» doesn’t understand the “removeText” message.

Referência: "use statement" (consulte a parte encontrada pesquisando use script "Happy Fun Ball" em link )

Então eu voltei para o Google e encontrei um sugerindo que eu deveria salvar o snippet 1a como "um aplicativo de script".

Referência 2: na parte inferior do link

Nesse exemplo, é

snippet 4

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

, então eu exportei o snippet 1a como /Users/henry/Library/Script\ Libraries/text.app e escrevi o 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

Então eu corri e recebi um erro {} doesn't match the parameters {searchText, sourceText} for removeText.

Depois, tentei em primeiro lugar acrescentar removeText(searchText, sourceText) ao snippet 1a (obtendo snippet 1c ) e exportá-lo para substituir /Users/henry/Library/Script\ Libraries/text.app , mas recebi um erro ao executar, falhou;

em segundo lugar, para substituir removeText(searchText, sourceText) por removeText() no snippet 1a (obtendo snippet 1d ) e exportado para substituir /Users/henry/Library/Script\ Libraries/text.app , mas ocorreu um erro ao executar, falhou.

No trecho 2a, como eu chamo / reuso uma sub-rotina (trecho 1a) de outro AppleScript ou "aplicativo de script" (consulte a Referência 2)?

    
por lsfalimis 17.06.2014 / 14:13

1 resposta

0

Isso é o que eu uso em muitos AppleScripts:

set iTunesFunctions to load script "Users:jim:Library:iTunes:Scripts:iTunes Functions.scpt" as alias
CaseCorrection() of iTunesFunctions

Se você salvou o arquivo que contém o snippet1a em "MyFunctions.scpt", seu código ficaria assim:

set MyFunctions to load script "MyFunctions.scpt" as alias
snippet1a(searchText, sourceText) of MyFunctions
    
por 18.06.2014 / 01:26